コンピュータシステムの理論と実装読書ログ

Nand2tetris読書ログ 3 〜 Demultiplexor

1.5 1章演習の続き

前回の記事:Nand2tetris読書ログ 2 〜 Multiplexor

デマルチプレクサ

入力:in, sel
出力:a, b

in sel a b
0 0 0 0
1 0 1 0
0 1 0 0
1 1 0 1

実装方法

今まで2つの値を出力するゲートを作っていないので、ここでも同様に、aを出力する論理ゲートとbを出力するものとをそれぞれ別個に考えます。まずはaの方から。これまでに作ったゲートを組み合わせて考えてみるといくつか方法があることがわかりますが、例えば以下のような実装ができます。マルチプレクサよりだいぶ簡単ですね。

Nand(a = in, b = sel, out = n)
And(a = in, b = n, out = a)

in n a
0 1 0
1 1 1
0 1 0
1 0 1

次にbを出力するゲートを考えましょう。これはすごく単純です。以前作ったゲートを思い出してみると、その一つの出力と同じことがわかります。そうです、Andゲートです。つまり単純にinとselのAndを取れば良いだけです。

And(a = in, b = sel, out = b)

論理値表は書くまでもないですね。以上で完了です。

Nand(a = in, b = sel, out = n);
And(a = in, b = n, out = a);
And(a = in, b = sel, out = b);

次の記事:Nand2tetris読書ログ 4 〜 多ビットゲート

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です