1.5 1章演習の続き
前回の記事:Nand2tetris読書ログ 4 〜 多ビットゲート
今度は多ビットではなく多入力です。多ビットの場合は各ビットが独立でしたが、多入力ゲートは、全ビットを入力とした論理演算を行います。
多入力Or
入力:in[8]
出力:out
入力の8ビットのうち一つ以上が1なら出力は1になります。すでに2入力のOrは実装済みなので、これを利用します。
まず3入力の場合を考えてみると、Or( Or(a, b), c )
のようにすれば良いことがわかります。
3入力の場合の論理値表
a | b | c | out |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 |
0 | 0 | 1 | 1 |
1 | 0 | 1 | 1 |
0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
4入力なら、Or( Or( Or(a, b), c ), d )
とすれば良いです。これを繰り返せば8入力に対応できます。実装は次のようになります。
Or(a = in[0], b = in[1], out=o1);
Or(a = o1, b = in[2], out=o2);
Or(a = o2, b = in[3], out=o3);
Or(a = o3, b = in[4], out=o4);
Or(a = o4, b = in[5], out=o5);
Or(a = o5, b = in[6], out=o6);
Or(a = o6, b = in[7], out=out);