-
Notifications
You must be signed in to change notification settings - Fork 1
/
DMux8Way.hdl
47 lines (40 loc) · 1.36 KB
/
DMux8Way.hdl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// This file is part of the materials accompanying the book
// "The Elements of Computing Systems" by Nisan and Schocken,
// MIT Press. Book site: www.idc.ac.il/tecs
// File name: projects/01/DMux8Way.hdl
/**
* 8-way demultiplexor.
* {a,b,c,d,e,f,g,h} = {in,0,0,0,0,0,0,0} if sel==000
* {0,in,0,0,0,0,0,0} if sel==001
* etc.
* {0,0,0,0,0,0,0,in} if sel==111
*/
CHIP DMux8Way {
IN in, sel[3];
OUT a, b, c, d, e, f, g, h;
PARTS:
Not(in=sel[0], out=notsel0);
Not(in=sel[1], out=notsel1);
Not(in=sel[2], out=notsel2);
Or(a=sel[0], b=sel[1], out=notsel00);
Not(in=notsel00, out=sel00);
And(a=sel[0], b=notsel1, out=sel01);
And(a=notsel0, b=sel[1], out=sel10);
And(a=sel[0], b=sel[1], out=sel11);
And(a=sel00, b=notsel2, out=sel000);
And(a=sel01, b=notsel2, out=sel001);
And(a=sel10, b=notsel2, out=sel010);
And(a=sel11, b=notsel2, out=sel011);
And(a=sel00, b=sel[2], out=sel100);
And(a=sel01, b=sel[2], out=sel101);
And(a=sel10, b=sel[2], out=sel110);
And(a=sel11, b=sel[2], out=sel111);
And(a=sel000, b=in, out=a);
And(a=sel001, b=in, out=b);
And(a=sel010, b=in, out=c);
And(a=sel011, b=in, out=d);
And(a=sel100, b=in, out=e);
And(a=sel101, b=in, out=f);
And(a=sel110, b=in, out=g);
And(a=sel111, b=in, out=h);
}