bitGateLab Digital · 学ぶ
日本語
シミュレータを開く

学ぶ › トピック 1

論理ゲート:NOT、AND、OR、NAND、NOR、XOR、XNOR

読了時間:約 7 分 · bitGateLab チーム

信号機からプロセッサまで、デジタル回路はどれも、0 と 1 で判断を行う数種類の部品を組み合わせて作られています。それが論理ゲートです。この記事では、基本となる七つのゲートについて、記号の描き方、ブール代数での書き方、そして真理値表を学びます。最後に、NAND か NOR のどちらか一種類のゲートだけで、ほかのすべてのゲートを作れる理由も見ていきます。

論理レベル:0 と 1 の意味

デジタル回路では、どの信号も二つの状態のどちらかしか取りません。低い電圧(0 V 付近)を論理 0または偽、高い電圧(電源電圧付近、たとえば 5 V や 3.3 V)を論理 1または真と呼びます。ゲートは一つまたは複数の入力を受け取り、出力を一つ返します。その出力は、そのときの入力の値だけで決まります。過去のことは何も覚えていません。そのため、ゲートで作る回路は組み合わせ回路と呼ばれます。

ゲートを最も完全に記述する方法が真理値表です。入力のあらゆる組み合わせと、それぞれに対応する出力を並べた表です。入力が n 本あれば組み合わせは 2n 通りあるので、2 入力ゲートの表は 4 行、3 入力ゲートの表は 8 行になります。

ABY ABY AY ANDORNOT
形で見分けるゲート記号:AND(入力側が直線で出力側が丸い)、OR(入力側がへこみ、出力側がとがっている)、NOT(三角形に丸印)。

三つの基本ゲート

NOT(インバータ)

入力は一つだけで、その反対の値を出力します。0 が入れば 1 が出て、1 が入れば 0 が出ます。式では Y = A と書きます(A' や ¬A という書き方もあります)。記号は、先端に小さな丸印(バブル)の付いた三角形です。この丸印は「ここで反転する」ことを表す共通の目印です。

AY = A
01
10

AND(論理積)

出力が 1 になるのは、すべての入力が 1 のときだけです。積の形で Y = A·B、または単に Y = AB と書きます。直列につないだ二つのスイッチを思い浮かべてください。両方とも閉じているときだけランプが点灯します。

OR(論理和)

出力が 1 になるのは、少なくとも一つの入力が 1 のときです。和の形で Y = A + B と書きます。並列につないだ二つのスイッチに相当します。注意してください。ブール代数では 1 + 1 = 1 であり、2 にはなりません。

派生ゲート:NAND、NOR、XOR、XNOR

NAND は AND の後ろにインバータを付けたもので、Y = AB です。すべての入力が 1 のときだけ出力が 0 になります。NOR は OR を反転したもので、Y = A + B となり、すべての入力が 0 のときだけ 1 になります。記号では、どちらも出力に丸印が付きます。

XOR(排他的論理和)は、入力が異なるときに 1 になります。Y = A ⊕ B = AB + AB です。入力が三つ以上ある場合、XOR は 1 の個数が奇数のときに 1 になるので、パリティビットの計算に使われます。XNOR はその否定で、Y = A ⊕ B = AB + A B となり、入力が等しいときに 1 になります。つまり 1 ビットの一致比較器です。

2 入力の六つのゲートをまとめた真理値表は次のとおりです。

ABANDORNANDNORXORXNOR
00001101
01011010
10011010
11110001
確認のコツ:反転側の列(NAND、NOR、XNOR)は、元になるゲートの列の 0 と 1 を、行ごとにそっくり入れ替えたものになっています。

例:小さな回路の出力を求める。 A = 0、B = 1、C = 1 のとき、Y = (A + B) · C を計算します。

  1. OR:A + B = 0 + 1 = 1。
  2. 反転:1 = 0。
  3. C との AND:0 · 1 = 0。

結果は Y = 0 です。A = 0、B = 0、C = 1 の場合は、OR の出力が 0、インバータの出力が 1、AND の出力が 1 となるので、Y = 1 です。

NAND と NOR:万能ゲート

あるゲートだけを何個か使って NOT、AND、OR を作ることができ、したがってどんな論理関数でも実現できるとき、そのゲートは万能であるといいます。NAND と NOR はこの性質を持っています。これには実用上の意味があります。メーカーは一種類のセルだけを製造して設計全体を組み上げることができますし、皆さんも 74HC ファミリの IC 一種類だけで回路を丸ごと作ることができます(たとえば 74HC00 には 2 入力 NAND が四つ入っています)。

NAND だけで作る

NOR だけで作る

例:四つの NAND で作る XOR。 N1 = AB、N2 = A·N1、N3 = B·N1、Y = N2·N3 とします。四つの場合をすべて確認しましょう。

ABN1N2N3Y
001110
011101
101011
110110

Y の列は XOR の列と一致します。ゲート四つが、IC 一つに収まります。

よくある間違い

シミュレータで試してみよう

これらの表を覚えるいちばんの方法は、自分の手で作ってみることです。回路エディタでは、ゲートを置いて入力を切り替えると、出力がすぐに確認できます。そのあとで、ツールが計算する真理値表と見比べてください。

  1. 入力を二つ、NAND ゲートを一つ、出力を一つ配置して、配線します。
  2. 入力を四通りの組み合わせに切り替え、それぞれの出力を書き留めます。
  3. 回路の真理値表を生成し、この記事の表と比べます。
  4. 例で示した四つの NAND による XOR を組み、その真理値表が XOR 単体のものと一致することを確かめます。
  5. 仮想ブレッドボードで試したい場合は、74HC ファミリの NAND の IC を置いて電源をつなぎ、出力の LED を観察します。

練習問題

  1. Y = A + B の真理値表を書いてください。
    解答

    AB = 00、01、10、11 に対して、出力は 1、0、1、1 です。0 になるのは A = 0 かつ B = 1 のときだけです。

  2. 4 入力 AND の真理値表は何行ありますか。また、そのうち出力が 1 になるのは何行ですか。
    解答

    24 = 16 行です。出力が 1 になるのは、そのうち一行(1111)だけです。

  3. A = 1、B = 1、C = 1 のときの 3 入力 XOR の出力を求めてください。
    解答

    1 ⊕ 1 = 0、0 ⊕ 1 = 1 です。1 が三つ(奇数個)あるので、出力は 1 です。

  4. この方法で 2 入力 AND を作るには、NOR ゲートが最低いくつ必要ですか。
    解答

    三つです。二つの NOR をインバータとして使い(一つは A 用、もう一つは B 用)、三つ目の NOR に A と B を入れます。その出力は A + B = AB です。

これらのゲートを使った式の変形と簡単化については、ブール代数に進みましょう。