nand2tetris/projects/01/And16.hdl

52 lines
1.4 KiB
Plaintext

// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/01/And16.hdl
/**
* 16-bit bitwise And:
* for i = 0..15: out[i] = (a[i] and b[i])
*/
// Cost = 32 NAND Gates
CHIP And16 {
IN a[16], b[16];
OUT out[16];
PARTS:
Nand(a=a[0], b=b[0], out=w0);
Nand(a=a[1], b=b[1], out=w1);
Nand(a=a[2], b=b[2], out=w2);
Nand(a=a[3], b=b[3], out=w3);
Nand(a=a[4], b=b[4], out=w4);
Nand(a=a[5], b=b[5], out=w5);
Nand(a=a[6], b=b[6], out=w6);
Nand(a=a[7], b=b[7], out=w7);
Nand(a=a[8], b=b[8], out=w8);
Nand(a=a[9], b=b[9], out=w9);
Nand(a=a[10], b=b[10], out=w10);
Nand(a=a[11], b=b[11], out=w11);
Nand(a=a[12], b=b[12], out=w12);
Nand(a=a[13], b=b[13], out=w13);
Nand(a=a[14], b=b[14], out=w14);
Nand(a=a[15], b=b[15], out=w15);
Nand(a=w0, b=w0, out=out[0]);
Nand(a=w1, b=w1, out=out[1]);
Nand(a=w2, b=w2, out=out[2]);
Nand(a=w3, b=w3, out=out[3]);
Nand(a=w4, b=w4, out=out[4]);
Nand(a=w5, b=w5, out=out[5]);
Nand(a=w6, b=w6, out=out[6]);
Nand(a=w7, b=w7, out=out[7]);
Nand(a=w8, b=w8, out=out[8]);
Nand(a=w9, b=w9, out=out[9]);
Nand(a=w10, b=w10, out=out[10]);
Nand(a=w11, b=w11, out=out[11]);
Nand(a=w12, b=w12, out=out[12]);
Nand(a=w13, b=w13, out=out[13]);
Nand(a=w14, b=w14, out=out[14]);
Nand(a=w15, b=w15, out=out[15]);
}