// 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); }