/projects/03/a/PC.hdl
https://github.com/hubbazoot/nand2tetris · Unknown · 25 lines · 22 code · 3 blank · 0 comment · 0 complexity · 8b1d6ffc075edb410658d001b783146a MD5 · raw file
- // 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/03/a/PC.hdl
-
- /**
- * 16-bit counter with load and reset controls.
- *
- * If reset(t-1) then out(t) = 0
- * else if load(t-1) then out(t) = in(t-1)
- * else if inc(t-1) then out(t) = out(t-1) + 1 (integer addition)
- * else out(t) = out(t-1)
- */
-
- CHIP PC {
- IN in[16],load,inc,reset;
- OUT out[16];
-
- PARTS:
- Inc16(in=outReg,out=outInc);
- Mux16(a=outReg,b=outInc,sel=inc,out=doneInc);
- Mux16(a=doneInc,b=in,sel=load,out=loadOut);
- Mux16(a=loadOut,b=false,sel=reset,out=outRes);
- Register(in=outRes,load=true,out=outReg,out=out);
- }