-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAdd16.hdl
More file actions
30 lines (29 loc) · 1.29 KB
/
Add16.hdl
File metadata and controls
30 lines (29 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 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/2/Add16.hdl
/**
* 16-bit adder: Adds two 16-bit two's complement values.
* The most significant carry bit is ignored.
*/
CHIP Add16 {
IN a[16], b[16];
OUT out[16];
PARTS:
FullAdder(a=a[0],b=b[0],c=false,sum=out[0],carry=cy0);
FullAdder(a=a[1],b=b[1],c=cy0,sum=out[1],carry=cy1);
FullAdder(a=a[2],b=b[2],c=cy1,sum=out[2],carry=cy2);
FullAdder(a=a[3],b=b[3],c=cy2,sum=out[3],carry=cy3);
FullAdder(a=a[4],b=b[4],c=cy3,sum=out[4],carry=cy4);
FullAdder(a=a[5],b=b[5],c=cy4,sum=out[5],carry=cy5);
FullAdder(a=a[6],b=b[6],c=cy5,sum=out[6],carry=cy6);
FullAdder(a=a[7],b=b[7],c=cy6,sum=out[7],carry=cy7);
FullAdder(a=a[8],b=b[8],c=cy7,sum=out[8],carry=cy8);
FullAdder(a=a[9],b=b[9],c=cy8,sum=out[9],carry=cy9);
FullAdder(a=a[10],b=b[10],c=cy9,sum=out[10],carry=cy10);
FullAdder(a=a[11],b=b[11],c=cy10,sum=out[11],carry=cy11);
FullAdder(a=a[12],b=b[12],c=cy11,sum=out[12],carry=cy12);
FullAdder(a=a[13],b=b[13],c=cy12,sum=out[13],carry=cy13);
FullAdder(a=a[14],b=b[14],c=cy13,sum=out[14],carry=cy14);
FullAdder(a=a[15],b=b[15],c=cy14,sum=out[15],carry=cy15);
}