-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPC.hdl
More file actions
31 lines (25 loc) · 795 Bytes
/
PC.hdl
File metadata and controls
31 lines (25 loc) · 795 Bytes
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
31
// 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/3/a/PC.hdl
/**
* A 16-bit counter.
* if reset(t): out(t+1) = 0
* else if load(t): out(t+1) = in(t)
* else if inc(t): out(t+1) = out(t) + 1
* else out(t+1) = out(t)
*/
CHIP PC {
IN in[16], reset, load, inc;
OUT out[16];
PARTS:
Or(a=inc,b=reset,out=sel);
Or(a=sel,b=load,out=slt);
Inc16(in=in1,out=in2);
Mux16(a=in,b=out5,sel=inc,out=in1);
Mux16(a=in,b=in2,sel=inc,out=out2);
Mux16(a=out2,b=in,sel=load,out=out3);
Mux16(a=out3,b=false,sel=reset,out=out4);
Register(in=out4,load=slt,out=out5);
And16(a=out5,b=out5,out=out);
}