カテゴリー
電子技術

74HC125N

QuadrupleBus BufferGatesWith 3-StateOutputs

74HC125N
74HC125N

http://www.ti.com/lit/ds/scls104e/scls104e.pdf?ts=1591310379048

ChatGPTに聞いてみた。

User
SN74HC125Nは何ですか。

ChatGPT
SN74HC125Nは、バッファ/ラインドライバ(Buffer/Line Driver)IC(集積回路)の1つです。このICは、4つのバッファを持っており、入力信号を増幅し、出力信号を駆動することができます。また、このICは、高速で動作し、消費電力が少ないため、多くのデジタルシステムに適しています。

SN74HC125Nは、デュアルインラインパッケージ(DIP)で提供され、14ピンのパッケージングを採用しています。このICには、4つのバッファがあり、それぞれのバッファには、入力ピンと出力ピンがあります。また、バッファは、3つのステートメントコントロール入力(G、OE、nOE)を持っています。Gは、全体のICを有効化または無効化するために使用されます。OEは、すべてのバッファの出力を有効化または無効化するために使用されます。nOEは、単一のバッファの出力を有効化または無効化するために使用されます。

SN74HC125Nは、高速な信号増幅や駆動、多くのデジタルシステムでの信号調整などのアプリケーションに適しています。また、このICは、信号増幅、バッファリング、レベル変換などのために、広く使用されています。

カテゴリー
電子技術

74LS245N

Octal Bus TransceiversWith 3-StateOutputs

74LS245N
74LS245N

http://www.ti.com/lit/ds/symlink/sn54ls245-sp.pdf?ts=1591310459915

ChatGPTに聞いてみた。

User
SN74LS245Nは何ですか。

ChatGPT
SN74LS245Nは、バストランシーバ(Bus Transceiver)IC(集積回路)の1つです。このICは、2つのバス間で双方向通信を実現するために使用されます。バスは、データ、アドレス、および制御信号などの複数の信号線のグループです。

SN74LS245Nは、デュアルインラインパッケージ(DIP)で提供され、20ピンのパッケージングを採用しています。このICには、8つの入力/出力(I/O)ピンがあります。それぞれのピンは、片方向の入力または出力として機能することができます。また、このICは、入力と出力を切り替えるために、DIR(方向)ピンを持っています。DIRピンがHIGHの場合、ICは1つのバスからもう一方のバスにデータを送信します。DIRピンがLOWの場合、ICは逆方向に動作します。

SN74LS245Nは、高速で信頼性の高いバス通信を実現するために設計されています。また、このICは、複数のデバイス間で信号を送受信するために広く使用されています。

カテゴリー
電子技術

74LS153N

74LS153N
74LS153N

ChatGPTに聞いてみた。

User
SN74LS153Nは何ですか。

ChatGPT
SN74LS153Nは、デジタル回路に使用される4入力マルチプレクサ(Multiplexer)IC(集積回路)の1つです。このICは、2つの2入力マルチプレクサが統合されており、入力信号の1つを選択し、1つの出力に送信することができます。また、このICは、高速で動作し、低消費電力で動作するため、多くのデジタルシステムに適しています。

SN74LS153Nは、デュアルインラインパッケージ(DIP)で提供され、16ピンのパッケージングを採用しています。このICには、4つのデータ入力、2つの選択入力、1つの出力があります。選択入力は、2つのビットで指定され、4つのデータ入力のうち1つを選択し、選択された入力信号を出力に送信します。SN74LS153Nは、高速なデータスイッチングや遅延の少ない信号伝送などのアプリケーションに適しています。

カテゴリー
電子技術

74HC175AP

74HC175AP
74HC175AP

ChatGPTに聞いてみた。

User
74HC175APは何ですか。

ChatGPT
74HC175APは、デジタル回路に使用される、クアッドDフリップフロップ(Quad D Flip-Flop)IC(集積回路)の1つです。このICは、高速な動作、低消費電力、静的消費電力の低減、入力と出力の保護などの特徴を持っています。また、74HC175APは、単一の電源電圧で動作し、広い動作電圧範囲を持っています。ICのパッケージングには、16ピンのデュアルインラインパッケージ(DIP)が使用されています。

