Menu
Coddy logo textTech

2対1 Muxの設計

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

challenge icon

チャレンジ

マルチプレクサ (MUX) は、複数の入力のうち1つを選択し、選択信号に基づいて単一の出力に転送するデジタル回路です。データセレクタのようなものだと考えてください。複数の入力があり、そのうちのどれを出力に送るかを選択します。

このプロジェクトでは、if-else 文と case 文を使用して、さまざまなサイズのマルチプレクサを構築します。

2対1 マルチプレクサ

2対1 マルチプレクサは最も単純な形式です。2つのデータ入力 (in0in1)、1つの選択入力 (sel)、および1つの出力 (out) を持ちます。sel が 0 のとき、出力は in0 に従います。sel が 1 のとき、出力は in1 に従います。これを always @(*) ブロック内の if-else 文を使用して実装します。

例: in0 = 0in1 = 1sel = 1 の場合、out = 1 となります。

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

真理値表

 

selout
0out = in0
1out = in1

sel が 0 のとき、出力は in0 に従います。sel が 1 のとき、出力は in1 に従います。

行うべきこと:

  1. mux2to1 という名前のモジュールを作成する
  2. 入力 in0 (1ビット) を追加する
  3. 入力 in1 (1ビット) を追加する
  4. 入力 sel (1ビット) を追加する
  5. 出力 out (1ビット、型は reg) を追加する
  6. always @(*) ブロックを追加する
  7. 内部に if-else 文を追加する:
    • もし sel == 0 ならば、out = in0 に設定する
    • そうでなければ、out = in1 に設定する
  8. 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

基礎のすべてのレッスン