Make/Day

毎日なにか作ります

15日目 ~マルチプレクサの多ビット化、多入力化~

こんにちは!今日は前回の続きでマルチプレクサの多ビット化、多入力化を行います。

まず多ビット化についてですが、これは前回の論理ゲートと同じように書くことができます。

module Mux16 (
    input wire [15:0] a, b,
    input sel,
    output wire [15:0] out
);
    Mux U0(a[0], b[0], sel, out[0]);
    Mux U1(a[1], b[1], sel, out[1]);
    Mux U2(a[2], b[2], sel, out[2]);
    ....
endmodule

これで複数信号への入力にも対応できるようになりました。

続いて、多入力Nbitの信号線を1本のNbitバスへ出力する方法ですが、これには前回を同じように複数のマルチプレクサを多段化して処理を行います。
例えば、4入力1出力16bitのマルチプレクサは下図のようになります。

多入力マルチプレクサ

このように、モジュールを段々に繋げば多入力化を実現することができ、以下のVerilogコードで書き表すことができます。

module Mux4Way16 (
    input wire [15:0] a,b,c,d,
    input wire [1:0] sel,
    output wire [15:0] out
);
    wire [15:0] w1,w2;
    Mux16 U0(a, b, sel[0], w1);
    Mux16 U1(c, d, sel[0], w2);
    Mux16 U2(w1, w2, sel[1], out);
endmodule

今回までのモジュールと、1本の入力をNbitに振り分けるデマルチプレクサにより、簡潔なALUを構成してゆくことができます。