Menu
Coddy logo textTech

4 To 1 Mux 설계

Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 65번째.

challenge icon

챌린지

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개의 입력 중 하나를 선택하여 출력으로 전달합니다.

진리표

sel1sel0out
00out = in0
01out = in1
10out = in2
11out = in3

sel00일 때, 출력은 in0을 따릅니다. sel01일 때, 출력은 in1을 따릅니다. sel10일 때, 출력은 in2를 따릅니다. sel11일 때, 출력은 in3을 따릅니다.

수행할 작업:

  1. mux4to1이라는 이름의 모듈을 생성합니다.
  2. 입력 in0 (1비트)를 추가합니다.
  3. 입력 in1 (1비트)를 추가합니다.
  4. 입력 in2 (1비트)를 추가합니다.
  5. 입력 in3 (1비트)를 추가합니다.
  6. 입력 sel (2비트)를 추가합니다.
  7. 출력 out (1비트, reg 타입)을 추가합니다.
  8. always @(*) 블록을 추가합니다.
  9. 내부에 sel을 확인하는 if-else 문을 추가합니다:
    • 만약 sel == 2'b00이면, out = in0으로 설정합니다.
    • 그렇지 않고 만약 sel == 2'b01이면, out = in1로 설정합니다.
    • 그렇지 않고 만약 sel == 2'b10이면, out = in2로 설정합니다.
    • 그 외의 경우에는 out = in3으로 설정합니다.
  10. 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

기초의 모든 레슨