シリーズ「コンピュータの部品のしくみ」 第4回

回路が「組になる」とは?

浮くか、流れっぱなしか

このシリーズでは、机の上に部品を並べて、ゲートの中身を組み立てている。

第1回では、電池の+側につながった線を 1 の線、−側につながった線を 0 の線と呼んだ。 スイッチを一列に並べると「どちらも」(AND)、横に並べると「どちらか」(OR)になった。

第2回では、電気で押すスイッチ、リレーを使った。 回路の答えで、次のスイッチを押せるようになった。

前回は、動く部分のない、電気で押せるスイッチ、トランジスタを使った。 押すところを押し口と呼んだ。 押し口が 1 のときにつながる 1 でつながるトランジスタと、0 のときにつながる 0 でつながるトランジスタの、2 種類がある。

1 でつながるトランジスタ 1 つで、入力を反対にする NOT を作ろうとすると、困ったことになった。

答えを出す線(出口)が、1 の線にも 0 の線にもつながらないときがある。 これを、浮いているといった。 浮いている出口は、1 でも 0 でもない。

出口を抵抗で 1 の線へ引っ張っておけば、浮かなくなる。 けれど今度は、0 を出しているあいだ、1 の線から 0 の線へ、電気が流れっぱなしになった。

浮くか、流れっぱなしか。 そこで、前回の終わりに、こう問いかけた。

0 でつながる種類を、どう使えばいいか。

上と、下

前回の、抵抗で引っ張る NOT を思い出してほしい。

出口と 0 の線のあいだに、1 でつながるトランジスタ。 出口と 1 の線のあいだに、抵抗。

困ったのは、抵抗がいつもつながっていることだった。 トランジスタがつながると、1 の線から抵抗とトランジスタを通って、0 の線まで、ひとつながりの道ができてしまう。

では、抵抗の代わりに、0 でつながるトランジスタを置いてみよう。 押し口には、下のトランジスタと同じ入力をつなぐ。

入力が 1 のとき。 下の、1 でつながるトランジスタは、つながる。 上の、0 でつながるトランジスタは、切れる。 出口は 0 の線にだけつながって、0 になる。

入力が 0 のとき。 今度は反対だ。 上がつながり、下が切れる。 出口は 1 の線にだけつながって、1 になる。

入力上(0 でつながる)下(1 でつながる)出口
0つながる切れる1
1切れるつながる0

入力を反対にして返している。 NOT だ。 トランジスタは 2 個。

出口を 1 の線へつなぐ側を上の組、0 の線へつなぐ側を下の組と呼ぼう。 いまはどちらも 1 個ずつだが、このあと増える。

押して、確かめる(NOT)

入力スイッチを倒して、上の組と下の組のどちらが出口をつなぐかを見てほしい。

上下の組の NOT シミュレータ

入力スイッチを倒して、上の組と下の組のどちらが出口をつなぐかを見てください

上の組下の組+電池−10入力倒す0 でつながる1 でつながる1 の線0 の線出口

上の組が、出口を 1 の線につないでいる。下の組は切れている。

入力上の組下の組出口
0つながる切れる1
1切れるつながる0

入力は 1 の線につないだ = 1、0 の線につないだ = 0。出口は、つながっている線の値

入力を 0 にすると、上の組の囲みが緑になる。 出口を 1 の線につないでいるのは、上の組だ。

入力を 1 にすると、下の組の囲みが灰色になる。 今度は、下の組が出口を 0 の線につないでいる。

どちらの押し方でも、出口に「?」の札は出ない。 浮いていない。

そして、前回の抵抗のような、オレンジ色のところもない。 上と下が同時につながることがないので、1 の線から 0 の線までのひとつながりの道が、どの押し方でもできないからだ。

浮かない。 流れっぱなしにもならない。 前回の 2 つの困りごとが、どちらも消えた。

上下 2 種類のトランジスタで組んだ NOT。入力 0 では LED が点き、入力 1 では消える

2 種類のトランジスタで組んだ NOT。左は入力 0、右は入力 1

2 入力にする

NOT ができた。 次は、入力を 2 つ(A と B)にしてみよう。

まず、下の組から考える。

下の組には、1 でつながるトランジスタを 2 つ使う。 A が押すものと、B が押すものだ。 これを、出口と 0 の線のあいだに、一列に(直列に)並べてみる。

第1回を思い出してほしい。 一列に並べたスイッチは、「どちらも」つながったときだけ、道が通った。 だから下の組は、A も B も 1 のときだけ、出口を 0 の線へつなぐ。

次は、上の組だ。

