マルチプレクサは、複数の入力信号からある1つの信号を選択して出力する回路です。
図1は、2つの1ビット入力信号のうち、どちらか一方を選択して出力する一番簡単なマルチプレクサのシンボル図です。Sの値に応じて、入力AとBのどちらか一方を選択してZから出力します。表1は、図1のマルチプレクサの真理値表です。S=0のとき、AをZから出力し、S=1のとき、BをZから出力します。
入力 | 出力 | ||
---|---|---|---|
S | A | B | Z |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
Sで選択されていない側の入力の組み合わせに対してドントケアを使うと、表1は表2のように簡単になります。
入力 | 出力 | ||
---|---|---|---|
S | A | B | Z |
0 | 0 | x | 0 |
0 | 1 | x | 1 |
1 | x | 0 | 0 |
1 | x | 1 | 1 |
マルチプレクサの論理式
出力Zについて表2から主加法標準形で論理式を作成します。Z=1となっているS, A, Bの組み合わせは2ヵ所あるので、Zの論理式は式(1)のようになります。
$$Z = \overline{S} \cdot A + S \cdot B\ \ \ \ \ \text{(1)}$$
式(1)の各項にドントケアとなっている入力は必要ありません。
HDL記述
1ビット2入力のマルチプレクサをVerilogで記述したのがリスト1です。コメント部分のように(1)の論理式ををそのまま記述しても動作しますが、リスト1のように3項演算子で記述するのが一般的です。論理合成ツールでリスト1を論理合成すると、結果的に(1)と等価になります。
32ビット3入力のマルチプレクサをVerilogで記述したのがリスト2です。3入力のマルチプレクサは、2ビットの選択信号Sで3入力のどれか1つを選択してZから出力します。
リスト1
リスト2