高等学校情報/情報の科学/論理回路と半導体
はじめに

ダイオードという半導体素子を用いた回路により、物理的にANDやORの処理を実行できる。
はじめに

結論を先に示すと、
はじめに

である。
はじめに

説明の都合上、ダイオード回路で説明するが、実際の半導体ではMOS半導体で論理素子を実装している。
はじめに

しかし、このMOS半導体による説明はやや複雑なので、初学者にむけて、まずダイオードで原理を説明する。
はじめに

では、まずダイオードについて、学んでいこう。
はじめに

p型半導体とn型半導体を接合し(pn接合)た物体が、一方向のみに電流を流す。
はじめに

このような部品をダイオード(diode)という。
はじめに

p側に正電圧を掛け、n側に負電圧を掛けた時、電流が流れる。
はじめに

いっぽう、p側に負電圧を描け、n側に正電圧を掛けても、電流が流れない。
はじめに

回路において、ダイオードが電流を流す向きを順方向(じゅんほうこう)という。順方向とは反対向きを逆方向という。ダイオードの逆方向には、電流は流れない。
はじめに

このように一方向に流れる仕組みは、ダイオードでは、つぎのような仕組みで、電流が流れるからである。
はじめに

ダイオードのp側に正電圧をかけ、いっぽうn側に負電圧をかけると、p側では正電極の正電圧からホールが反発して接合面へと向かい、いっぽうn側では電子が負電極から反発して接合面へと向かう。そして、接合面で、ホールと電子がであい、消滅する。この結果、見掛け上、正電荷が、正電極から負電極に移動したのと、同等の結果になる。
はじめに

そして、正電極から、つぎつぎとホールが供給されるので、電流が流れ続ける。
はじめに

いっぽう、p側に負電圧を描け、n側に正電圧を掛けた時、p側ではホールは電極(電極には負電圧が掛かってる)に引き寄せられ、接合面からは遠ざかる。同様にn側では電子が電極(正電圧が掛かってる)に引き寄せられ、接合面からは遠ざかる。
はじめに

この結果、接合面には、余分なホールも余分な電子もない状態となり、よって接合面の付近にはキャリアがなく、この接合面付近のキャリアの無い部分は空乏層(くうぼうそう、depletion layer)と呼ばれる。
はじめに

そして、それ以降は、ホールも電子も、もうどこにも移動の余地がないので、よって電流が流れない。
はじめに

このようにして、ダイオードは、P側の電圧が、N側の電圧よりも高い場合にのみ、電流を流す。
ダイオードによる論理計算

なぜ、この回路図がAND処理なのか、見ていこう。
ダイオードによる論理計算

まず、図のCは論理計算「A and B」に対応する結果である。
ダイオードによる論理計算

説明の簡単化のため、Aの電圧は0Vか4Vのどちらかを取るとしよう。同様に、Bの電圧は0Vか4Vのどちらかを取るとしよう。 (5Vでなく4Vとしたのは、抵抗Rがあるため、電圧が少し下がるからである。べつに4.5Vでもいい。)
ダイオードによる論理計算

さて、AとBの電圧の両方とも4V以上の場合にのみ、Cが4Vになる。
ダイオードによる論理計算

なぜなら、
ダイオードによる論理計算

これらの結果を表にまとめると、4Vを「H」として、0Vを「L」とすれば、
ダイオードによる論理計算

となる。
ダイオードによる論理計算

一方、論理計算 A and B とは、
ダイオードによる論理計算

という計算である。AとB が両方とも「真」の場合だけ(つまり英文でいうなら Both A and B の場合)、出力が「真」になるので、AND計算 というのである。
ダイオードによる論理計算

「真」をHに対応させ、「偽」をLに対応させれば、
ダイオードによる論理計算

表から分かるように、図の電気回路は、A and B の計算結果と同じである。
ダイオードによる論理計算

よって、ダイオードを用いた回路で、A and B を計算できる。
ダイオードによる論理計算

また、この回路図のように、論理計算のAND計算をできる回路のことをAND回路という。
ダイオードによる論理計算

さて、コンピュータのデジタル信号では、0と1で処理をするのであった。(右図を参照せよ。)
ダイオードによる論理計算

信号処理のため、ダイオードによるORゲートについて、Hを1に置き換え、Lを0に置き換える。
ダイオードによる論理計算

これが、0と1からなる数値によってデジタル信号を扱う場合の、AND計算の結果である。
ダイオードによる論理計算

ダイオード回路図を毎回、作図するのは手間なので、下記のような記号を使うべきとされる。
ダイオードによる論理計算

このような記号を論理記号(ろんりきごう、logic symbol)という。
ダイオードによる論理計算

なお、AND回路の回路図中に抵抗器Rをつける理由は、電圧降下の他にも、ダイオードに、一定以上の大きさの電流が流れ過ぎるとダイオードが壊れるので、電流が流れ過ぎないようにさせるためという役目もある。なので、このような(半導体部品などの)保護の目的のための抵抗器を「保護抵抗」などと言う場合もある。
ダイオードによる論理計算

