/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

  1. // This file is part of www.nand2tetris.org
  2. // and the book "The Elements of Computing Systems"
  3. // by Nisan and Schocken, MIT Press.
  4. // File name: projects/03/a/PC.hdl
  5. /**
  6. * 16-bit counter with load and reset controls.
  7. *
  8. * If reset(t-1) then out(t) = 0
  9. * else if load(t-1) then out(t) = in(t-1)
  10. * else if inc(t-1) then out(t) = out(t-1) + 1 (integer addition)
  11. * else out(t) = out(t-1)
  12. */
  13. CHIP PC {
  14. IN in[16],load,inc,reset;
  15. OUT out[16];
  16. PARTS:
  17. Inc16(in=outReg,out=outInc);
  18. Mux16(a=outReg,b=outInc,sel=inc,out=doneInc);
  19. Mux16(a=doneInc,b=in,sel=load,out=loadOut);
  20. Mux16(a=loadOut,b=false,sel=reset,out=outRes);
  21. Register(in=outRes,load=true,out=outReg,out=out);
  22. }