Files
Nand2Tetris/Assignments/3_Sequential_Logic/PC.hdl
2024-11-29 20:50:34 +04:00

22 lines
620 B
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/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:
Inc16(in=r, out=i);
Mux16(a=r, b=i, sel=inc, out=oi);
Mux16(a=oi, b=in, sel=load, out=ol);
Mux16(a=ol, b=false, sel=reset, out=or);
Register(in=or, load=true, out=r, out=out);
}