XOR回路とNAND回路をシーケンス制御で学ぶ|なぜNANDが重要なのか

前回の記事では、NOT回路、OR回路、AND回路を確認しました。
今回は少し発展して、XOR回路とNAND回路をシーケンス制御シミュレータで見ていきます。
XORやNANDは、最初は少し分かりにくく感じるかもしれません。 ただ、1つずつ条件を見ていくと、考え方はかなりシンプルです。
特にNAND回路は、デジタル回路やコンピュータの仕組みを理解するうえで重要です。 「NAND なぜ重要?」という疑問にも、接点回路とブール代数をつなげながら整理していきます。
XOR回路とは
XOR回路は、どちらか一方だけがONのときに出力がONになる回路です。
別名で、排他的論理和とも呼ばれます。
言葉にすると、次のような動きです。
AだけONならRがON
BだけONならRがON
AとBが両方OFFならRはOFF
AとBが両方ONならRはOFF
OR回路は「どちらか一方でもONならON」でした。 一方でXOR回路は、「両方ON」のときはOFFになります。
XOR回路を接点で作る
シーケンス制御の接点でXOR回路を作る場合、次の2つの条件を並列にします。
AがON かつ BがOFF
AがOFF かつ BがON
接点で表すと、次のようになります。
AのNO接点 と BのNC接点を直列
AのNC接点 と BのNO接点を直列
この2つの枝を並列に接続
XOR回路の真理値表は次の通りです。
| A | B | R |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
ブール代数では、XORを次のように表します。
R = A XOR B
R = A ⊕ B
R = A·¬B + ¬A·B
式は少し長くなりますが、意味はそのままです。
- Aが1でBが0
- Aが0でBが1
このどちらかのときにRが1になります。
NAND回路とは
次にNAND回路です。
NAND回路は、AND回路の反対の動きをする回路です。
AND回路は、AとBが両方ONのときだけ出力ONでした。 NAND回路はその逆で、AとBが両方ONのときだけ出力OFFになります。
AとBが両方ONのときだけ出力がOFF
それ以外は出力がON
NAND回路の真理値表は次の通りです。
| A | B | 出力 |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
ブール代数では、NANDを次のように表します。
R = NOT(A AND B)
R = ¬(A·B)
NAND回路を接点で作る
NAND回路は、いくつかの作り方があります。
論理だけを接点で表すなら、AのNC接点とBのNC接点を並列にする方法があります。
AがOFFなら出力ON
BがOFFなら出力ON
AとBが両方ONになったときだけ、どちらの枝も切れて出力OFF
ただし、シーケンス制御の回路としては「何を出力として見るか」をはっきり分ける必要があります。 今回使う回路では、Rは最終出力ではなく、AとBのAND条件で動作する中間リレーです。 そして、RのNC接点でLAMPを点灯させたときのLAMPの動きをNAND出力として見ます。
流れは次の通りです。
AのNO接点 と BのNO接点を直列にして、Rを動作させる
Rが動作していないときは、RのNC接点が閉じてLAMPが点灯する
Rが動作したときは、RのNC接点が開いてLAMPが消灯する
つまり、RそのものはANDの動きです。 一方で、RのNC接点を通ったLAMPは、ANDの反対であるNANDの動きになります。
| A | B | R | LAMP |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 |
この表のうち、NANDとして見る出力はRではなくLAMPです。 AとBが両方ONのときだけLAMPがOFFになり、それ以外ではLAMPがONになります。
AとBのNO接点を直列にしてRを動かす部分だけを見ると、RはAND回路です。NANDとして見るのは、RのNC接点で制御されるLAMPの動きです。記事内ではこのLAMPをNAND回路の出力として扱います。
NANDがデジタル回路で重要な理由
NAND回路は、デジタル回路の世界でとても重要です。
理由は、NAND回路だけを組み合わせることで、NOT、AND、ORなどの基本的な論理ゲートを作れるからです。
このような性質から、NANDは万能ゲートと呼ばれることがあります。
NANDだけでNOTを作る
NAND回路のAとBに同じ信号を入れると、NOT回路になります。
R = NAND(A, A)
R = ¬A
AがONなら、NANDの出力はOFF。 AがOFFなら、NANDの出力はON。
つまり、Aの反対の動きになります。
NANDだけでANDを作る
AND回路もNANDから作れます。
まずNANDで、ANDの反対を作ります。
X = NAND(A, B)
X = ¬(A·B)
その出力Xをもう一度NANDに同じ信号として入れると、NOTとして使えます。
つまり、別のNOTゲートを用意するのではなく、NAND(X, X) をNOTとして使います。
R = NAND(X, X)
R = A·B
NANDだけで考えるなら、NANDで作った結果をもう一度NANDのNOTとして反転すればAND回路になります。
NANDだけでORを作る
OR回路もNANDから作れます。
ここでは、ド・モルガンの法則という考え方を使います。
A + B = ¬(¬A · ¬B)
つまり、AとBをそれぞれNANDで反転してから、もう一度NANDに入れるとOR回路になります。
A' = NAND(A, A)
B' = NAND(B, B)
R = NAND(A', B')
R = A + B
ここでも、A' や B' を作るために別のNOTゲートを使っているわけではありません。
NANDに同じ信号を2つ入れることで、NANDをNOTとして使っています。
最初は式だけ見ると難しく感じますが、意味はこうです。
- Aではない
- Bではない
- その両方が成立する場合だけOFF
- それ以外はON
結果として、AまたはBがONなら出力ONになります。
コンピュータの中身も0と1の組み合わせ
コンピュータやデジタル回路は、突き詰めると0と1の組み合わせで動いています。
0か1
OFFかON
電気が通らないか、通るか
条件が成立しないか、成立するか
この考え方は、シーケンス制御の接点回路ともよく似ています。
シーケンス制御では接点を直列・並列に組み合わせます。 デジタル回路では、論理ゲートを組み合わせます。
見た目は違っても、ブール代数で考えるとかなり近い世界です。
まとめ
今回は、XOR回路とNAND回路をシーケンス制御シミュレータで確認しました。
ポイントは次の通りです。
- XOR回路は、AとBのどちらか一方だけがONのときに出力ON
- XORは
A·¬B + ¬A·Bと表せる - NAND回路は、AND回路の反対
- 今回の接点回路では、RはAND動作、RのNC接点で点灯するLAMPがNAND出力
- NAND出力はAとBが両方ONのときだけOFF
- NANDだけでNOT、AND、ORなどの基本回路を作れる
- そのため、NANDはデジタル回路で重要な万能ゲートと呼ばれる
シーケンス制御の接点回路を使うと、ブール代数や論理ゲートの考え方を目で見て理解しやすくなります。
最初は「接点がつながるか、切れるか」を追うだけで十分です。 そこから少しずつ、NOT、OR、AND、XOR、NANDという論理回路の見方に広げていくと、デジタル回路の基本も理解しやすくなります。
関連ツール
シーケンス回路エディター
電磁リレー・接点・コイル・ランプ・タイマーを配置して、シーケンス制御回路を作成・確認できるエディターです。
ツールを使う