4 To 1 Mux 설계
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 65번째.
챌린지
4-to-1 멀티플렉서 (Multiplexer)
4-to-1 멀티플렉서는 4개의 데이터 입력(in0, in1, in2, in3), 2개의 선택 비트(sel[1:0]), 그리고 1개의 출력(out)을 갖습니다. 2개의 선택 비트에 따라 어떤 입력이 출력으로 전달될지가 결정됩니다:
sel = 2'b00일 때, 출력은in0입니다.sel = 2'b01일 때, 출력은in1입니다.sel = 2'b10일 때, 출력은in2입니다.sel = 2'b11일 때, 출력은in3입니다.
이 멀티플렉서를 두 가지 방식으로 작성해 봅니다. 먼저 if-else 문을 사용하고, 다음 레슨에서는 case 문을 사용할 것입니다. 두 방법 모두 동작하지만, 선택지가 많을 때는 보통 case 문이 더 깔끔합니다.
4-to-1 멀티플렉서는 2비트 선택 신호를 기반으로 4개의 입력 중 하나를 선택하여 출력으로 전달합니다.
진리표 (Truth Table)
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
sel이 00일 때 출력은 in0을 따릅니다. sel이 01일 때 출력은 in1을 따릅니다. sel이 10일 때 출력은 in2를 따릅니다. sel이 11일 때 출력은 in3을 따릅니다.
수행할 작업:
mux4to1이라는 이름의 모듈을 생성하세요.- 입력
in0(1비트)을 추가하세요. - 입력
in1(1비트)을 추가하세요. - 입력
in2(1비트)을 추가하세요. - 입력
in3(1비트)을 추가하세요. - 입력
sel(2비트)을 추가하세요. - 출력
out(1비트,reg타입)을 추가하세요. always @(*)블록을 추가하세요.- 블록 내부에
sel을 확인하는if-else문을 작성하세요:- 만약
sel == 2'b00이면,out = in0으로 설정하세요. - 그렇지 않고 만약
sel == 2'b01이면,out = in1으로 설정하세요. - 그렇지 않고 만약
sel == 2'b10이면,out = in2로 설정하세요. - 그 외의 경우에는,
out = in3으로 설정하세요.
- 만약
endmodule로 모듈을 닫으세요.
직접 해보기
// 단계 1: mux4to1이라는 모듈 생성
// 단계 2: 입력 in0 추가
// 단계 3: 입력 in1 추가
// 단계 4: 입력 in2 추가
// 단계 5: 입력 in3 추가
// 단계 6: 입력 sel 추가 (2비트)
// 단계 7: 출력 out 추가 (reg 타입)
// 단계 8: always @(*) 블록 추가
// 단계 9: if-else 문 추가
// if sel == 2'b00이면, out = in0
// else if sel == 2'b01이면, out = in1
// else if sel == 2'b10이면, out = in2
// else, out = in3
// Step 10: Endmodule