74HC175APは、4つの独立したDフリップフロップを持っており、各フリップフロップには、D入力、クロック入力、セット入力、リセット入力、Q出力、およびQバー出力があります。このICは、高速で信頼性の高いデータ保持や信号同期などの様々なアプリケーションに適しています。

カテゴリー
電子技術

LM386N-3

LM386N-3
LM386N-3

ChatGPTに聞いてみた。

User
LM386N-3は何ですか。

ChatGPT
LM386N-3は、小型の低電力オーディオアンプリファイア(Audio Amplifier)ICです。このICは、スピーカーやイヤホンなどの低インピーダンス負荷を駆動するために設計されています。 LM386N-3は、3ピンのパッケージングを採用しており、最大3Wの出力を提供できます。また、単一の電源電圧で動作し、外部部品を最小限に抑えることができます。これらの特性から、LM386N-3は、携帯電話や携帯オーディオプレーヤーなどの携帯型電子機器でよく使用されます。

カテゴリー
電子技術

ジェネレーター4

 PCのラインからサウンドを出力しその信号をそのままデジタル回路で使用することができるか実験してみました。

その1 矩形波のまま使用
 信号のレベルが少し低いのでHighが5V程度になるまでトランジスタやオペアンプで増幅してみましたが次の問題が発生しました。

問題1 一波長でON・OFFの繰り返しを継続して出力する時は波形が乱れない。一波長でOFFのみが間にあると前後の波形が大きく乱れる。

問題2 一定時間だけONの信号が出せない。常に正負交互の交流信号を出力しないと信号が出てこないか前後の波形が乱れる。

問題3 出力の終わりに意図しない波形が出力されデジタル素子が誤動作をしてしまう。


 

その2 矩形波を止めて正弦波にする
 矩形波は多くの高調波を含んでいるので正弦波のみであれば状況が改善すると思い実験してみましたが問題を全て解決できませんでした。

問題1 解決できた。

問題2 波長を低くすればある程度の期間ONにできる。矩形波でも同様。

問題3 改善されない。


 

その3 常に信号を出している状態にする
 AMラジオの様に常に搬送波を出力しそれにデータである信号を乗せてみました。

問題1 再燃した。

問題2 その2と同じ解決できる。

問題3 若干改善した。


 

結論

 PCのサウンド出力はアプリから要求された信号を忠実に送出するのではなく独自の制御を行っているため振幅に意味を持たせる方法ではデジタルデータとしてそのまま使用できないことが解りました。


 

AM変調
AM変調
AM変調(拡大)
AM変調(拡大)
#include <iostream>
#include <string>
#include <windows.h>
#include <math.h>
#include <MMSystem.h>

#pragma comment (lib, "winmm.lib")

