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

 複雑な機能を持った回路は,基本的なAND回路,OR回路,XOR回路,NOT回路の組み合せで実現します。1つのIC(じゃり石)の中には,これらの回路が4個~6個ぐらい内蔵されています。したがって,回路の作成において,ICの中に使われない回路が残ってしまうという無駄が生じることがあります。例えば,NOT回路が1個だけ必要なのに7404(6個のNOT回路が内蔵されている)を使うと,5個の回路が使われません。このような場合に便利なのがNAND回路です。NAND回路を工夫して使うと,AND回路,OR回路,XOR回路,NOT回路と同じ機能を実現できます。今回は,不思議で便利なNAND回路の使い方を説明しましょう。

図1●4個のNAND回路を内蔵した7400の内部

●NAND回路の機能

 74シリーズの最初の型番である7400は,NAND回路です。NAND回路は,NOT ANDの略で「ナンド」と読みます。1個の7400の中は,4個のNAND回路が入っています(図1[拡大表示])。NAND回路は,AND演算の出力を反転(0なら1に,1なら0に)するものです(表1)。

表1●NAND演算の真理値表

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

 NAND回路の出力側に白丸が付いていることに注目してください。このような部分を「負論理(ふろんり)」と呼びます。負論理とは,有効を0で表すという意味です。前回説明したAND回路(7408)の出力は,有効を1で表しました。すなわちAND演算の結果が真なら1(+5V)を出力するものでした。このような考え方を「正論理(せいろんり)」と呼びます。それに対してNAND回路は,AND演算の結果が真なら0(0V)を出力するというものなので,「正」の反対の「負」すなわち負論理だというわけです。

図2●NOT回路の白丸は出力が反転することを表す
図3●NAND回路の入力を結ぶとNOT回路になる
 正論理や負論理のことがピンと来ないという人は,回路図でICのピンに白丸が付いている部分は,出力が反転すると考えればOKです。NOT回路(7404)の出力側にも白丸が付いていたことを覚えているでしょう(図2)。NOT回路は,入力を反転するものだからです。

●NAND回路でNOT回路を実現する

 NAND回路を使って,他の4種類の回路と同じ機能を実現してみましょう。まずNAND回路でNOT回路を作ってみます。そのためには,NAND回路の2つの入力を1つに結ぶだけです。これによって,NAND回路の2つの入力ピンには,両方1または両方0しか入力できなくなります。表1を見てください。NAND回路の入力が両方1なら出力は0になります。NAND回路の入力が両方0なら出力は1になります(図3[拡大表示])。これは,NOT回路の機能と同じです。

図4●NAND回路の出力にNOT回路をつなぐとAND回路になる

●NAND回路でAND回路を実現する

 今度は,NAND回路でAND回路を作ってみましょう。NAND回路の機能は,AND回路の出力を反転するものです。反転された出力をさらに反転すれば,もとに戻ります。すなわち,NAND回路の出力にNOT回路をつなげばAND回路と同じ機能になるのです。図4[拡大表示]では,NAND回路の出力に,NAND回路で作ったNOT回路をつないでいます。2つのNAND回路でAND回路を実現できたことになります。

図5●NAND回路の入力にNOT回路をつなぐとOR回路になる

●NAND回路でOR回路を実現する

 OR回路は「入力のどちらか一方が1なら出力が1になる」という機能を持っています。ここで,もう一度だけ表1に示したNAND演算の真理値表を見てください。「入力のどちらか一方が0なら出力が1になる」という機能になっていますね。このことから,NAND回路の2つの入力ピンをぞれぞれNOT回路で反転させれば,OR回路と同じ機能になることがわかります。「入力のどちらか一方が(NOT 0)=1なら出力が1になる」だからです。図5[拡大表示]では,NAND回路の入力に,NAND回路で作ったNOT回路をつないでいます。3つのNAND回路でOR回路を実現できたことになります。

●NAND回路でXOR回路を実現する

 最後に,NAND回路でXOR回路を作ってみましょう。これは,ちょっと複雑になります。まずは,XOR演算の真理値表を見てください(表2)。

表2●XOR演算の真理値表

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

 ここでAND回路を思い出してください。AND回路はどちらか一方の入力が0だと出力は0になります。これは見方を変えると,AND回路の入力2が1のときは出力はAND回路の入力1そのまま。入力2が0のときは出力は0ということです。

 これでXOR回路を実現できそうです。入力がどちらも1の場合は,AND回路の入力2に0を入力しそれ以外の場合は,AND回路の入力2に1を入力します。こうした機能を持った回路とは,そう,NAND回路です。

 ですから,AND回路の入力1にOR回路の出力を入れてやり,AND回路の入力2にはNAND回路の出力を入れてやります。OR回路とAND回路には,入力信号を分岐させて,同じ信号が入るようにします。これでXOR回路のできあがりです。

図6●OR回路+NAND回路+AND回路でXOR回路になる
図7●AND回路+NOT回路でNAND回路になる
 これまでの説明で,OR回路は3つのNAND回路,AND回路は2つのNAND回路で作れることを述べました。図6[拡大表示]の回路図を追って,表2の真理値表と同じ結果になることを確認してください。

●AND回路とNOT回路でNAND回路を実現する

 NAND回路を使って,AND回路,OR回路,XOR回路,NOT回路のいずれも実現できることがわかりました。それでは,逆にNAND回路(7400)が手元になかったらどうしましょう。電車に乗って,秋葉原や日本橋まで買いに行きますか?そんな必要はありません。手元にAND回路(7408)とNOT回路(7404)があるなら,それらを使ってNAND回路を実現できるからです。NAND回路は,AND回路の出力を反転するものです。したがって,AND回路の出力ピンにNOT回路の入力ピンをつなげば,NOT回路と同じ機能になります(図7[拡大表示])。

 今回の説明の中で,6つのNAND回路でXOR回路を実現する部分を難しいと感じたことでしょう。XOR回路の実現に当たっては,AND回路の入力2の信号によって,入力1をそのまま出力したり,入力1にかかわらず強制的に0を出力しました。このようなAND回路は,信号の流れを制御するゲートとして使われているのです。そこで次回は,基本的な演算回路をゲートとして使う方法を紹介します。お楽しみに!

■変更履歴
「これでXOR回路を実現できそうです。入力がどちらも1の場合は,AND回路の入力2に1を入力しそれ以外の場合は,AND回路の入力2に0を入力します」としていましたが、正しくは「これでXOR回路を実現できそうです。入力がどちらも1の場合は,AND回路の入力2に0を入力しそれ以外の場合は,AND回路の入力2に1を入力します」です。お詫びして訂正します。本文は修正済みです。 [2007/09/18]