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

Nand2tetris読書ログ 4 〜 多ビットゲート

1.5 1章演習の続き

前回の記事:Nand2tetris読書ログ 3 〜 DeMultiplexor

多ビットゲートは、1ビット演算を各ビットについて行うだけなので、実装としてはつまらないものになります。ただ、より複雑な回路で多ビットゲートが使われるのでとても重要な回路だそうです。ここでは16ビットNotと16ビットAndの実装例だけ載せておきます。

16ビットNot

入力:in[16]
出力:out[16]

Nand(a=in[0], b=in[0], out=out[0]);
Nand(a=in[1], b=in[1], out=out[1]);
Nand(a=in[2], b=in[2], out=out[2]);
Nand(a=in[3], b=in[3], out=out[3]);
Nand(a=in[4], b=in[4], out=out[4]);
Nand(a=in[5], b=in[5], out=out[5]);
Nand(a=in[6], b=in[6], out=out[6]);
Nand(a=in[7], b=in[7], out=out[7]);
Nand(a=in[8], b=in[8], out=out[8]);
Nand(a=in[9], b=in[9], out=out[9]);
Nand(a=in[10], b=in[10], out=out[10]);
Nand(a=in[11], b=in[11], out=out[11]);
Nand(a=in[12], b=in[12], out=out[12]);
Nand(a=in[13], b=in[13], out=out[13]);
Nand(a=in[14], b=in[14], out=out[14]);
Nand(a=in[15], b=in[15], out=out[15]);

16ビットAnd

入力:a[16], b[16]
出力:out[16]

Nand(a=a[0], b=b[0], out=n0);
Not(in=n0, out=out[0]);

Nand(a=a[1], b=b[1], out=n1);
Not(in=n1, out=out[1]);

Nand(a=a[2], b=b[2], out=n2);
Not(in=n2, out=out[2]);

Nand(a=a[3], b=b[3], out=n3);
Not(in=n3, out=out[3]);

Nand(a=a[4], b=b[4], out=n4);
Not(in=n4, out=out[4]);

Nand(a=a[5], b=b[5], out=n5);
Not(in=n5, out=out[5]);

Nand(a=a[6], b=b[6], out=n6);
Not(in=n6, out=out[6]);

Nand(a=a[7], b=b[7], out=n7);
Not(in=n7, out=out[7]);

Nand(a=a[8], b=b[8], out=n8);
Not(in=n8, out=out[8]);

Nand(a=a[9], b=b[9], out=n9);
Not(in=n9, out=out[9]);

Nand(a=a[10], b=b[10], out=n10);
Not(in=n10, out=out[10]);

Nand(a=a[11], b=b[11], out=n11);
Not(in=n11, out=out[11]);

Nand(a=a[12], b=b[12], out=n12);
Not(in=n12, out=out[12]);

Nand(a=a[13], b=b[13], out=n13);
Not(in=n13, out=out[13]);

Nand(a=a[14], b=b[14], out=n14);
Not(in=n14, out=out[14]);

Nand(a=a[15], b=b[15], out=n15);
Not(in=n15, out=out[15]);

[次の記事:]

コメントを残す

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