しかも、ダイオードやトランジスタなどの半導体部品は、たいてい、導通したさいの抵抗値が低い(ダイオードの抵抗値は、ほぼ 0Ω である)ので、保護抵抗をつけてないと、すぐに故障してしまう。
ダイオードによる論理計算

AND回路にかぎらず、一般にダイオードやトランジスタなどの半導体部品をもちいた回路では、半導体部品に一定以上の大きさの電流が流れると故障するので、適切な抵抗値の抵抗器をつける事で、半導体部品を保護する必要がある。
ダイオードによる論理計算

後述するOR回路でも、抵抗器は同様に、半導体部品に大電流が流れ過ぎないように保護している。
ダイオードによる論理計算

電圧は、
ダイオードによる論理計算

となる。(Hは電圧が高い状態。Lは電圧が低い状態。)
ダイオードによる論理計算

これに、Hを論理計算の「真」に対応され、Lを「偽」に対応させれば、
ダイオードによる論理計算

となる。A か B の少なくともどちらかが「真」であれば(つまり英文でいうなら A or B の場合)、出力が「真」になるので、OR算 というのである。なお、AとBが両方とも「真」であっても、少なくとも片方が「真」である事にかわりはないので、AとBが両方とも「真」の場合にも A or B は「真」になる。
ダイオードによる論理計算

表から分かるように、図の電気回路を真偽に置き換えた結果Cは、A or B の計算結果と同じである。
ダイオードによる論理計算

よって、ダイオードを用いた回路で、A or B を計算できる。
ダイオードによる論理計算

また、この回路図のように、論理計算のOR計算をできる回路のことをOR回路という。
ダイオードによる論理計算

さて、コンピュータのデジタル信号では、0と1で処理をするのであった。(右図を参照せよ。)
ダイオードによる論理計算

信号処理のため、ダイオードによるORゲートについて、Hを1に置き換え、Lを0に置き換える。
ダイオードによる論理計算

これが、0と1からなる数値によってデジタル信号を扱う場合の、OR計算の結果である。
ダイオードによる論理計算

NOT回路とは、出力に、入力とは反対の結果を出す回路のことである。
ダイオードによる論理計算

つまり、
ダイオードによる論理計算

のような結果を出す回路である。
ダイオードによる論理計算

デジタル信号の 0 , 1 で表記すれば、NOT回路の計算は、次表になる。
ダイオードによる論理計算

次の図のように、トランジスタという素子を使って、NOT計算が可能である。
論理記号

コンピュータの論理回路は、原理的には、下記のAND回路、OR回路、NOT回路の3つだけの組み合わせで、さまざまな論理を表すことができる。
論理記号

ANDを「論理積」、ORを「論理和」、NOTを「否定」ともいう。
論理記号

ダイオード回路図を毎回、作図するのは手間なので、下記のような記号を使うべきとされる。
論理記号

AND回路の記号は、下図のようになる。
論理記号

このような記号を論理記号(ろんりきごう、logic symbol)という。
論理記号

OR回路の論理記号は、下図のようになる。
論理記号

NOTの論理回路の論理記号は、次のようになる。
2進数の計算

まず、2進数の1桁どうしの足し算の結果は、次のようになる。
2進数の計算

答えの十の位が1になる場合とは(つまり、くりあがり が起きる場合とは)、入力AとBが両方とも1の場合である。
2進数の計算

つまり、くりあがり(carry)の有無を、AND回路を使って書ける。
2進数の計算

この論理回路を半加算器(はん かさんき、half adder)という。
2進数の計算

図中「C」は、2桁目の数字である。・
2進数の計算

図中「S」は、1桁目の数字である。(なお、sum(和)に由来する。)
2進数の計算

真理値表で、確認しよう。
2進数の計算

まず、加算の真理値表は、次のようになる。
2進数の計算

いっぽう、半加算器の回路図で、入力と出力は、図のようになる。
2進数の計算

入力が1と0の場合も、同様に作図できる。
2進数の計算

加算の真理値表と、半加算器の計算結果を比べると、一致している。
2進数の計算

2桁以上の2進数の足し算には、全加算器(ぜん かさんき、full adder)を使う。
2進数の計算

全加算器の説明については、省略する。
引き算

コンピュータによる減算(引き算)の方法については、単元『高等学校情報/情報の科学/負数と小数のデジタル表現』で説明する。
引き算

コンピュータでは、負数を扱うとき、普通は「補数」(ほすう)と言う技術を使う。じつは「半減算器」という回路も知られているが、しかし普通はコンピュータのマイナスの処理では「半減算器」の回路を使わずに、代わりに「補数」と「加算器」の組み合わせを使うのが普通である。くわしくは上記のリンク先の単元で説明する。
NAND

NANDとは、NOT AND のことであり、ANDゲートの出力にNOTゲートをつけたものである。
NAND

※ 実教および第一学習社の「情報I」で掲載を確認。
NAND

論理回路は、左図の通り。
NAND

さて、NANDを組み合わせるだけで、ANDやORやNOTを作れる。この事は、集積回路をつくる場合、とても重要である。
NAND

なぜなら、同じパターンの繰り返しで、論理計算を一通り作れるので、集積度を向上させやすいから、である。
NAND