上の組は、下の組がつながらないときに、ちょうどつながってほしい。 そうでないと、出口が浮いたり、上下が同時につながったりしてしまう。

下の組がつながらないのは、どんなときか。 「A も B も 1」ではないとき。 つまり、A か B の、どちらかが 0 のときだ。

「どちらか」なら、第1回でもう知っている。 横に(並列に)並べればいい。 0 でつながるトランジスタを 2 つ、1 の線と出口のあいだに横に並べる。 A か B のどちらかが 0 なら、どちらかがつながって、出口を 1 の線へつなぐ。

表にしてみよう。

AB上の組(並列)下の組(直列)出口
00つながる切れる1
01つながる切れる1
10つながる切れる1
11切れるつながる0

出口が 0 になるのは、A も B も 1 のときだけ。

第1回の AND(「どちらも」)と比べてほしい。 AND は、両方 1 のときだけ 1 だった。 この表は、ちょうどその反対になっている。

AND の反対なので、NOT と AND をつなげて、NAND(ナンド)と呼ぶ。

押して、確かめる(NAND・NOR)

上のつまみで、NAND と NOR を切り替えられる。 まずは NAND のまま、A と B を倒して、表のとおりになるかを見てほしい。

NAND・NOR シミュレータ

入力スイッチ A・B を倒して、上の組と下の組のどちらが出口をつなぐかを見てください

上の組下の組+電池−10A10B0で0で1で1で?1 の線0 の線出口

上の組が、出口を 1 の線につないでいる。下の組は切れている。

AB上の組下の組出口
00つながる切れる1
01つながる切れる1
10つながる切れる1
11切れるつながる0

入力は 1 の線につないだ = 1、0 の線につないだ = 0。出口は、つながっている線の値。破線と ? は、どこにもつながっていない点

A は左から、B は右から、それぞれ上の組と下の組の押し口を 1 つずつ押している。

上の組は横に並び、下の組は真ん中に一列に並んでいる。 A も B も 1 にしたときだけ、下の組がつながり、上の組が切れる。

次に、つまみを NOR に切り替えてみてほしい。

上の組と下の組の並べ方が、入れ替わる。 上の組が一列に、下の組が横に並ぶ。

今度は、出口が 1 になるのは、A も B も 0 のときだけだ。 A か B のどちらかが 1 なら、下の組のどちらかがつながって、出口は 0 になる。

AB上の組(直列)下の組(並列)出口
00つながる切れる1
01切れるつながる0
10切れるつながる0
11切れるつながる0

第1回の OR(「どちらか」)の、ちょうど反対だ。 OR の反対なので、NOR(ノア)と呼ぶ。

ところで、押していると、一列に並んだ 2 つのあいだの線が、破線になって「?」の札が出ることがある。 NAND で A も B も 0 のとき。 NOR で A も B も 1 のときだ。

このとき、一列に並んだ 2 つは、どちらも切れている。 あいだの線は、1 の線にも 0 の線にもつながっていない。 浮いている。

では、前回の困りごとが、また起きたのだろうか。

起きていない。 前回困ったのは、浮いた線が、次のトランジスタの押し口につながるからだった。 押されるのか、押されないのか、決まらなくなる。

このあいだの線は、どの押し口にもつながっていない。 2 つのトランジスタの、つなぎ目でしかない。 それに、出口のほうは、ちゃんと上の組が 1 の線につないでいる。

浮いていて困るのは、次の押し口につながる線、つまり出口だけだ。 出口は、どの押し方でも浮いていない。

ちょうど反対

NAND と NOR を、もう一度並べてみよう。

ゲート上の組(0 でつながる)下の組(1 でつながる)
NAND並列(横に並べる)直列(一列に並べる)
NOR直列(一列に並べる)並列(横に並べる)

どちらも、上の組と下の組で、並べ方(直列と並列)がちょうど入れ替わっている。 トランジスタの種類も、上は 0 でつながる、下は 1 でつながる、と入れ替わっている。

NAND の下の組がつながるのは、「A も B も 1」のとき。 上の組がつながるのは、「A か B のどちらかが 0」のとき。

「A も B も 1」ではない、ということは、「どちらかが 0」ということだ。 この 2 つは、ちょうど裏表になっている。 どの押し方でも、どちらか一方だけが当てはまる。

だから、上の組と下の組は、両方つながることがない。 1 の線から 0 の線へのひとつながりの道はできず、流れっぱなしにならない。

そして、どちらもつながらないこともない。 出口は浮かない。

上の組と下の組は、いつもちょうど反対のつなぎ方をしている。 だから出口は、必ずどちらか片方だけにつながる。

