ハードウェアエンジニアの守破離

国内電機メーカーに勤務しているハードウェアエンジニア

【Nand2tetirs】名著『コンピュータシステムの理論と実装』を読んで、実際にコンピュータシステムを構築してみる #4

今回の内容

↓前回

subarukun.hatenablog.com

前回はNANDから、NOT, AND, OR, XORを構築しました。

今回は電子機器にもよく用いられるマルチプレクサ、デマルチプレクサを構築します。次回は多ビット化・多入力化を行う予定です。ここまでが本書の第1章の内容になります。

マルチプレクサ (Multiplexor)

まずは、Muxを構築します。Muxの回路記号と入出力関係は以下です。

f:id:Subarukun:20220409230123p:plain

a, bの2入力以外に、制御信号selが加わった3入力1出力です。

初めて見る方でも真理値表を眺めていると法則が分かると思いますが、制御信号selによって、a or bの論理を出力する内容になっています。

動作が分かりやすいように単純化した真理値表は下表の通りです。

f:id:Subarukun:20220409230336p:plain

OR, AND, NOTを使用してMUXを構築しました。selにより、a, bいずれかの論理が選択されている挙動を確認することができます。

f:id:Subarukun:20220417195944p:plain

デマルチプレクサ (Demultiplexor)

Dmuxの回路記号と真理値表は以下の通りです。回路記号はMuxと左右対称に近い形になっています。入出力の信号数はMuxと逆です。

f:id:Subarukun:20220409231145p:plain

動作が分かりやすいように単純化した真理値表は下表の通りです。

f:id:Subarukun:20220409231308p:plain

内部回路図は下記の通り。Muxで使用したORは不要です。

selによって、入力信号をa,bに割り振ってデコードしている様子が分かります。

f:id:Subarukun:20220417201439p:plain

以上のMux, Dmuxは電子機器の設計によく登場します。

下図のように通信したい信号をMux側が選択して、Dmux側で受信する構成にした場合、途中の経路は信号1本で満足できるためコネクタやケーブルの極数、サイズ、重量、コストの削減することが可能になります。

f:id:Subarukun:20220409231938p:plain

他には、例えばArduinoのような開発ボードでは複数のIFを備えているPinがあり、これらは大体、GPIO, SPI, I2C, UART, PWMなど多重化されています。これは使いたいIFを配線しておけば、コーディング時に所望の機能を選択することで機能が仕様可能になることを意味しており、内部でMuxが使われているので『Pin muxing』や『Pin mux』と呼ばれています。

SoCでは機能毎に独立したpinにすると、途方もない数の極数が必要になります。これはコスト上現実的ではないので、設計者はメーカーのPin description, Pin mux表を見ながら必要なIFの系統数が満足できるか調べる必要があります。

f:id:Subarukun:20220409232745p:plain

まとめ

今回はMux、DMuxを構築しました。次回は本書でも取り上げられており、Hackコンピュータを構築する上で必要になる多入力、多ビットの基本論理ゲートの構築を行います。今回も構築した回路データはGithubのリポジトリに置きました。