電気と半導体|Week 4

CMOSと論理回路

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

0と1は魔法の数字ではなく、回路では電圧の範囲だよ。まず入力を反転する小さな回路から。
回路図タブレットを持ち、学習者を案内する半導体設計者の先生

この週でできるようになること

  • CMOSインバーターのHigh/Lowをトランジスタ状態から説明できる。
  • 論理値と物理電圧を区別できる。
  • NANDだけからNOT、AND、ORを構成できる。
  • 組合せ回路と順序回路の違いを説明できる。

まず、具体的な場面から

入力Aが0

pMOSがON、nMOSがOFF。出力は1。

入力Aが1

pMOSがOFF、nMOSがON。出力は0。

AとBが両方1

半加算器の和は0、桁上がりは1。

見えてくること:相補的なスイッチで出力を高い電圧側か低い電圧側へつなぎ、論理値を作ります。

ここで初めて、見えてきた関係を言葉や記号でまとめます。

NOT A = NAND(A,A) / Sum = A XOR B / Carry = A AND B

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と1は同じなので XOR の結果は0。
  2. 両方1なので AND の結果は1。
  3. 2進数では 10₂ なので、下位が0、桁上がりが1。

答え:Sum = 0、Carry = 1。

実習

Nand2Tetris Web IDEのProject 1を使用します。

  1. NotをNAND一つで作る。
  2. AndをNANDと作成済みNotで作る。
  3. Orをド・モルガンの法則で作る。
  4. すべての入力組合せをテストする。
  5. 余力があればXorまで作る。

説明課題

CMOSインバーターが入力0を出力1へ変換する流れを、pMOSとnMOSの状態を含めて説明してください。

練習問題

元ノートの小テストです。まず自分で答えを考え、必要なら下の答えを開いてください。

  1. CMOSインバーターへ0を入れると、どちらのMOSFETがオンになるか。

    答えと考え方を見る

    pMOSがオン、nMOSがオフ。

  2. 安定状態のCMOSで静的電力が小さい基本的理由は何か。

    答えと考え方を見る

    安定した0/1では、理想的にVDDからGNDへの直流経路が切れているため。

  3. NANDだけでNOTを作る接続方法を書け。

    答えと考え方を見る

    一つのNANDの二入力へ同じAを入れる。NOT A = NAND(A,A)。

  4. 1 + 1の半加算器出力SumとCarryはいくつか。

    答えと考え方を見る

    Sum=0、Carry=1。

  5. レジスタは組合せ回路か、順序回路か。

    答えと考え方を見る

    順序回路。