4 To 1 Mux 설계
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 65번째.
챌린지
4-to-1 멀티플렉서
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개의 입력 중 하나를 선택하여 출력으로 전달합니다.
진리표
| 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 문 추가
// 만약 sel == 2'b00 이면, out = in0
// 그렇지 않고 sel == 2'b01 이면, out = in1
// 그렇지 않고 sel == 2'b10 이면, out = in2
// 그 외의 경우, out = in3
// 10단계: Endmodule