Menu
Coddy logo textTech

4 To 1 Mux Design

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マルチプレクサは、4つの入力のうち1つを選択し、2ビットの選択信号に基づいてその入力を出力に渡します。

真理値表

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

sel00 のとき、出力は in0 に従います。sel01 のとき、出力は in1 に従います。sel10 のとき、出力は in2 に従います。sel11 のとき、出力は in3 に従います。

行うこと:

  1. mux4to1 という名前の module を Create
  2. input in0(1ビット)を Add
  3. input in1(1ビット)を Add
  4. input in2(1ビット)を Add
  5. input in3(1ビット)を Add
  6. input sel(2ビット)を Add
  7. output out(1ビット、type reg)を Add
  8. always @(*) block を Add
  9. その中に、sel を確認する if-else statement を Add:
    • sel == 2'b00 の場合、out = in0 に設定する
    • sel == 2'b01 の場合、out = in1 に設定する
    • 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

基礎のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