Menu
Coddy logo textTech

4 To 1 Mux 설계

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

challenge icon

챌린지

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)

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 문 추가
    // 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

기초의 모든 레슨