// 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) */ /* * Personal Notes * * */ CHIP PC { IN in[16], reset, load, inc; OUT out[16]; PARTS: // Inc Inc16(in=regOut, out=inc16Out); Mux16(a=regOut, b=inc16Out, sel=inc, out=incOut); // Load Mux16(a=incOut, b=in, sel=load, out=loadOut); // Reset Mux16(a=loadOut, b[0..15]=false, sel=reset, out=resetOut); Register(in=resetOut, load=true , out=regOut, out=out); }