int main() {

    WAVEFORMATEX wfe1;
    static HWAVEOUT hWaveOut1;
    static WAVEHDR whdr1;
    static LPBYTE lpWave1;
    static LPBYTE lpDataA;
    static LPBYTE lpDataB;

    int i, j, len1, start, end;
    int f1;
    size_t terms = 300;
    int sampling = 192000;
    size_t size;
    double pi = 3.14159265359;

    f1 = 15000;
    len1 = sampling / f1;
    wfe1.wFormatTag = WAVE_FORMAT_PCM;
    wfe1.nChannels = 2;
    wfe1.wBitsPerSample = 8;
    wfe1.nBlockAlign = wfe1.nChannels * wfe1.wBitsPerSample / 8;
    wfe1.nSamplesPerSec = sampling;
    wfe1.nAvgBytesPerSec = wfe1.nSamplesPerSec * wfe1.nBlockAlign;
    waveOutOpen(&hWaveOut1, 0, &wfe1, 0, 0, CALLBACK_NULL);
    size = terms * wfe1.nChannels;
    lpWave1 = (LPBYTE)calloc(wfe1.nAvgBytesPerSec, size);

    for (i = 0; i < sampling * terms * wfe1.nChannels; i++) {
        lpWave1[i] = 128;
    }

    start = sampling * wfe1.nChannels * 1;
    end = start + len1 * wfe1.nChannels * f1 * terms;

    double d = 360.0 / len1;
    lpDataA = (LPBYTE)calloc(wfe1.nAvgBytesPerSec, len1);
    for (i = 0; i < len1; i++) {
        lpDataA[i] = (BYTE)(70.0 * sin(d * (i % len1) / 180.0 * pi) + 127.5);
    }

    for (i = start, j = 0; i < end; i++) {
        if ((i % 2) == 0) {
            lpWave1[i] = lpDataA[j];
            ++j;
            if (j >= len1) { j = 0; }
        }
    }

    int a = 300;
    lpDataB = (LPBYTE)calloc(wfe1.nAvgBytesPerSec, len1*a);
    for (i = 0; i < len1*a; i++) {
        lpDataB[i] = (BYTE)(50.0 * sin(d * i / 180.0 * pi / a) + 127.5);
    }

    for (i = start, j = 0; i < end; i++) {
        if ((i % 2) == 1) {
            if (((i / 2 / len1)+0) % 8 < 8 ) {
                lpWave1[i] = lpWave1[i-1] + lpDataB[j] - 128;
                ++j;
                if (j >= len1*a) { j = 0; }
            }
            else { lpWave1[i] = 128; }
        }
    }

    whdr1.lpData = (LPSTR)lpWave1;
    whdr1.dwBufferLength = wfe1.nAvgBytesPerSec * terms;
    whdr1.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
    whdr1.dwLoops = 1;
    waveOutPrepareHeader(hWaveOut1, &whdr1, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut1, &whdr1, sizeof(WAVEHDR));
    
    char str[128];
    std::cout << "hello, world\n";
    std::cin >> str;

}

 

カテゴリー
電子技術

ジェネレーター3

矩形波をパソコンのラインから出力

 パソコンから20Hzの矩形波をライン出力してみました。LEDが8個並んでいるのはいずれシリアルパラレル変換するためです。今回は並列に接続しているので同じように動作します。下記のコードは4CH出力していますが、動画のLEDのボードに接続しているのはデバイス0のLeftです。

#include <iostream>
#include <string>
#include <windows.h>
#include <MMSystem.h>

#pragma comment (lib, "winmm.lib")