NOT も同じだった。 入力 1 つを、上は「0 でつながる」で、下は「1 でつながる」で受けていた。

2 種類のトランジスタを、こうして互いに補い合う組にする作り方を、CMOS(シーモス)という。 C は Complementary、「互いに補い合う」という意味だ。 MOS は、前回出てきた、いまのトランジスタの形の名前。 1 でつながるトランジスタは nMOS、0 でつながるトランジスタは pMOS とも呼ばれる。

CMOS は、1963 年に、アメリカのフェアチャイルドという会社の研究所の、ワンラスとサーが発表した。 2 人は、2 種類のトランジスタを補い合うように組んだ回路が、待っているあいだ、ほとんど電気を使わないことを示した。 ワンラスが出した特許の題も、訳すとおおよそ「待っているあいだの電気が少ない、補い合う回路」だ。

まさに、今回見てきたことだ。 上と下が同時につながらないので、入力を倒さずに待っているあいだ、1 の線から 0 の線へは、電気がほとんど流れない。 (本物の部品では、ほんの少しだけ漏れる。けれど、前回の抵抗の流れっぱなしと比べれば、ないに等しい。)

物差しの表に、4 行目を足そう。

スイッチ押すもの動く部分切り替わるのにかかる時間待っているあいだの電気
押しボタン人の指ある?使わない
リレー電気(電磁石)ある(カチッと鳴る)数ミリ秒押しているあいだ、コイルに流しっぱなし
トランジスタ 1 種類電気ない?0 を出しているあいだ、流しっぱなし
上下の組(CMOS)電気ない?ほとんど使わない

動く部分がなく、待っているあいだ、電気をほとんど使わない。 いまのチップを作る技術の主役は、この CMOS だ。

AND は、遠回り

ここで、1 つ気になることがある。

第1回で最初に作ったのは、AND だった。 ところが、上下の組で素直に作れたのは、AND ではなく、その反対の NAND だった。

AND を、上下の組で直接作ることはできないのだろうか。

上下の組では、上の組には 0 でつながるトランジスタ、下の組には 1 でつながるトランジスタを使う、と決まっている。 本物のトランジスタは、この向きで使うと、出口をしっかり 1 の線や 0 の線につなげる。 逆の向きに置くと、うまく引っ張りきれない。 理由はトランジスタの中の話なので、このシリーズでは扱わない。

この決まりのもとで、入力のどれかを 0 から 1 に変えてみよう。 その入力が押す下の組のトランジスタはつながり、上の組のトランジスタは切れる。 出口は、0 の線に近づく向きにしか動かない。 0 から 1 に変わることは、決してない。

ところが AND は、B を 1 にしたまま、A を 0 から 1 に変えると、出口が 0 から 1 に変わらなければいけない。 だから、上下の組 1 段では、AND は作れない。 1 段の組は、いつも「反対」の向きにしか答えを出せないのだ。

AND がほしければ、NAND の後ろに NOT をつなぐ。 NAND の答えを、もう一度反対にするのだ。 トランジスタは 4 + 2 で 6 個になる。 OR も同じで、NOR の後ろに NOT をつなぐ。

ゲートトランジスタの数作り方
NOT2上 1 個・下 1 個
NAND4上は並列に 2 個・下は直列に 2 個
NOR4上は直列に 2 個・下は並列に 2 個
AND6NAND の後ろに NOT
OR6NOR の後ろに NOT

いちばん素直に作れるのは、AND や OR ではなく、NAND と NOR だ。 AND は、遠回りになる。 『記憶のしくみ』を読んだ人は、第1回の NOR を思い出してほしい。あの NOR の箱を開けると、中にはトランジスタ 4 個の、この組が入っていると思ってよい。

箱にする

ここまで、ゲートの中身を、スイッチの図で描いてきた。 けれど、トランジスタ 4 個の組を毎回描いていたら、大きな回路はとても描けない。

そこで次回からは、この上下の組を、「NAND」と書いた 1 つの箱として描く。 箱の中には、いつでも今回の組が入っている。

店で売っている NAND の IC(たとえば 74HC00 という型番)には、2 入力の NAND が 4 つ入っている。 部品の説明書(データシート)には、前回と同じく、使わない入力を浮かせないように、と書いてある。

ブレッドボードに挿した、NAND の IC(74HC00)

NAND が 4 つ入った IC。足は 14 本

素直に作れるのは NAND だった。 では、AND も、OR も、NOT も、NAND の箱だけで作ることはできないだろうか。

NAND だけで、ほかのゲートも作れないか。

次回は、NAND の箱だけを並べて、ほかのゲートを組み立ててみる。

参考文献