CMOSと論理回路
スイッチを組み合わせ、0と1を反転し、1ビットの加算まで進みます。

この週でできるようになること
- CMOSインバーターのHigh/Lowをトランジスタ状態から説明できる。
- 論理値と物理電圧を区別できる。
- NANDだけからNOT、AND、ORを構成できる。
- 組合せ回路と順序回路の違いを説明できる。
まず、具体的な場面から
pMOSがON、nMOSがOFF。出力は1。
pMOSがOFF、nMOSがON。出力は0。
半加算器の和は0、桁上がりは1。
見えてくること:相補的なスイッチで出力を高い電圧側か低い電圧側へつなぎ、論理値を作ります。
ここで初めて、見えてきた関係を言葉や記号でまとめます。
NOTは反転、NANDはANDの反転、XORは2入力が異なるとき1。Sumは和の下位ビット、Carryは桁上がりです。
なぜそうなる?
NANDへ同じAを2回入れると、A=0ならAND結果0を反転して1、A=1ならAND結果1を反転して0になります。だからNOTとして働きます。
講義ノートで詳しく読む
元のMarkdownにある仕組み・図・用語を、順番に確認します。
1. デジタル抽象化
デジタル回路の0と1は数学的な記号ですが、実物では電圧範囲として表現されます。
低い電圧範囲 → 論理0
高い電圧範囲 → 論理1
中間領域 → 保証されない
ノイズがあっても0と1を区別できる余裕をノイズマージンと呼びます。論理値は電圧そのものではなく、電圧を抽象化したものです。
2. CMOSインバーター
インバーターは入力を反転します。
VDD
│
pMOS
├── 出力 Y
nMOS
│
GND
両方のゲートへ入力 A を接続
| 入力A | pMOS | nMOS | 出力Y |
|---|---|---|---|
| 0 | ON | OFF | 1 |
| 1 | OFF | ON | 0 |
入力が安定した0または1のとき、理想的にはVDDからGNDへの直流経路がありません。これがCMOSの低い静的消費電力の基本です。切り替え時には、出力容量の充放電と一時的な貫通電流で電力を使います。
動的電力のおおまかな傾向は次の式で表せます。
P_dynamic ≈ α C V² f
αは切替頻度、Cは充放電する容量、Vは電源電圧、fはクロック周波数です。電圧が二乗で効くことが重要です。
3. 基本論理
NOT
Y = NOT A。0を1へ、1を0へ反転します。
AND
すべての入力が1のときだけ1です。
OR
少なくとも一つの入力が1なら1です。
NAND
ANDの結果を反転します。NANDは万能ゲートであり、NANDだけから任意の論理回路を構成できます。
4. NANDから作る
NOT A = NAND(A, A)
AND(A,B) = NOT(NAND(A,B))
OR(A,B) = NAND(NOT A, NOT B)
最後の式はド・モルガンの法則に基づきます。
5. XORと半加算器
XORは二つの入力が異なるとき1です。1ビットの加算では次の関係になります。
Sum = A XOR B
Carry = A AND B
| A | B | Sum | Carry |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
複数ビットの加算器は、これを発展させて作ります。CPUのALUへの最初の橋です。
6. 組合せ回路と順序回路
- 組合せ回路:出力は現在の入力だけで決まる。例:加算器、マルチプレクサ。
- 順序回路:内部状態を持つ。例:フリップフロップ、レジスタ、カウンター。
CPUには計算する組合せ回路と、途中結果や制御状態を保持する順序回路の両方が必要です。
例題で確かめる
1ビットの 1 + 1 を半加算器で計算しよう。
- 1と1は同じなので XOR の結果は0。
- 両方1なので AND の結果は1。
- 2進数では 10₂ なので、下位が0、桁上がりが1。
答え:Sum = 0、Carry = 1。
実習
Nand2Tetris Web IDEのProject 1を使用します。
NotをNAND一つで作る。AndをNANDと作成済みNotで作る。Orをド・モルガンの法則で作る。- すべての入力組合せをテストする。
- 余力があればXorまで作る。
説明課題
CMOSインバーターが入力0を出力1へ変換する流れを、pMOSとnMOSの状態を含めて説明してください。
練習問題
元ノートの小テストです。まず自分で答えを考え、必要なら下の答えを開いてください。
CMOSインバーターへ0を入れると、どちらのMOSFETがオンになるか。
答えと考え方を見る
pMOSがオン、nMOSがオフ。
安定状態のCMOSで静的電力が小さい基本的理由は何か。
答えと考え方を見る
安定した0/1では、理想的にVDDからGNDへの直流経路が切れているため。
NANDだけでNOTを作る接続方法を書け。
答えと考え方を見る
一つのNANDの二入力へ同じAを入れる。
NOT A = NAND(A,A)。1 + 1の半加算器出力SumとCarryはいくつか。
答えと考え方を見る
Sum=0、Carry=1。
レジスタは組合せ回路か、順序回路か。
答えと考え方を見る
順序回路。