-
Notifications
You must be signed in to change notification settings - Fork 0
/
Mux4Way16.hdl
40 lines (33 loc) · 1.01 KB
/
Mux4Way16.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
// 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/Mux4Way16.hdl
/**
* 4-way 16-bit multiplexor:
* out = a if sel == 00
* b if sel == 01
* c if sel == 10
* d if sel == 11
*/
CHIP Mux4Way16 {
IN a[16], b[16], c[16], d[16], sel[2];
OUT out[16];
PARTS:
// PROCESS:
// Negamos los dos bits de entrada
Not(in=sel[1], out=Nots1);
Not(in=sel[0], out=Nots0);
// checking for a selection
And3Way16(a=a, b=Nots1, c=Nots0, out=aValue);
// checking for b selection
And3Way16(a=b, b=Nots1, c=sel[0], out=bValue);
// checking for c selection
And3Way16(a=c, b=sel[1], c=Nots0, out=cValue);
// checking for d selection
And3Way16(a=d, b=sel[1], c=sel[0], out=dValue);
// OUTPUT:
// Calculamor un Or4Way que recibe como entrada
// las anteriores computaciones logicas
Or16(a=cValue, b=dValue, out=cOrd);
Or16(a=aOrb, b=cOrd, out=out);
}