第 6 章 數位邏輯
本章提要 6-1 布林代數 6-2 常見的邏輯閘
前言 數位邏輯(Digital Logic)泛指在分析或設計數位電路時, 所應瞭解的理論與運算, 而這些理論與運算是以布林代數為數學基礎, 並涉及布林函數、真值表和邏輯閘等等, 本章將依序介紹這些主題與相關的概念。
6-1 布林代數 在 1854 年英國數學家喬治•布耳 (George Boole) 發表關於邏輯運算的代數理論, 世人為了紀念他的卓越貢獻, 便將這門代數學稱為布林代數 (Boolean Algebra)。而布林函數則是布林代數的核心, 因此我們首先來認識布林函數。
布林函數的定義 凡是由以下元素所組成的代數運算式, 即稱為布林函數 (Boolean Function): 二元變數 (Binary Variable):『二元』意味著此種變數只有 0 或 1 兩種值, 不允許為其它值。通常用 W、X 、Y 、Z 或 A、B、C、D 代表二元變數。 二元常數 (Binary Constant):代表固定不變的數字, 同樣也只能是 0 或 1 。
布林函數的定義 括弧和等號:包括『(』、『)』、『[』、『]』、『{』、『}』和『=』等符號。 邏輯運算符號 (Logical Operator):最基本的邏輯運算為 AND、OR 和 NOT 等 3 種, 所有的邏輯運算都可以用這 3 種來表示, 詳細的說明請見後文。
布林函數的定義 典型的布林函數表示方式如下: F(X,Y) = X + Y 等號左邊的 F(X,Y) 意味著『布林函數 F 的值與 X、Y 兩個變數有關係』, 至於到底是什麼關係呢?看看等號的右邊就知道了-『X + Y』, 其中『+』是運算符號(Operator), 又稱為運算子;參與運算的 X 和 Y 則稱為運算元 (Operand)。
布林函數的定義 至於括弧的使用時機, 則是為了指明運算的優先順序, 舉例而言: F(X,Y,Z) = (X + Y)Z
布林函數的定義 那麼意思就不同了!變成是先執行 Y 和 Z 的運算, 所得的結果再與 X 運算。關於比較詳細的運算說明請見後文。
邏輯運算符號 在組成布林函數的元素中, 『二元變數』、『常數』、『括弧』和『等號』都很容易理解, 唯有第 4 項的『邏輯運算符號』對讀者而言可能是初次接觸, 因此我們要特別說明。 基本的邏輯運算符號區分為以下 3 種:
邏輯運算符號 AND:AND 運算的特性是『所有運算元都為 1 時, 結果才會是 1, 否則結果一律是 0』。通常以實心原點『•』代表 AND 運算符號, 假設 X 和 Y 經過 AND 運算的結果等於 Z, 則記為: Z = X•Y
邏輯運算符號 讀作『Z 等於 X AND Y』, 不過大多數人會省略『•』, 直接記為『Z = XY』。只有在 X = Y = 1 時, Z 才是 1;在其它情形, Z 都是 0。 若以布林函數來表示 Z = X•Y, 則記為: F(X,Y) = X•Y
邏輯運算符號 以生活實例來比喻, AND 運算就像是串聯兩個開關的電燈系統, 如下圖:
邏輯運算符號 只有在兩個開關都接通 (On) 時, 燈泡才會點亮;假如有任一個開關沒接通, 燈泡就不會點亮。
邏輯運算符號 OR:OR 運算的特性是『只要任一個運算元為 1 時, 結果就會是 1, 否則結果一律是 0』。 通常以加號『+』代表 OR 運算符號, 假設 X 和 Y 經過 OR 運算的結果等於 Z, 則記為: Z = X + Y
邏輯運算符號 讀作『Z 等於 X OR Y』, 在 X 或 Y 其中任一個為 1 時, Z 就等於 1;若 X =Y = 0, 則 Z 便是 0。 以布林函數來表示 Z = X + Y, 則記為: F(X,Y) = X+Y
邏輯運算符號 以生活實例來比喻, OR 就像是並聯兩個開關的電燈系統, 如下圖:
邏輯運算符號 只要兩個開關之中的任一個為接通 (On), 燈泡就會點亮;除非兩個開關都沒接通, 燈泡才不會點亮。
邏輯運算符號 NOT:NOT 運算的特性是『若原本是 1, 則運算後為 0;若原本是 0, 則運算後為 1』, 簡單說就是把 0 變 1、1 變 0。 通常以加上『′』或『—』代表 NOT 運算, 假設 X 經由 NOT 運算後的結果等於 Y, 則記為: Y = X
邏輯運算符號 讀作『Y 等於 NOT X』。若以布林函數來表示, 則記為: F(X) = X
邏輯運算的特色 大家都學過加、減、乘、除四則運算, 現在遇到邏輯運算, 是否發現這兩者的差異? 邏輯運算所處理的對象不是 0 就是 1 , 不可能冒出其它整數或是諸如 2.5、9.8 的小數。 而且這種 0 與 1 應該說是『邏輯 0』和『邏輯 1』, 它們代表兩種狀態 (State), 而不是數量, 不應被當成阿拉伯數字的 0 與 1, 拿來比較大小或做四則運算。
邏輯運算的特色 因此, 在邏輯運算的世界裡, 沒有所謂的『0 小於 1』、『1 大於 0』或『1 加 1 等於 2』這種觀念。 雖然在前面介紹的 AND 和 OR 運算中出現『F(X,Y) = X + Y』、『F(X,Y) = XY』這種函數, 但是千萬不要視為『數量的關係式』, 因為它們真正代表的是『狀態的關係式』。
真值表 認識了布林函數之後, 接著要來瞭解何謂真值表 (Truth Table)。若我們將布林函數中每個變數的可能值都列出來, 並記下相對應的函數值, 如此所得的表格便是真值表。 舉例而言:
真值表 布林函數 F(X,Y) = X+Y 當 X = 0、Y = 0 時, F(X,Y) = 0;
真值表 將上面 4 列轉換為真值表如下:
真值表 依此類推, 我們就可以寫出布林函數 F(X,Y,Z) = X+Y+Z 的真值表如右:
真值表 也就是說, 從布林函數可以推算出真值表;反過來講, 根據真值表也能推導出布林函數。布林函數與真值表其實是一體的兩面! 對於一個有 N 個變數的布林函數, 可以推算出有 N+1 欄、2n+1 列的真值表, 如下圖:
真值表
0 與 1 在數位電路上代表的意義 在數位電路中, 通常是以電壓的高低代表 0 與 1 兩種狀態, 高電壓代表 1, 低電壓代表 0, 這種設計稱為『正邏輯』 (Positive Logic);然而, 也可以用低電壓代表 1, 高電壓代表 0, 這種設計稱為『負邏輯』 (Negative Logic)。 採用負邏輯設計時必須特別註明, 否則一般人會搞不清楚。
0 與 1 在數位電路上代表的意義 不同特性的電子元件, 對於高電壓和低電壓有不同的判定標準。 以 TTL (Transistor Transistor Logic, 電晶體-電晶體-邏輯) 元件為例, 將 2 ~ 5 伏特視為高電壓;0 ~ 0.8 伏特視為低電壓。 至於 0.8 ~ 2 伏特之間則視為不穩定狀態, 又稱為轉態 (Transition )。轉態期間的訊號既不為 0、也不為 1, 而是無效訊號。
0 與 1 在數位電路上代表的意義 必須等到其電壓進入高電壓範圍或低電壓範圍時, 才當成有效訊號, 而這也是電子元件會造成延遲 (Delay) 的原因之一。
布林代數的基本定理 在實務應用上, 愈簡單的布林函數, 代表愈簡單的邏輯電路, 也意味著可以用較少的邏輯元件來製造, 如此便能節省成本。 當我們根據真值表推導出來的布林函數, 未必是最簡單的形式, 或許還可以利用一些基本定理來簡化。這些基本定理又被稱為『恆等式』或『公理』, 但是無論用那個名稱, 其內容和觀念都是相同的。
布林代數的基本定理 交換律 (Commutative Law) 結合律 (Associative Law) X+Y = Y+X (X +Y)+Z = X+(Y +Z) (X •Y)•Z = X•(Y •Z)
布林代數的基本定理 分配律 (Distributive Law) 吸收律 (Absorption Law) X•(Y +Z) = (X•Y)+(X•Z) X+(Y •Z) = (X+Y)•(X+Z) 吸收律 (Absorption Law) X +XY = X X•(X +Y) = X
布林代數的基本定理 狄摩根定理 (DeMorgan Theorem) 1
布林代數的基本定理 其它定理 X+X = X X•X = X X+0 = X X•0 = 0 X+1 = 1 X•1 = X X = X
布林代數的基本定理 若要證明上述的定理, 最簡單的辦法就是列出等號兩邊運算式的真值表, 就能看出其相等性。不過, 即使不列出真值表, 仍可利用其它定理來證明某一個定理為真。 假設我們要證明吸收律 X•(X+Y) = X 為真, 其方式如下:
『二元運算符號』和『一元運算符號』 AND 和 OR 這兩種運算符號稱為『二元運算符號』(Binary Operator), 因為它們都需要有兩個運算元 (Operand) 才能動作, 例如:X+Y 與 X•Y, 簡而言之, 就是『一個巴掌拍不響, 兩個巴掌才拍得響』。 但是 NOT 就不同了, 它只需要一個運算元即可動作, 例如:X, 因此稱為『一元運算符號』(Uniary Operator)。
『二元運算符號』和『一元運算符號』 在沒有任何括弧的布林運算式中, 一元運算符號的優先順序高於二元運算符號, 例如: 應該先算出 Y 的值, 再和 X 做 OR 運算。
6-2 常見的邏輯閘 所謂的邏輯閘 (Logic Gate) 就是執行邏輯運算的數位電路, 也是數位邏輯的基礎, 如果看不懂邏輯閘, 就等於沒學過數位邏輯。 若要將先前推導的布林函數化為具體的元件或產品, 就必須利用邏輯閘將電路圖畫出來。
AND 閘 AND 閘 (AND Gate) 是執行 AND 運算的數位電路。 可接受兩個 (含) 以上的輸入, 但是只產生一個輸出, 唯有全部的輸入皆為 1, 輸出才會是 1;否則輸出都是 0。
AND 閘 AND 閘的邏輯符號、布林函數和真值表如下:
OR 閘 OR 閘 (OR Gate) 是執行 OR 運算的數位電路。 可接受兩個 (含) 以上的輸入, 但是只產生一個輸出, 唯有全部的輸入皆為 0, 輸出才會是 0;否則輸出都是 1。
OR 閘 OR 閘的邏輯符號、布林函數和真值表如下:
NOT 閘 NOT 閘 (NOT Gate) 是執行 NOT 運算的數位電路。只接受一個輸入, 產生一個輸出, 輸入與輸出的邏輯狀態必定相反。 若輸入是 1, 則輸出是 0;若輸入是 0, 則輸出是 1。 因為這種特性, NOT 閘也被稱為反相器(Inverter)。
NOT 閘 NOT 閘的邏輯符號、布林函數和真值表如下:
XOR 閘 XOR 閘 (XOR Gate) 是執行 XOR 運算的數位電路, 所謂的 XOR 運算, 以兩個輸入為例, 可以說是『同性相斥』, 當兩個輸入訊號相同時, 輸出便是 0;否則輸出便是 1。 通常用 ⊕ 代表 XOR 運算符號。 XOR 閘可接受兩個 (含) 以上的輸入, 但是只產生一個輸出, 若有奇數個輸入為 1, 輸出才會是 1;否則輸出都是 0。
XOR 閘 XOR 閘的邏輯符號、布林函數和真值表如下 (以兩個輸入為例):
XOR 閘 XOR 運算的特色是『與同一個二元常數做兩次 XOR 之後, 即恢復原值』。舉例說明如下:
XOR 閘 這個特性經常被應用在『加密與解密』的場合:加密代表將資料與密碼做一次 XOR 運算, 而解密時則是將加密後的資料, 與相同的密碼再做一次 XOR 運算, 如此便回到原先未加密的狀態。
NAND 閘 NAND 閘 (NAND Gate) 是執行 NAND 運算的數位電路, 所謂的 NAND 代表 NOT 運算加上 AND 運算, 也就是先執行 AND 運算, 再將所得的結果做 NOT 運算。 由於 AND 閘必須在所有輸入皆為 1, 輸出才為 1, 而 NAND 又將這個輸出再做一次 NOT 運算, 所以我們可以推導出 NAND 閘唯有在所有輸入皆為 1 時, 輸出才為 0;否則輸出一律是 1, 其邏輯符號、布林函數與真值表如下:
NAND 閘
NAND 閘 因為只要利用 NAND 閘, 我們就可以模擬出 AND、OR 和 NOT 三種邏輯閘, 所以 NAND 閘又被稱為萬用邏輯閘 (Universal Gate), 以下列出其模擬方式:
NAND 閘
NOR 閘 NOR 閘 (NOR Gate) 是執行 NOR 運算的數位電路, 所謂的 NOR (NOTOR) 運算, 就是先執行 OR 運算, 再將所得的結果做 NOT 運算。 由於 OR 閘必須在所有輸入皆為 0, 輸出才為 0, 而 NOR 又將這個輸出再做一次 NOT 運算, 所以我們可以推導出 NOR 閘唯有在所有輸入皆為 0 時, 輸出才為 1;否則輸出一律是 0, 其邏輯符號、布林函數與真值表如下:
NOR 閘
NOR 閘 如同 NAND 閘, 我們利用 NOR 閘就可以模擬出 AND、OR 和 NOT 三種邏輯閘, 所以 NOR 閘也被視為萬用邏輯閘, 以下列出其模擬方式:
NOR 閘
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 一顆半導體元件的製作過程, 從上游到下游可區分為 4 階段:
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 因應這個流程, 產業界發展出不同類型的公司。在早期大致可區分為以下 3 類: IDM (Integrated Device Manufacturer, 整合裝置製造商):IDM 將上游到下游的工作全部包下來, 也就是從設計到測試都自己來, 可說是能力最強、規模最大的半導體公司, 這種模式稱為『垂直整合』, 例如 IBM、Intel 這些國際知名大廠便是屬於此類型。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 Fabless:成立一家 IDM 所需的資金動輒數十億美金, 這麼高的門檻當然嚇退了不少投資者。於是有人退而求其次, 不擁有製造工廠和封裝、測試設備, 只專做設計部分。 Fabless 公司按照客戶的訂單, 量身設計晶片, 但是僅止於設計而已。至於客戶要將設計圖交給哪家製造商生產, 打上哪一種品牌的標誌, 都與它們無關。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 此外, 即使尚未收到訂單, Fabless 公司也會主動設計晶片, 委由他人生產後, 用自己的品牌行銷。台灣的『威盛』(VIA)、『揚智』(Ali)、『瑞昱』(Realtek) 等等都是這類的知名廠商。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 Design House:基本上 Design House 也是專做 IC 設計的公司, 但是它的規模通常更小, 甚至是 3、4 位工程師、租個小辦公室就能開張營業, 畢竟 IC 設計所憑藉的是腦力而非財力。 也因為如此, 所以它不主動開發自我品牌的 IC, 只接單設計, 交出設計圖之後, 一切就與自己無關了。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 在過去, 因為只有 IDM 業者才有生產能力, 所以 Fabless 和 Design House 業者在委託他們製造的時候, 電路設計圖必定會流入 IDM 業者的手中。 可是 IDM 業者同樣也有 IC 設計部門, 這難免就讓人懷疑它們會不會乘機偷技術?
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 就算不考慮這個問題, 每當遇到生產線忙不過來時, IDM 業者總是優先生產自家的產品, 行有餘力才生產別家訂製的產品。 整體來說, 等於是 IDM 業者獨大, 其它沒生產能力的業者都得看他們的臉色。 到了 1987 年, 張忠謀先生創辦『台灣積體電路公司 (TSMC, Taiwan Semiconductor Manufacturing Company)』(以下簡稱『台積電』), 專職於晶圓製造代工。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 由於台積電的單純、專注, 一方面使 Fabless 和 Design House 業者放心將設計圖交給它生產;另一方面也使交貨速度與產品良率更勝 IDM 業者一籌, 奠定了台積電成為晶圓製造代工產業龍頭的地位, 這種新類型的半導體業者被稱為Foundary。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 而張忠謀先生提倡的『垂直分工』模式:將設計、製造、封裝和測試等階段, 分由不同的公司執行, 無疑解構了全球半導體產業的營運模式。 時至今日, 已經證明垂直分工模式的正確性, 它不但推動台灣半導體工業的成長, 更帶動全世界 IC 設計業的蓬勃發展。 即使是財力單薄的小公司, 只要有設計創新的能力, 就可以委託晶圓代工業者生產, 推出自我品牌的產品, 與 IDM 大廠一較高下。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 如今, 以台積電的財力雖然足以投入 IDM 的競爭, 但是它始終堅守本業-晶圓代工。不做設計、以避免與客戶競爭, 亦不涉入封裝和測試過程。 為了與客戶發展更密切的合作關係, 台積電還會定期將未來 5 年的技術藍圖提供給客戶, 讓客戶知道台積電有哪些新技術、能開發哪些新產品。
特 別 企 劃 前瞻與專注- 台積電開創新營運模式 這一切尊重客戶的舉動, 在在都印證了張忠謀先生所主張的看法-『台積電不僅是製造業, 更是服務業』!
特 別 企 劃 前瞻與專注- 台積電開創新營運模式