矢沢 久雄 グレープシティ アドバイザリースタッフ

 AND回路,OR回路,XOR回路,NOT回路の用途は,入力された情報(0または1)を論理演算して結果(0または1)を出力することだけではありません。コンピュータの中を流れる電気信号(0または1のデジタル情報)を制御することにも利用されます。電気信号を制御するとは,電気信号を通すかどうかを決定することです。このような用途があることから,AND回路,OR回路,XOR回路,NOT回路のことを,それぞれANDゲート,ORゲート,XORゲート,NOTゲートと呼ぶことがあります。ゲート(gate)とは,「門」という意味です。今回は,ゲートを電気信号が通れるかどうかを制御する方法を紹介します。回路図の中でMIL記号だけを示し,使用するICの全体図を省略する場合があることをご了承ください。回路図では,そうすることが一般的だからです。

●AND回路をANDゲートだと解釈する

 表1は,AND回路(AND演算)の真理値表です。AND回路の機能は「2つの入力がどちらも1なら出力が1となり,それ以外は出力が0になる」というものです。このような解釈でAND回路を見ると,AND演算のためのものであるとしか考えられません。ところが,前回簡単に述べたように,AND回路は電気信号を制御するゲートにもなり得るのです。

表1●AND演算の真理値表

入力X入力Y出力X NAND Y
1(真)1(真)1(真)
1(真)0(偽)0(偽)
0(偽)1(真)0(偽)
0(偽)0(偽)0(偽)

図1●AND回路をANDゲートと考える
 AND回路をANDゲートであると考えるには,ちょっとだけ発想の転換が必要です。AND回路のMIL記号の入力の一方を折り曲げて図1のようにしてみましょう。入力Xによって入力YがAND回路(ANDゲート)を通り抜けられるかどうか制御していることになります。通り抜けられるとは,入力と出力が同じになる(入力がそのまま出力に通り抜ける)ということです。表2のように,入力Xが1なら入力Yは通り抜けられて,入力Xが0なら,入力Yは通り抜けられません(常に0となる)。

表2●ANDゲートの機能

入力X入力Y出力
1(真)1(真)または0(偽)1(真)または0(偽)←通り抜けられる
0(偽)1(真)または0(偽)常に0(偽)←通り抜けられない

●ORゲート,XORゲート,NOTゲートの機能

図2●OR回路をORゲートと考える
 OR回路をORゲートとみなした場合は,どう制御できるのでしょう?入力Xが0なら,入力Yを素通りさせ,入力Xが1なら,入力Yにかかわらず出力が1になります。これは,0という電気信号を通すかどうかを制御するゲートだといえます(図2表3)。前回も説明しましたが,このように0を有効な情報と考えることを「負論理」と呼びます。ORゲートは負論理のゲートです。それに対して,1を有効な情報を考えることを「正論理」と呼びます。ANDゲートは正論理のゲートです(論理演算に詳しい人なら,OR演算は負論理のAND演算とみなせるのだから当然のことだと分かるでしょう)。

表3●ORゲートの機能

入力X入力Y出力
1(真)1(真)または0(偽)常に1(真)←0が通り抜けられない
0(偽)1(真)または0(偽)1(真)または0(偽)←0が通り抜けられる

図3●XOR回路をXORゲートと考える
 XOR回路は,入力Xが1なら入力Yを反転(0を1に,1を0)して通し,入力Xが0なら入力Yを素通りさせるゲートとなります(図3表4)。

表4●XORゲートの機能

入力X入力Y出力
1(真)1(真)または
0(偽)
0(偽)または
1(真)←反転する
0(偽)1(真)または
0(偽)
1(真)または
0(偽)←素通りする

 NOT回路は,無条件で入力を反転させるゲートです。これは,説明するまでもないでしょう。ただし,論理演算として0が1になり1が0になると考えるのでなく,NOTゲートによって入力信号が無条件で反転すると考えることがポイントです。

図4●ICが出力した電気信号を一方のICだけに入力したい場合は?
図5●4個のスリー・ステート・バス・バッファを内蔵した74426の内部
図6●ICを回路から電気的に切り離す
図7●コンピュータを構成するICはバスで相互に接続されている

●スリー・ステート・バス・バッファ

 複雑な回路では,1つの信号線に複数のICのピンが接続される場合があります。例えば図4[拡大表示]では,IC1の出力ピンがIC2とIC3の入力ピンに接続されています。IC1が出力した電気信号をIC2だけに入力したい場合はどうしたらよいでしょう?このような場合は「スリー・ステート・バス・バッファ(3 state bus buffer)」と呼ばれるICを使います。

 74シリーズの中には「スリー・ステート・バス・バッファ」がいくつかあります。例えば74426は,スリー・ステート・バス・バッファを4個内蔵したICです。出力側に白丸のない三角形のMIL記号がスリー・ステート・バス・バッファを表しています(図5[拡大表示])。

 三角形の図記号の入力側から出力側に電気信号が素通り(入力1なら出力1,入力0なら出力0)するわけですが,それは三角の横から出た制御信号が1のときだけです。これはANDゲートの機能に似ています。ただし大きな違いが1つあります。それは,スリー・ステート・バス・バッファの制御信号が0のときは,入力にかかわらず出力がハイ・インピーダンス(high impedance)となることです。ハイ・インピーダンスとは,電気を受け付けない状態のことです。つまり制御信号が0なら,ICが回路から電気的に切り離された状態になるのです。

 先ほどの図4の場合,IC3の入力ピンの前にスリー・ステート・バス・バッファを入れて,ハイ・インピーダンス状態にすれば,IC3は電気信号を受け付けなくなり,IC1が出力した電気信号はIC2だけに入力されます(図6[拡大表示])。

 コンピュータの中には,「バス(bus)」と呼ばれる信号線のセットがあります。バスは,コンピュータの頭脳となるプロセサの持つアドレス信号線,データ信号線,制御信号線を引き出したものです。他の様々なICのピンは,用途に応じてバスに接続されています。つまり同じバスという信号線のセットに複数のICのピンが接続されているのです(図7[拡大表示])。このような配線状態であっても,電気信号が混線することなく,目的のICに送られるのは,スリー・ステート・バス・バッファが使われているからです。高機能なLSIは,その内部にスリー・ステート・バス・バッファの機能を備えているのが一般的です。

 皆さんは「単純な論理演算やゲートの機能を持ったICだけで高度なコンピュータの機能が実現できるのだろうか?」と疑問に思われていることでしょう。大丈夫なのです。基本的なICを組み合せると,コンピュータに必要とされる様々な機能を実現できます。本当です。次回は,その証拠として,基本的なICだけで“記憶”を実現する方法を紹介します。お楽しみに!