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);