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

Nand2tetris読書ログ 4 〜 多入力Or

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

コメントを残す

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