#lang hdl-demo // 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/01/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 { // todo: how should sel subscripting work? IN in, sel[2]; OUT a, b, c, d; PARTS: DMux(in=in, sel=sel[0], a=a, b=b); DMux(in=in, sel=sel[1], a=c, b=d); /* // the right answer: note that subscripting on right always means "read this bit"; // subscripting on left means "write this bit" // build out assignment operator DMux(in=in, sel=sel[0], a=s0a, b=s0b); DMux(in=s0b, sel=sel[1], a=b, b=d); DMux(in=s0a, sel=sel[1], a=a, b=c); */ }