邏輯閘是什麼?開關怎麼變成會算的晶片
邏輯閘(logic gate)是用幾個電晶體接成的小電路:它看輸入線是 0 還是 1,照一條固定的規則,決定輸出線是 0 還是 1。最基本的有三種:NOT(進來 1 就出 0,反過來)、AND(兩個都是 1,才出 1)、OR(有一個是 1,就出 1)。晶片會做加法、比大小、照條件決定下一步,靠的就是很多很多個邏輯閘,一層一層組起來。
電晶體這個小開關長什麼樣子,可以先讀「電晶體是什麼?」;這篇從開關往上講。
晶片裡的 0 和 1,到底是什麼?
0 和 1 是一條線上電壓的高低。線接到電源,電壓高,是 1;接到地(電壓是零的那一邊),電壓低,是 0。邏輯閘做的事,就是看輸入線的電壓,用開關把輸出線接到電源或接到地。
現在的晶片,開關有兩種,配成一對用。一種是閘門加上電壓(輸入是 1)才通,叫 n 型,放在輸出和地之間,負責把輸出拉到 0;另一種剛好相反,閘門沒有電壓(輸入是 0)才通,叫 p 型,放在輸出和電源之間,負責把輸出拉到 1。這種配法叫 CMOS(CMOS 是什麼?)。
最簡單的邏輯閘:NOT 怎麼「反過來」?
NOT 也叫反相器,只有一條輸入、一條輸出,用一對開關就做得出來:
- 輸入是 1:接地的那一個通了,接電源的那一個斷了。輸出接到地,是 0。
- 輸入是 0:接地的那一個斷了,接電源的那一個通了。輸出接到電源,是 1。
所以開關「通」不代表輸出是 1:輸入是 1 的時候,通的那一個反而把輸出拉到 0。
不切換的時候,兩個開關只有一個通,電源和地之間沒有直直通過去的路,所以幾乎只剩一點點漏掉的電。這是 CMOS 省電的原因。
兩個開關串起來、並起來,差在哪?
想像水管上的閘門:
- 串起來:同一條水管上,前後有兩道閘門。兩道都打開,水才過得去;有一道關著,就過不去。
- 並起來:兩條水管並排,各有一道閘門。開一道,水就過得去;兩道都關,才過不去。
開關也一樣:兩個串起來,要兩個都通,這條路才通;兩個並起來,有一個通,這條路就通。邏輯閘就是用這兩種接法,排出「什麼時候接到地、什麼時候接到電源」。
NAND、NOR 怎麼接?AND、OR 又是怎麼來的?
有兩條輸入 A 和 B 的時候,每條輸入各管一對開關,一共四個:
- NAND(反及閘):接地這一邊,兩個開關串起來;接電源這一邊,兩個並起來。A 和 B 都是 1,接地的路才通,輸出是 0;只要有一個是 0,接電源的路就有一條通,輸出是 1。意思是「AND 再反過來」。
- NOR(反或閘):反過來接,接地這一邊並起來,接電源這一邊串起來。有一個是 1,輸出就被拉到 0;兩個都是 0,輸出才是 1。意思是「OR 再反過來」。
輸入是 1 時,通的是接地那一個,所以照這種接法(n 型在接地那一邊、p 型在接電源那一邊),一層做出來的天生就是「反過來」的那幾種。要 AND(及閘),就在 NAND 後面再接一個 NOT,一共六個開關;要 OR(或閘),就在 NOR 後面接一個 NOT。
| 輸入 A | 輸入 B | NAND | AND | NOR | OR |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 1 | 0 | 1 |
為什麼說只用 NAND 就能做出全部?
數學上已經證明:任何一種「看幾個 0 和 1、決定出 0 還是 1」的規則,都能只用 NAND 接出來,NOR 也可以。例如 NAND 的兩條輸入接在一起,就是 NOT。不過實際的晶片不會只用一種,哪一種省地方、跑得快,就用哪一種。
邏輯閘怎麼做加法?
晶片裡的數字用二進位寫,每一位只有 0 和 1。就像十進位 9 加 1 要進位,二進位 1 加 1 也要進位:這一位寫 0,往前一位進 1。
一位數的加法,只有四種情況:
| 輸入 A | 輸入 B | 進位 | 這一位 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
「進位」那一欄,兩個都是 1 才是 1,就是 AND。「這一位」那一欄,兩個不一樣才是 1,這種規則叫 XOR(互斥或閘),用四個 NAND 就接得出來。一個 AND 加一個 XOR,就是一位數的加法器,叫半加器。
再把右邊那一位進過來的進位也一起加,就是全加器。把一排全加器排起來,每一位把進位交給左邊那一位,就像小學的直式加法,很長的數也加得起來。
從加法到處理器,中間還有什麼?
會加之後,再往上組:
- 比大小:兩個數相減,看答案是正、是負,還是零。減法在晶片裡也是用加法器做的。
- 選一個:用一條線當控制,它是 1 就讓第一個答案通過,是 0 就讓第二個通過。這也是邏輯閘接成的。
- 照條件決定下一步:把比大小的結果接到「選一個」的控制線,就能決定接下來做哪一段程式。
處理器的核心,就是這些會算、會比、會選的電路,加上照著指令一步一步指揮它們的控制電路。
算的時候,還得把數字暫時記住。把兩個 NOT 頭尾接成一圈:第一個出 1,第二個就出 0,這個 0 又讓第一個繼續出 1,它自己卡住了,只要通著電就一直記著。處理器裡記數字的小格子,就是從這個想法來的(記憶體和處理器差在哪?)。
一顆晶片有多少個邏輯閘?是一個一個畫的嗎?
一個兩條輸入的 NAND 要四個電晶體,一個 NOT 要兩個。一顆手機晶片上有上百億個電晶體,就算只有一部分拿來做邏輯閘,也要用億來算。
這麼多,不可能一個一個畫。設計的人用硬體描述語言,寫出「這一塊電路要做什麼」;設計軟體再把它翻成一個個邏輯閘,排好位置、接好線(晶片是怎麼設計出來的?)。
每個邏輯閘慢一點、漏一點,為什麼整顆晶片就差很多?
速度:輸入變了,輸出要過一點點時間才跟著變。大部分的數位電路跟著一個像節拍器的訊號動作,叫時脈;手機處理器一秒有幾十億拍,一拍不到十億分之一秒。訊號在一拍裡要穿過一串邏輯閘,走完才能進下一拍。每個閘慢一點,一整串就慢,節拍就得放慢。
耗電:每個閘切換一次,要把一點電充進去、再放掉;關著的時候,開關還會漏一點點電,叫漏電。一個少到可以不管,乘上幾十億個,就是整顆晶片的耗電和發熱(晶片為什麼會耗電?)。
在 fab24hr 裡
遊戲裡看不到邏輯閘。主線「晶片的一生」跟著虛構的助聽器晶片「螢火」。助聽器這一類的機器,一般要把聲音轉成數字來處理(類比晶片和數位晶片差在哪?),處理數字的電路,就是一層一層的邏輯閘。
第 1 章「12 片怎麼分」,你是研發線的研發整合工程師,要決定第一批 12 片晶圓怎麼分:除了中間值,還有兩種電晶體都偏慢、都偏快,或一快一慢,這幾種偏法叫角落。那兩種電晶體就是 n 型和 p 型,邏輯閘裡配成一對的開關;「角落」名詞卡的「多知道一點」說,一快一慢的比較麻煩,兩種步調對不上,電路可能直接出錯。第 10 章「待機電流」,你是封測廠的測試工程師,要決定晶片什麼都不做時漏的電,多高就擋下來。
遊戲裡的公司、晶片、人物和數字都是虛構的;邏輯閘怎麼接、怎麼組成會算的電路,照公開的一般資料寫。其他行話可以到「半導體晶圓廠的行話,白話解釋」查。
在遊戲裡你會在哪裡遇到它遊戲裡看不到邏輯閘。主線「晶片的一生」第 1 章「12 片怎麼分」,你要決定助聽器晶片「螢火」的第一批 12 片裡,幾片故意把兩種電晶體做得偏快、偏慢,或一快一慢;邏輯閘裡配成一對的,就是這兩種開關。
在 fab24hr 的研發線上,你要決定幾片晶圓故意把邏輯閘裡那兩種開關做偏,看一顆助聽器晶片撐不撐得住。
從第 1 章開始:決定 12 片怎麼分給老師:這一篇可以搭配「在課堂上玩 fab24hr」用在課堂上。
引用這篇〈邏輯閘是什麼?開關怎麼變成會算的晶片〉,fab24hr,更新。https://fab24hr.com/blog/logic-gates/
課堂與非營利可以免費使用,投影、放進講義、印給學生都可以,請註明 fab24hr;不能販售,也不能改成自己的作品。 看到錯誤?回報問題
其他文章
這個網站的其他頁
- fab24hr 是什麼?:兩種玩法、四個班、常見問題、資料來源
- 晶片的一生:一顆晶片從下線、試產、量產、晶圓測試、封裝到出貨,每一段在做什麼
- 晶圓廠工程師的一天:PE、EE、PIE、製造部的分工,一天的時間線
- 晶圓廠裡有誰:技術員、製造部、製程、設備、廠務、整合、品保、生管、光罩、研發、課長、設備商,到封測廠的測試與封裝:每個角色一天怎麼過
- 半導體晶圓廠的行話,白話解釋:MO、Hold、Q-time、OCAP 這些行話,一個一句白話
- 半導體入門:跟著晶片的一生:半導體入門課程:跟著晶片的一生,圖解講義、投影片、必讀文章、3D 機台與討論題,自學或上課都能用
- 晶圓廠的機台,拆開來看:31 種半導體設備在做什麼(蝕刻機、曝光機、CMP、天車、封膠機…),每一台都能打開 3D 模型拆開來看
- 在課堂上玩 fab24hr:半導體教案:20/40 分鐘課程流程、一章或一區一節課(3D 機台、遊戲、文章)、討論題、學習單、老師常問
- 介紹與媒體素材:宣傳影片、遊戲畫面、介紹文字與基本資料