14. Multi-way/Multi-bit multiplexer(4way 16bit)
15. Multi-way/Multi-bit multiplexer(8way 16bit)
이름 그대로 16비트 입력 4/8개가 들어오는데 입력 중 하나를 선택해서 내보내는게 되겠다.
입력이 4개인 경우 앞에서 본 디먹스 처럼 셀렉터 단자가 2개필요하고,
8개일땐 셀렉터단자를 3개로 해주면된다.
4way 16bit mux의 경우 어떻게 해야할지 감이 전혀 안잡혀서 그냥 검색했다.
https://people.duke.edu/~nts9/logicgates/Mux4Way16.hdl
검색한 내용이랑 진리표, 이걸로 그림으로 그리면 대강 이런식이된다.
손으로 적긴했는데 글씨가 알아보기에는 좋진 않네
반대 순서로 설명하면 sel[1]의 값으로 위의 출력(about)을 쓸지 아래의 출력(cdout)을 쓸지 결정한다.
먹스가 2개 있는 곳으로 오면 sel[0]의 값으로 위(about 시 a, cdout시 c)를 쓸지 아래를 쓸지 결정한다.
위 그림 대로 이렇게 구현하면되고
CHIP Mux4Way16 {
IN a[16], b[16], c[16], d[16], sel[2];
OUT out[16];
PARTS:
Mux16(a=a, b=b, sel=sel[0], out=about);
Mux16(a=c, b=d, sel=sel[0], out=cdout);
Mux16(a=about, b=cdout, sel=sel[1], out =out);
}
4웨이 16비트 먹스도 잘 동작한다
4웨이를 했으니까 8웨이 16비트 먹스도 할수있을거같다.
진리표와 그림부터 그려보자
8way 16bit 먹스의 경우 4way 16bit mux 2개와 16bit mux 1개로 구현했다.
4way mux로 4개 입력 중에 고르게하고, a~d의것을 고를지 e~h의 것을 고를지를
뒤에 16bit mux로 선택하도록 하여 완성
CHIP Mux8Way16 {
IN a[16], b[16], c[16], d[16],
e[16], f[16], g[16], h[16],
sel[3];
OUT out[16];
PARTS:
Mux4Way16(a=a, b=b, c=c, d=d, sel[1]=sel[1], sel[0]=sel[0], out=a2dout);
Mux4Way16(a=e, b=f, c=g, d=h, sel[1]=sel[1], sel[0]=sel[0], out=e2hout);
Mux16(a=a2dout, b=e2hout, sel=sel[2], out=out);
}
wa 어떻게든 기본 논리 회로 구현을 마무리했다.
여기 나와있는 모든 회로들은 nand를 이용하여 만들었고
다음 장부터는 반가산기, 전가산기, ALU 등 부울 대수를 이용한 연산장치를 만들게 된다.
'컴퓨터과학 > 디지털회로' 카테고리의 다른 글
nand2tetris - 6. hack 기계어와 어셈블리어 1 (0) | 2022.05.16 |
---|---|
nand2tetris - 5. 레지스터와 RAM 구현하기 (0) | 2022.05.15 |
nand2tetris - 4. 반가산기부터 ALU까지 구현하기 (0) | 2022.05.15 |
nand2tetris- 2. Xor부터 8way Demultiplexer까지 (0) | 2022.05.15 |
nand2tetris- 1. 소개, NAND 게이트로 Not, And, OR 게이트 구현하기 (0) | 2022.05.14 |