💻 章節筆記:邏輯閘
各位電腦架構的未來尖兵,你好!歡迎來到構成你身邊所有電子裝置的微觀世界。本章「邏輯閘」是「電腦組織與架構」這一部分的絕對基礎。
你可能會覺得電腦運作起來像魔法一樣,但其實它們是由一層層極其簡單且可靠的決策所構成的。邏輯閘就是這些電子積木——它們是執行基礎布林代數(Boolean algebra)運算的小型電路。掌握了邏輯閘,就等於了解 CPU 如何執行每一次計算、指令以及記憶體儲存操作。讓我們開始吧!
1. 數位基礎:二進位與布林邏輯
電腦透過電力運作,電力只有兩種狀態:開(ON)或關(OFF)。我們使用二進位系統來表示這些狀態:
- ON 或高電壓 = 1 (True/真)
- OFF 或低電壓 = 0 (False/假)
邏輯閘接收一個或多個二進位輸入,並根據特定的邏輯規則產生單一的二進位輸出。
關鍵概念:布林代數
布林代數是邏輯的數學。它只處理「真 (1)」與「假 (0)」。每一個邏輯閘都直接對應一個布林運算子。
什麼是真值表(Truth Table)?
真值表至關重要。它是一種數學表格,用來計算並展示邏輯電路對於所有可能的輸入組合(A、B 等)所對應的輸出(Q)。
如果你有 N 個輸入,真值表中就會有 \(2^N\) 種可能的組合。例如,2 個輸入(A 和 B)意味著 \(2^2 = 4\) 行。
2. 三大核心邏輯閘
這三種邏輯閘構成了所有數位電子產品的基石。
2.1. AND 閘(與閘)
AND 閘僅在所有輸入皆為 1 時,才會產生 1 (True) 的輸出。
- 布林表達式: \(Q = A \cdot B\)(讀作 "A AND B")
- 符號: 「D」形符號。(請參考課程大綱圖 3.7.6)
- 類比: 銀行金庫需要兩把鑰匙(A 和 B)同時轉動才能開啟。若鑰匙 A AND 鑰匙 B 都被使用,金庫才會打開 (Q=1)。
AND 閘真值表(2 個輸入)
輸入 A | 輸入 B | 輸出 Q
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
2.2. OR 閘(或閘)
OR 閘只要至少有一個輸入為 1,就會產生 1 (True) 的輸出。
- 布林表達式: \(Q = A + B\)(讀作 "A OR B")
- 符號: 彎曲的符號。(請參考課程大綱圖 3.7.6)
類比: 一個房間的電燈有兩個開關(A 和 B)。只要按下開關 A OR 開關 B,燈就會亮起 (Q=1)。
OR 閘真值表(2 個輸入)
輸入 A | 輸入 B | 輸出 Q
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
2.3. NOT 閘(反閘/非閘)
NOT 閘只有一個輸入,其作用單純是將輸入反轉(將 0 變為 1,或將 1 變為 0)。
- 布林表達式: \(Q = \bar{A}\)(讀作 "NOT A" 或 "A bar")
- 符號: 一個三角形,輸出端帶有一個小圓圈(俗稱「氣泡」)。(請參考課程大綱圖 3.7.6)
- 類比: 它是一個「相反」開關。如果輸入為啟動 (1),輸出即為未啟動 (0)。
NOT 閘真值表(1 個輸入)
輸入 A | 輸出 Q
0 | 1
1 | 0
3. 進階與衍生邏輯閘
這些邏輯閘是由核心邏輯閘組合而成,但因為太過常見,它們擁有自己的符號和規則。
3.1. XOR 閘(互斥或閘)
XOR 閘在輸入不同時產生 1 (True) 的輸出,若兩者皆為 1 則輸出 0。
- 布林表達式: \(Q = A \oplus B\)(讀作 "A XOR B")
- 符號: 與 OR 閘相似,但輸入端多了一條彎曲的線。(請參考課程大綱圖 3.7.6)
- 類比: 解釋 XOR 最好的例子是雙向走廊的電燈開關系統。如果只按了 A OR 只按了 B,電燈狀態會改變 (Q=1)。如果兩個同時被按,則狀態不變 (Q=0)。
XOR 閘真值表(2 個輸入)
輸入 A | 輸入 B | 輸出 Q
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
3.2. NAND 閘(反與閘)
NAND 閘就是一個 AND 閘後面跟著一個 NOT 閘。輸出是 AND 輸出的反相。
- 布林表達式: \(Q = \overline{A \cdot B}\)
- 符號: AND 符號輸出端帶有一個小圓圈。(請參考課程大綱圖 3.7.6)
NAND 閘真值表(2 個輸入)
輸入 A | 輸入 B | 輸出 Q
0 | 0 | 1
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
3.3. NOR 閘(反或閘)
NOR 閘就是一個 OR 閘後面跟著一個 NOT 閘。輸出是 OR 輸出的反相。
- 布林表達式: \(Q = \overline{A + B}\)
- 符號: OR 符號輸出端帶有一個小圓圈。(請參考課程大綱圖 3.7.6)
NOR 閘真值表(2 個輸入)
輸入 A | 輸入 B | 輸出 Q
0 | 0 | 1
0 | 1 | 0
1 | 0 | 0
1 | 1 | 0
4. 解讀與繪製邏輯電路
本單元的核心技巧是在三種表達形式之間轉換:布林表達式、邏輯圖與真值表。
4.1. 從邏輯圖寫出布林表達式
從左側的輸入開始,逐級向右推導,直到達到最終輸出 Q。
電路範例(A 和 B 是 AND 閘的輸入,C 是 NOT 閘的輸入。兩者的輸出進入一個 OR 閘)。
步驟 1: 識別第一個邏輯閘(AND)的輸出: \(X = A \cdot B\)
步驟 2: 識別第二個邏輯閘(NOT)的輸出: \(Y = \bar{C}\)
步驟 3: 最後一個邏輯閘(OR)以 X 和 Y 作為輸入: \(Q = X + Y\)
最終布林表達式: \(Q = (A \cdot B) + \bar{C}\)
4.2. 完成複雜電路的真值表
對於複雜電路,請在真值表中建立對應於每個內部邏輯閘輸出的「中間欄」。這能將問題拆解成易於管理的步驟!
針對電路 \(Q = (A \cdot B) + \bar{C}\)(有 3 個輸入,所以共有 \(2^3=8\) 行):
- 第 1、2、3 欄:輸入 A, B, C(全部 8 種組合)。
- 第 4 欄:中間變數 X(A AND B 的輸出)。
- 第 5 欄:中間變數 Y(NOT C 的輸出)。
- 第 6 欄:最終輸出 Q(X OR Y 的輸出)。
步驟說明: 對於 A=1, B=0, C=1 的輸入行:
- X = A AND B = 1 AND 0 = 0
- Y = NOT C = NOT 1 = 0
- Q = X OR Y = 0 OR 0 = 0
記憶小撇步: 始終在真值表中繪製對應於布林表達式內部括號的中間欄位。
5. 邏輯應用:算術與記憶
邏輯閘不只是理論,它們是處理器內部算術邏輯單元 (ALU) 的基礎組件。
5.1. 半加法器(Half-Adder)
半加法器是一個能將兩個單一位元二進位數字(A 和 B)相加的電路。因為 \(1+1 = 10_2\),我們需要兩個輸出:和 (Sum, S) 與 進位 (Carry, C)。
- 輸入: A 和 B(兩個相加的位元)。
- 輸出: 和 (S) 和 進位 (C)。
邏輯與結構:
1. 和 (S) 僅在 A 和 B 不同時為 1。 這正是 XOR 閘的定義!
S = \(A \oplus B\)
2. 進位 (C) 僅在 A 和 B 皆為 1 時為 1(因為 \(1+1\) 產生進位)。 這正是 AND 閘的定義!
C = \(A \cdot B\)
若要建構半加法器電路,你需要繪製一個 XOR 閘和一個 AND 閘,兩者皆接收輸入 A 和 B,其中 XOR 的輸出為 S,AND 的輸出為 C。
5.2. 全加法器(Full-Adder)
在進行多位元相加時,必須納入前一個位元產生的進位。全加法器執行三個輸入的加法:
- 輸入 A、輸入 B(兩個相加的位元)
- 進位輸入 ($C_{in}$)(來自前一位元相加的進位)
輸出維持為 和 (S) 與 進位輸出 ($C_{out}$)。
(你必須能夠辨識並追蹤全加法器電路的邏輯,但不需要自己從頭設計建構它。)
5.3. 邊緣觸發 D 型正反器(D-Type Flip-Flop,記憶單元)
邏輯閘不只執行計算,還被用來建構記憶體。D 型正反器是我們需要理解的最簡單的循序邏輯(記憶體)形式。
它被稱為 1 位元記憶單元,因為它正好可以儲存一個位元(0 或 1)。
關鍵組件與運作:
- 資料輸入 (D): 這就是你想要儲存的位元(0 或 1)。
- 時脈輸入 (CLK): 此輸入決定了何時應該儲存資料。
- 輸出 (Q): 儲存的值。
邊緣觸發機制:
D 型正反器是邊緣觸發(Edge-triggered)的,這意味著它只會在時脈訊號狀態改變的精確瞬間(例如從 0 變為 1,稱為上升邊緣)關注資料輸入 (D)。
- 時脈訊號變為高電位(例如上升邊緣)。
- 讀取當前的資料輸入 (D) 狀態並立即儲存於內部。
- 此儲存值會輸出於 Q。
- 在下一次時脈訊號變為高電位之前,無論資料輸入 (D) 如何變化,輸出 Q 都保持不變。
想像它就像一台相機:資料輸入就是場景,時脈訊號就是快門按鈕。相機只會在按下按鈕的那一刻捕捉場景;直到你下次按下按鈕之前,儲存的照片是不會改變的。
✔ 章節總結:邏輯閘
你已經了解簡單的二進位決策如何轉化為 CPU 和記憶體的核心組件。請記住:
- 六大邏輯閘(AND, OR, NOT, XOR, NAND, NOR)定義了所有基本的數位邏輯。
- 使用真值表來系統性地追蹤任何電路的輸出。
- 半加法器使用 XOR 得到「和」,使用 AND 得到「進位」。
- D 型正反器是一個由時脈訊號控制的記憶單元,它在時脈邊緣捕捉資料輸入,並將其保持不變直到下一個時脈邊緣。
請持續練習在布林表達式、邏輯圖與真值表之間進行轉換——這就是考試成功的關鍵!