前回は、マルチプレクサを勉強しました。
今回は、デマルチプレクサです。マルチプレクサが複数の信号からひとつを選ぶのに対して、デマルチプレクサはひとつの信号を複数の出力に振り分ける働きをします。
「デマルチプレクサ」って「デコーダ」なの?
デマルチプレクサってどんな IC なんだろうとデータシート検索してみると、デコーダ IC がでてきます。え?デコーダと同じ物なの?
部品箱にあるデコーダ 74HC238 のデータシートをみてみると、たしかに「3- to 8-Line Decoder/Demultiplexer」と書いてあります。デコーダなら、これまでに 7セグメントLED のデジット側の制御 (参考記事) なんかでなんどもつかってますから、よく知っていますけど。
デコーダの真理値表
S1 | S0 | Y0 | Y1 | Y2 | Y3 |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
表1 は、2to4ラインデコーダの真理値表です。
デコーダは、S1、S0 のバイナリコードの値にしたがって、対応する出力 Y0~Y3 に信号を送ります。S1、S0 の 2ビットデータの値が 0x0 ならば Y0 に、0x2ならば Y2 にというふうに。
バイナリデータを復号することになるので、2進10進デコーダともいわれます。
デマルチプレクサの真理値表
S1 | S0 | A | Y0 | Y1 | Y2 | Y3 |
x | x | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 1 |
では、デマルチプレクサの真理値表はどうなっているでしょうか。表2 が、4ビットデマルチプレクサの真理値表です。
デマルチプレクサも、デコーダと同じように S1、S0 のバイナリコードの値にしたがって、対応する出力 Y0~Y3 に信号を送っています。
ただし、データ入力 A があり、A の値にしたがって Y が変化するので、A が指定された出力 Y0~Y3 に振り分けられた、ということになる。
デコーダとデマルチプレクサの違いは、すべての出力を 0 にできるデータ入力 A があるかどうか、なんですね。
ん?待てよ。表1 には書きませんでしたが、デコーダ IC には出力ストローブ G という制御入力があって、こいつですべての出力を 0 にできるんですけど。それを真理値表につけ加えると、表2 と同じになるんですけど。あっ、そうか。
デコーダの出力ストローブ G は、デマルチプレクサのデータ入力 A に相当するってこと。同じ働きをするので、デコーダとデマルチプレクサとは同じものになるわけです。
デマルチプレクサの論理式
表2 から、デマルチプレクサの論理式を主加法標準形で求めます。
Y0 = S1⋅S0⋅A Y1 = S1⋅S0⋅A Y2 = S1⋅S0⋅A Y3 = S1⋅S0⋅A
これをそのまま論理回路にすると、教科書にあるような NOT x2個、3入力AND x4個の回路になります。毎度なんですが、俺の部品箱に 3入力ANDはありませんので、論理式をちょっと変換してみましょう。
Y0 = (S1⋅S0)⋅A Y1 = (S1⋅S0)⋅A Y2 = (S1⋅S0)⋅A Y3 = (S1⋅S0)⋅A
Y0 = S0⋅(S1⋅A) Y1 = S0⋅(S1⋅A) Y2 = S0⋅(S1⋅A) Y3 = S0⋅(S1⋅A)
左と右、カッコで括った場所が違うだけです。が。
左は、デコーダの出力をストローブで制御する形です。NOT x2個、AND x8個が必要ですが、わかりやすい回路になると思います。
右は、(S1⋅A) と (S1⋅A) の出力を共通に使えるようにしたもので、NOT x2個、AND x6個に減ります。さらに、後述しますが、これをド・モルガン変換することで、NAND x4個、NOR x4個にできます。74HC00 と 74HC02 の 2個でできちゃうので、こちらを採用しようと思います。
デマルチプレクサ回路
論理式からつくった回路
図1 は、上の論理式からつくったデマルチプレクサの回路図です。
(S1⋅A) と (S1⋅A) が共通になっていますが、それぞれ A、S1、S2 を組み合わせて出力するラインを定めています。
とくに問題はないのですが、じっさいに回路をつくってみようと考えると、74HC04 1個、74HC08 2個が必要になります。未使用のゲートもでてくるので、もっと効率よくつくりたいなと思うんですね。
ド・モルガン変換した回路
図1 の U1A~U1B、U1C の接続に○をつけ、負理論に変更します。U2A~U2B、U2C の間も同様に負理論にします。
そのようにしたのが、図2 の回路。AND が NAND と NOR に置き換わっています。そのために、S0 も反転していることに注意してください。
NOT も NAND に置き換えることで、74HC00 1個、74HC02 1個でつくることができました。
なお、ド・モルガン変換については前回の記事を参照してください。
デマルチプレクサ回路の動作確認
デマルチプレクサ回路の動作を確認するために、入出力の回路をつくりましょう。
左上は、ディップスイッチによる選択入力 S1、S0 の信号回路です。通常はプルダウン抵抗で LOW、ディップスイッチをオンすると HIGH が出力されます。
右上は、入力信号のための押しボタンスイッチ。押しボタンを押下すると HIGH が出力されます。
下の 4個の LED は、それぞれの出力ライン Y が HIGH になると点灯します。74HC02 の出力電圧は 5V なので、LED に流れる電流は 0.64mA です。
2個のディップスイッチのオンオフの組み合わせで、選択信号は 00~11 まで設定できます。そして押しボタンスイッチを押下すると、選択された出力ラインの LED が点灯します。
真理値表に示したとおり、S1、S0 の組み合わせによって、Y0~Y3 へ入力信号 A が出力されることが確認できました。
ブレッドボード
実験したブレッドボードの様子です。
4 ラインのデマルチプレクサですが、2to4 ラインデコーダでもあります。
ディップスイッチは 8ビットですが、左側 2ビットだけ使用しています。
押しボタンは入力信号用。写真をよ〜くみると、プルダウン抵抗が 1KΩになってます。回路図では 22KΩ。まぁどっちでもいいんで修正しませんでしたが、スイッチにはちょっと多めに電流流したほうが良いと思うので、1KΩをお勧めしておきます。
後記
今回は、2to4 ラインデコーダ / デマルチプレクサの回路をつくってみました。
デコーダとデマルチプレクサは同じものだ、ということがわかりました。また、回路はつくりませんでしたが、デコーダの出力をストローブで制御するという回路も考えられることを知りました。
そのうえでデータシートの回路図をみると、ああこういう構成でつくられているんだなと、より理解できるようになったと思います。
論理回路にくわしいある方は、データシートに書かれた回路で、さまざまな論理回路を勉強したそうです。そういえば最近、データシートの回路図をみてその IC の動作を確認したことがありました。俺もちょっとずつ、論理回路のことがわかってきたのかもしれません (^_^;)
74HCシリーズのデコーダ/デマルチプレクサ IC ですが、
74HC137、74HC138、73HC139、74HC154、74HC155、74HC237、74HC238
といったところです。秋月電子通商にあるのは 74HC138 のみでした。(2023.8.7 現在)