Menu
Coddy logo textTech

4対1 Muxの設計

CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 65/90。

challenge icon

チャレンジ

4-to-1 Multiplexer

4対1マルチプレクサには、4つのデータ入力(in0in1in2in3)、2つの選択ビット(sel[1:0])、および1つの出力(out)があります。2つの選択ビットによって、どの入力が出力に通過するかが決定されます:

  • sel = 2'b00 のとき、出力は in0
  • sel = 2'b01 のとき、出力は in1
  • sel = 2'b10 のとき、出力は in2
  • sel = 2'b11 のとき、出力は in3

このマルチプレクサは2通りの方法で作成します。まず if-else 文を使用し、次のレッスンで case 文を使用します。どちらの方法も機能しますが、選択肢が多い場合は case の方がよりすっきりと記述できることがよくあります。

4対1マルチプレクサは、2ビットの選択信号に基づいて4つの入力のうち1つを選択し、それを出力に送信します。

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 文を追加する:
    • If sel == 2'b00 の場合、out = in0 に設定する
    • Else if sel == 2'b01 の場合、out = in1 に設定する
    • Else if sel == 2'b10 の場合、out = in2 に設定する
    • Else の場合、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
    

// ステップ 10: Endmodule

基礎のすべてのレッスン