// 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/1/DMux4Way.hdl /** * 4-way demultiplexor: * [a, b, c, d] = [in, 0, 0, 0] if sel = 00 * [0, in, 0, 0] if sel = 01 * [0, 0, in, 0] if sel = 10 * [0, 0, 0, in] if sel = 11 */ CHIP DMux4Way { IN in, sel[2]; OUT a, b, c, d; PARTS: // Use two levels of DMux: first level splits by sel[1], second level splits by sel[0] DMux(in=in, sel=sel[1], a=tmp1, b=tmp2); DMux(in=tmp1, sel=sel[0], a=a, b=b); DMux(in=tmp2, sel=sel[0], a=c, b=d); }