4対1 Muxの設計
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 65/90。
チャレンジ
4-to-1 Multiplexer
4対1マルチプレクサには、4つのデータ入力(in0、in1、in2、in3)、2つの選択ビット(sel[1:0])、および1つの出力(out)があります。2つの選択ビットによって、どの入力が出力に通過するかが決定されます:
sel = 2'b00のとき、出力はin0sel = 2'b01のとき、出力はin1sel = 2'b10のとき、出力はin2sel = 2'b11のとき、出力はin3
このマルチプレクサは2通りの方法で作成します。まず if-else 文を使用し、次のレッスンで case 文を使用します。どちらの方法も機能しますが、選択肢が多い場合は case の方がよりすっきりと記述できることがよくあります。
4対1マルチプレクサは、2ビットの選択信号に基づいて4つの入力のうち1つを選択し、それを出力に送信します。
Truth Table
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
sel が 00 のとき、出力は in0 に従います。sel が 01 のとき、出力は in1 に従います。sel が 10 のとき、出力は in2 に従います。sel が 11 のとき、出力は in3 に従います。
手順:
mux4to1という名前のモジュールを作成する- 入力
in0(1ビット)を追加する - 入力
in1(1ビット)を追加する - 入力
in2(1ビット)を追加する - 入力
in3(1ビット)を追加する - 入力
sel(2ビット)を追加する - 出力
out(1ビット、型reg)を追加する always @(*)ブロックを追加する- 内部に
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に設定する
- If
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