Menu
Coddy logo textTech

4対1 Muxの設計

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

challenge icon

チャレンジ

4対1マルチプレクサ

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つを選択し、それを出力に渡します。

真理値表

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

基礎のすべてのレッスン