int main() {

    WAVEFORMATEX wfe;
    static HWAVEOUT hWaveOut;
    static WAVEHDR whdr;
    static LPBYTE lpWave;
    WAVEFORMATEX wfe2;
    static HWAVEOUT hWaveOut2;
    static WAVEHDR whdr2;
    static LPBYTE lpWave2;
    int i, len, start, end;
    int frequency = 20;
    int terms = 10;
    int sampling = 192000;

    wfe.wFormatTag = WAVE_FORMAT_PCM;
    wfe.nChannels = 2;
    wfe.wBitsPerSample = 8;
    wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8;
    wfe.nSamplesPerSec = sampling;
    wfe.nAvgBytesPerSec = wfe.nSamplesPerSec * wfe.nBlockAlign;
    waveOutOpen(&hWaveOut, 0, &wfe, 0, 0, CALLBACK_NULL);
    lpWave = (LPBYTE)calloc(wfe.nAvgBytesPerSec, terms * wfe.nChannels);

    wfe2.wFormatTag = WAVE_FORMAT_PCM;
    wfe2.nChannels = 2;
    wfe2.wBitsPerSample = 8;
    wfe2.nBlockAlign = wfe2.nChannels * wfe2.wBitsPerSample / 8;
    wfe2.nSamplesPerSec = sampling;
    wfe2.nAvgBytesPerSec = wfe2.nSamplesPerSec * wfe2.nBlockAlign;
    waveOutOpen(&hWaveOut2, 2, &wfe2, 0, 0, CALLBACK_NULL);
    lpWave2 = (LPBYTE)calloc(wfe2.nAvgBytesPerSec, terms * wfe2.nChannels);

    // 立ち上がりは出力を0にする
    for (i = 0; i < sampling * terms * wfe.nChannels; i++) {
        lpWave[i] = 128;
        lpWave2[i] = 128;
    }

    len = sampling / frequency; 

    // 最初の8サイクルは出力しない
    start = len * 8 * wfe.nChannels;
    start = 0;
    // 8サイクル波形を出力する
    end = start + len * 32 * wfe.nChannels;
    printf("start=%d, end=%d\n", start, end);

    for (i = start; i < end; i++) {
        if ((i % 2) == 0) {
            if ((i/2) % len < len / 2) { lpWave[i] = 228; }
            else { lpWave[i] = 28; }}}

    len /= 2;
    for (i = start; i < end; i++) {
        if ((i % 2) == 1) {
            if ((i / 2) % len < len / 2) { lpWave[i] = 228; }
            else { lpWave[i] = 28; }}}

    len *= 2;
    for (i = start; i < end; i++) {
        if ((i % 2) == 1) {
            if ((i / 2) % len < len / 2) { lpWave2[i] = 228; }
            else { lpWave2[i] = 28; }
        }
    }

    len /= 2;
    for (i = start; i < end; i++) {
        if ((i % 2) == 0) {
            if ((i / 2) % len < len / 2) { lpWave2[i] = 228; }
            else { lpWave2[i] = 28; }
        }
    }

    whdr.lpData = (LPSTR)lpWave;
    whdr.dwBufferLength = wfe.nAvgBytesPerSec * terms;
    whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
    whdr.dwLoops = 1;
    waveOutPrepareHeader(hWaveOut, &whdr, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut, &whdr, sizeof(WAVEHDR));

    whdr2.lpData = (LPSTR)lpWave2;
    whdr2.dwBufferLength = wfe.nAvgBytesPerSec * terms;
    whdr2.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
    whdr2.dwLoops = 1;
    waveOutPrepareHeader(hWaveOut2, &whdr2, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut2, &whdr2, sizeof(WAVEHDR));

    char str[128];
    std::cout << "hello, world\n";
    std::cin >> str;

 

デバイス0の出力
カテゴリー
電子技術

ジェネレーター2

 WindowsPCのサウンド出力を使って可聴範囲のジェネレーターを作ることができましたがチャンネルが二つでは足りないので追加してみました。

USB to 3.5mmオーディオケーブル
USB to 3.5mmオーディオケーブル

 USBのオーディオ出力を接続しPC本体の出力と合わせてステレオ出力×2=4チャンネルになります。

PC本体の出力
USBオーディオの出力(LとRを換えてみました)
#include <iostream>
#include <string>
#include <windows.h>
#include <MMSystem.h>

#pragma comment (lib, "winmm.lib")

int main() {

    WAVEFORMATEX wfe;
    static HWAVEOUT hWaveOut;
    static WAVEHDR whdr;
    static LPBYTE lpWave;
    WAVEFORMATEX wfe2;
    static HWAVEOUT hWaveOut2;
    static WAVEHDR whdr2;
    static LPBYTE lpWave2;
    int i, len, start, end;
    int terms = 1;
    int sampling = 192000;
    int frequency = 500;

    wfe.wFormatTag = WAVE_FORMAT_PCM;
    wfe.nChannels = 2;
    wfe.wBitsPerSample = 8;
    wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8;
    wfe.nSamplesPerSec = sampling;
    wfe.nAvgBytesPerSec = wfe.nSamplesPerSec * wfe.nBlockAlign;
    waveOutOpen(&hWaveOut, 0, &wfe, 0, 0, CALLBACK_NULL);
    lpWave = (LPBYTE)calloc(wfe.nAvgBytesPerSec, terms * wfe.nChannels);

    wfe2.wFormatTag = WAVE_FORMAT_PCM;
    wfe2.nChannels = 2;
    wfe2.wBitsPerSample = 8;
    wfe2.nBlockAlign = wfe2.nChannels * wfe2.wBitsPerSample / 8;
    wfe2.nSamplesPerSec = sampling;
    wfe2.nAvgBytesPerSec = wfe2.nSamplesPerSec * wfe2.nBlockAlign;
    waveOutOpen(&hWaveOut2, 2, &wfe2, 0, 0, CALLBACK_NULL);
    lpWave2 = (LPBYTE)calloc(wfe2.nAvgBytesPerSec, terms * wfe2.nChannels);

    // 立ち上がりは出力を0にする
    for (i = 0; i < sampling * terms * wfe.nChannels; i++) {
        lpWave[i] = 128;
        lpWave2[i] = 128;
    }

    len = sampling / frequency; 

    // 最初の8サイクルは出力しない
    start = len * 8 * wfe.nChannels;
    // 8サイクル波形を出力する
    end = start + len * 8 * wfe.nChannels;
    printf("start=%d, end=%d\n", start, end);

    for (i = start; i < end; i++) {
        if ((i % 2) == 0) {
            if ((i/2) % len < len / 2) { lpWave[i] = 228; }
            else { lpWave[i] = 28; }}}

    len /= 2;
    for (i = start; i < end; i++) {
        if ((i % 2) == 1) {
            if ((i / 2) % len < len / 2) { lpWave[i] = 228; }
            else { lpWave[i] = 28; }}}

    len *= 2;
    for (i = start; i < end; i++) {
        if ((i % 2) == 1) {
            if ((i / 2) % len < len / 2) { lpWave2[i] = 228; }
            else { lpWave2[i] = 28; }
        }
    }

    len /= 2;
    for (i = start; i < end; i++) {
        if ((i % 2) == 0) {
            if ((i / 2) % len < len / 2) { lpWave2[i] = 228; }
            else { lpWave2[i] = 28; }
        }
    }

    whdr.lpData = (LPSTR)lpWave;
    whdr.dwBufferLength = wfe.nAvgBytesPerSec * terms;
    whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
    whdr.dwLoops = 1;
    waveOutPrepareHeader(hWaveOut, &whdr, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut, &whdr, sizeof(WAVEHDR));

    whdr2.lpData = (LPSTR)lpWave2;
    whdr2.dwBufferLength = wfe.nAvgBytesPerSec * terms;
    whdr2.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
    whdr2.dwLoops = 1;
    waveOutPrepareHeader(hWaveOut2, &whdr2, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut2, &whdr2, sizeof(WAVEHDR));

    char str[128];
    std::cout << "hello, world\n";
    std::cin >> str;

}

 

4チャンネルあればデータに1CH、制御に3CH使えるのでUSBにマイコンをつながなくても様々なデジタル部品の制御ができそうです。

カテゴリー
今後の課題

特徴点の傾向

ここの判定に差分が有っても総合すると一致してしまうことがあるが出ている差分の傾向と総合的に一致していることを合わせるとそれもまた特徴を現すことになるかもしれない。

カテゴリー
学び

種の起源

種の起源
種の起源

ダーウィンとコンピュータに関係はありませんが、種の起源の主張を取り入れれば人工知能ももう少しまともになる気がします。

カテゴリー
学び

リア王

リア王
リア王

演劇に携わっていない人もシェークスピアの名前は聞いたことがあると思います。偉大な人物であればその業績から学ぶことがあるかもしれないとリア王を読んでみました。が、今のところ私には理解が及ばず何かを得ることができませんでした。

カテゴリー
学び

サイバネティクス

サイバネティクス
サイバネティクス

 第三次人工知能ブームで新たに文庫化されたようです。第一次・第二次ブームの時の本が改めて読まれているのでしょうか。

カテゴリー
学び

ロウソクの科学

ロウソクの科学
ロウソクの科学

 電磁気学の専門家だと思っていました。

カテゴリー
学び

科学者と詩人

科学者と詩人
科学者と詩人
カテゴリー
学び

科学と方法

科学と方法
科学と方法

 科学者であっても自身の思想を文書に残すことの大切さを教えてくれる一冊です。

カテゴリー
学び

方法序説

方法序説
方法序説
カテゴリー
学び

科学と仮説

科学と仮設
科学と仮説
カテゴリー
学び

通信の数学的理論

通信の数学的理論
通信の数学的理論
情報源    
↓ メッセージ    
送信機    
↓ 信号    
雑音源
↓ 受信された信号    
受信機    
↓ メッセージ    
受信者    

 狭義の通信のみならず情報を処理するあらゆるところに適用できるモデルです。


 2021.04.07 信号処理とシステム制御 を読もうとしたのですが難しくてわかりませんでした。なのでここに戻って勉強し直します。

 2021.05.20 なんで最初に確率の話が長々と続いているかわかりました。通信する「情報」を数学的に表現すると確率論になるようです。

まえがき
$$
\log_{ 2 } M= \frac{\log_{10} M}{\log_{10} 2}=3.32 \log_{10} M
$$

離散的無雑音システム
$$
C=\displaystyle \lim_{ T \to \infty } \frac{\log N(T)}{T}
$$

$$
N(t)=N(t-t_1)+N(t-t_2)+\cdots +N(t-t_n)
$$

$$
X^{-t_1}+X^{-t_2}+\cdots +X^{-t_n}=1
$$

$$
C=\displaystyle \lim_{ T \to \infty } \frac{\log AX^T_0}{T}=\log X_0
$$

$$
\begin{vmatrix} \displaystyle \sum_s W^{-b^{(s)}_{ij}}-\delta_{ij} \end{vmatrix}=0
$$

ChatGPTに聞いてみた。

User

岩波文庫の通信の数学的理論はどんな本ですか。

ChatGPT

岩波文庫の『通信の数学的理論』は、アメリカの情報理論の創始者の一人であるクロード・シャノンによる著作で、情報理論の基本的な理論を解説した本です。本書は、1948年に発表され、その後も改訂が重ねられ、岩波文庫からも出版されています。

『通信の数学的理論』は、情報理論における重要な概念であるエントロピー、情報源符号化、通信路符号化、通信路容量などについて、数学的な導出過程を詳しく解説しています。また、情報理論の基礎的な公式や定理も紹介されています。

本書は、情報理論に関する古典的な著作であり、情報通信分野の専門家や、情報科学や数学、物理学などの分野に興味を持つ人にとって、非常に貴重な一冊となっています。また、現代においても、情報通信分野における研究や応用に役立つ基礎的な理論として、広く用いられています。

カテゴリー
学び

新科学対話

新科学対話
新科学対話

ChatGPTに聞いてみた。

User

岩波文庫の新科学対話はどんな本ですか。

ChatGPT

岩波文庫の『新科学対話』は、イタリアの科学史家であるジュゼッペ・リビによって書かれた本で、科学に関する対話形式の書籍です。本書は、1997年に刊行され、岩波文庫からも出版されています。

『新科学対話』は、ガリレオ・ガリレイやアイザック・ニュートン、ジョン・ロックなど、17世紀から18世紀にかけての科学者たちが抱えた問題について、当時の人々がどのように議論をしていたかを再現した対話形式で書かれています。また、当時の社会や文化的背景なども詳細に描写されています。

本書では、科学史研究の専門家である著者自身が、当時の科学者たちが直面した課題や、彼らが採用した方法論について語り合う形式で書かれています。また、読み物としての面白さもあるため、一般の人々にも読みやすい内容となっています。

『新科学対話』は、科学史や哲学、または科学技術に興味がある人にとって、非常に興味深い読み物となっています。

カテゴリー
学び

ギリシャ・ローマ神話

ギリシャ・ローマ神話
ギリシャ・ローマ神話

ChatGPTに聞いてみた。

User

トマス・ブルフィンチ著のギリシャ・ローマ神話はどんな本ですか。

ChatGPT

トマス・ブルフィンチ著の『ギリシャ・ローマ神話』は、ギリシャ神話とローマ神話に関するエピソードや物語をまとめた古典文学の書籍です。この本は、19世紀に出版され、以来、英語圏において広く読まれています。

この本には、神々や英雄の起源や冒険、愛や憎しみ、勝利や敗北についての物語が含まれています。神々や英雄の生涯を通して、古代ギリシャやローマ社会の文化や信仰、人間の存在についての哲学的な考え方が示されています。

ブルフィンチは、ギリシャ神話やローマ神話についての知識を広めることを目的に、これらの物語を再構成し、編纂したとされています。この本は、古代の神話や文化に興味がある人や、文学、美術、哲学などに興味がある人にとって、非常に興味深い読み物となっています。