なお、NAND回路を物理的に実現するための部品には、CMOS(シーモス)という電子デバイスを使う。
NAND

このほか、NORゲートや、XORゲートがある。
NAND

※ 日本文教出版がNORを紹介。(wikiでは図は省略する。検定教科書でも図は無い。)
NAND

XORは「排他的論理和」ともいう。XORの読みはエックスオアで良い(※第一の見解)。
※ 範囲外: デジタル信号の実現手段は多値論理

コンピュータでは「0」と「1」の2とおりの数の組み合わせで計算する。しかし、電子部品では、そうではない。
※ 範囲外: デジタル信号の実現手段は多値論理

たとえばCD(コンパクトディスク)を考えてみよう。CDのモーターの回転速度が、ある瞬間、ほんの0.01%だけ遅くなったとしよう。
※ 範囲外: デジタル信号の実現手段は多値論理

もし、「110001111」みたいに2値信号だけで情報を送信している場合、もし「000」のときにモーターなどの回転が遅くなったとして、「0」状態の滞在時間が長くなってしまい「110000001111」みたいになってしまったら、どうやって訂正するのだろうか?
※ 範囲外: デジタル信号の実現手段は多値論理

こういう場合の対策として、信号を2通りではなく、3通り以上で送信するという方法が有効だろう。(実際のCDやDVDが下記の仕組みかどうかは、残念ながら知らない。)
※ 範囲外: デジタル信号の実現手段は多値論理

つまり、例えば
※ 範囲外: デジタル信号の実現手段は多値論理

とする。
※ 範囲外: デジタル信号の実現手段は多値論理

すると、さきほどの「110001111」は
※ 範囲外: デジタル信号の実現手段は多値論理

人間が読みやすくすため、「CA CA BA BA BA CA CA CA CA」と書くことにしよう。
※ 範囲外: デジタル信号の実現手段は多値論理

すると、もし一時的にモーターなどの回転が遅くなったりしても、 「CA CA BA BA BA AAAAA CA CA CA CA」と書くことにしよう。
※ 範囲外: デジタル信号の実現手段は多値論理

のように、意味をもたない信号が入ったりするだけなので、これを「1」や「0」と区別できる。
※ 範囲外: デジタル信号の実現手段は多値論理

あるいは、 もし、「CA CA BA BA BBBBA CA CA CA CA」のようになっても、「BBBBA」を「BA」に訂正すればいい。
※ 範囲外: デジタル信号の実現手段は多値論理

もし、「BかCのひとつの信号の代わりには必ずAが来る」と決めておけば、さきほどの例のように「BBBB」と続く場合は速度低下が起きていると検出できる。
※ 範囲外: デジタル信号の実現手段は多値論理

このように、3通り以上の値を使って信号を送信するという方法が、速度変化による誤検出を防ぐ方法のひとつとして有効である。
※ 範囲外: デジタル信号の実現手段は多値論理

例としてCDをあげたが、おそらく半導体なども似たような仕組みだろう。CPUの周波数だって、ほんの0.00001%くらい、温度や使用年数などによって微妙にズレる可能性があるだろう。
※ 範囲外: デジタル信号の実現手段は多値論理

なお、この例であげた信号「A」のように、信号のひくい状態と区別して、「信号そのもののない状態」を表現する値のことを工学用語で「ヌル値」(ヌルち、null value)などという。
※ 範囲外: デジタル信号の実現手段は多値論理

われわれが「0」「1」の2値論理だと思ってる信号は、正確には3値以上の信号から、ヌル値の連続などの無意味な部分を除いて、意味をもつ残りの信号を2値の信号に分類したものであろう。
※ 範囲外: デジタル信号の実現手段は多値論理

パソコンで「aaaaaaaaaa」などと連続して同じ文字を入力するとき、OSにもよるが、よくよく時間に注目してみると、さいしょaボタンを押してから、そのままaボタンを押したままにすると、一文字だけ「a」と表示されるのが0.5秒くらいつづいてから、つづいて0.1秒に1個くらいのペースで次々と「a」が入力されていって、「aaaaaaaaaa」となったりする。
※ 範囲外: デジタル信号の実現手段は多値論理

いっぽう、aボタンを押してから、すぐに手を離して、またすぐにaを押すと、0.5秒ほどの待機時間は無く、次の「a」が入力され、「aa」のようになる。
※ 範囲外: デジタル信号の実現手段は多値論理

このような文字入力の仕組みでも、入力のない状態を仮に「\null」とすると、
※ 範囲外: デジタル信号の実現手段は多値論理

(aを押して0.3秒が経過した時点で、aボタンから指を離した)のように入力された場合、パソコンはこれを文字「a」の入力と判別しているわけである。また、\null の状態になった時点で、待ち時間を(0.5秒ではなく)ゼロ秒にリセットしているわけである。なので、次にまた「a」を押すと、待ち時間がゼロなので、すぐに一文字だけまた「a」が追加されるわけである。
※ 範囲外: デジタル信号の実現手段は多値論理

このように、入力信号が無い状態を検出することは、キーボード入力文字の検出においても重要である。