CMOSとは:インバーター・NOT回路のしくみ
前回の記事で、NMOS(1でON)とPMOS(0でON)という、スイッチとしての性質が真逆な2体のトランジスタを学びました。これら2つを「ペア」として扱い、一つの目的のために組み合わせた構造をCMOS(相補型MOS)と呼びます。
CMOSとは:NMOSとPMOSの組み合わせ
CMOSは「NMOSFETとPMOSFETを組み合わせた、効率的な回路構造」のことです。
「CMOS」はComplementary Metal Oxide Semiconductorの略で、日本語では相補型金属酸化膜半導体と呼ばれます。
ここで重要なのは、CMOSは特定の半導体デバイスそのものを指す名前ではなく、あくまで「p型とn型をどう配置するか」という回路の作り方(方式)を指します。
CMOSの構造
CMOS回路は、2種類のトランジスタを組み合わせます。例えば、上側にPMOS、下側にNMOSを配置します。
CMOS構造では、PMOSのソースを電源(Vdd)に接続し、NMOSのソースをGND(グランド)に接続します。
そして、2つのゲートを1つの入力線でつなぎ、その中間地点から出力を取り出します。この「電源と地面の間にスイッチを2つ置く」というシンプルな形が、すべての計算の出発点になります。
では、このように接続したCMOS回路はどんな挙動をするのでしょうか。
CMOSの動作:信号を反転するインバーター(NOT回路)
CMOS回路を用いると、入力信号を反転させるインバーターとして機能します。すなわち、入力0の場合1を、入力1の場合は0を出力します。
CMOSがどうやって信号をひっくり返すのか、その仕組みを見ていきましょう。
ここでは分かりやすく、電源電圧(Vdd)を1.0V、GNDを0Vと仮定し、それぞれをデジタルの「1」と「0」に対応させて考えます。
- 「0(0V)」を入力した場合
- 「1(1V)」を入力した場合
下側のNMOSはOFFになり、上側のPMOSがONになります(※1Vの電源に対し、ゲートが0Vとなり、相対的に負電圧が印加されるため)。出力は電源(Vdd)とつながり、「1(1V)」が出力されます。
上側のPMOSはOFFになり、下側のNMOSがONになります。出力は地面(GND)とつながり、「0(0V)」が出力されます。
このように、CMOS回路は入力値を反転させる「インバーター・NOT回路」として機能します。
NOT回路の「真理値表」
デジタル回路の世界では、入力と出力の関係をまとめた表を「真理値表(しんりちひょう)」と呼びます。インバーター(NOT回路)の真理値表は非常にシンプルです。
| 入力 (A) | 出力 (NOT A) |
|---|---|
| 0 | 1 |
| 1 | 0 |
ただ0を1に、1を0に反転するだけのこのシンプルな表が、実は巨大なコンピュータの計算を支える基礎となります。では、この「反転」が具体的にどのような役に立つのか見ていきましょう。
0・1反転の計算事例:2進数の引き算と補数
「反転させるだけで何ができるの?」と思うかもしれませんが、NOT回路(インバーター)はコンピュータの引き算において極めて重要な役割を担っています。
コンピュータの内部では、引き算を直接行うのではなく「引きたい数字の『補数』を作って足し算する」という処理が行われます。この補数を作るプロセスでNOT回路が活躍します。
インバーターを使った「7 - 3」の計算手順
4ビットの計算(7 - 3 = 4)を例に、インバーターがどのように計算を支えているか見てみましょう。
1. 数字を2進数にする
まず、10進数の7は「0111」、3は「0011」と表されます。
2. インバーターで「3」を反転させる
引く数である3(0011)をNOT回路に通すと、全てのビットが反転し「1100」となります。
3. 反転した数に1を足して「-3相当」を作る(補数)
反転させた1100に1を足すと、「1101」になります。これがコンピュータの世界で「-3」として機能する値(補数)となります。
4. 足し算を実行して、はみ出た桁を捨てる
元の7(0111)に、先ほどの補数(1101)を足し算します。結果は「10100」となりますが、4ビットの枠組みからはみ出た一番左の「1」を除外します。すると、残ったのは「0100」、10進数に戻すと「4」となり、正しく計算できました。
インバーターによる「反転」のおかげで、引き算を足し算の回路だけで実現できました。このように補数を利用することで、足し算用の回路をそのまま引き算にも流用でき、CPUの構造を劇的にシンプルに保つことができるのです。
前の講座









