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つの入力のいずれかを選択し、出力に渡します。

真理値表

 

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

基礎のすべてのレッスン