2対1 Muxの設計
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 64/90。
チャレンジ
マルチプレクサ (MUX) は、複数の入力のうち1つを選択し、選択信号に基づいて単一の出力に転送するデジタル回路です。データセレクタのようなものだと考えてください。複数の入力があり、そのうちのどれを出力に送るかを選択します。
このプロジェクトでは、if-else 文と case 文を使用して、さまざまなサイズのマルチプレクサを構築します。
2対1 マルチプレクサ
2対1 マルチプレクサは最も単純な形式です。2つのデータ入力 (in0 と in1)、1つの選択入力 (sel)、および1つの出力 (out) を持ちます。sel が 0 のとき、出力は in0 に従います。sel が 1 のとき、出力は in1 に従います。これを always @(*) ブロック内の if-else 文を使用して実装します。
例: in0 = 0、in1 = 1、sel = 1 の場合、out = 1 となります。
2対1 マルチプレクサは、選択信号に基づいて2つの入力のうち1つを選択し、それを出力に渡します。
真理値表
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
sel が 0 のとき、出力は in0 に従います。sel が 1 のとき、出力は in1 に従います。
行うべきこと:
mux2to1という名前のモジュールを作成する- 入力
in0(1ビット) を追加する - 入力
in1(1ビット) を追加する - 入力
sel(1ビット) を追加する - 出力
out(1ビット、型はreg) を追加する always @(*)ブロックを追加する- 内部に
if-else文を追加する:- もし
sel == 0ならば、out = in0に設定する - そうでなければ、
out = in1に設定する
- もし
endmoduleで閉じる
自分で試してみよう
// ステップ 1: mux2to1 という名前のモジュールを作成する
// ステップ 2: 入力 in0 を追加する
// ステップ 3: 入力 in1 を追加する
// ステップ 4: 入力 sel を追加する
// ステップ 5: 出力 out (reg 型) を追加する
// ステップ 6: always @(*) ブロックを追加する
// ステップ 7: if-else 文を追加する
// もし sel == 0 なら、out = in0
// そうでなければ、out = in1
// ステップ 8: Endmodule