基礎邏輯電路(上)

歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。

若文章有任何疑點及錯誤的地方歡迎提出。

本篇文章主要作為個人學習用途,撰筆形式概要以筆記形式撰筆。另外本篇文章以入門為導向,若需詳細閱讀相關學門,請搜尋「數位系統導論」或「數位系統設計」。

布林代數式(Boolean Algebra)

Boolean Algebra 是數學當中的一個分支,專門用來處理 0 跟 1 這種真(True)假(False)值。主要針對二進位變數以及邏輯運算,如最基礎的 AND、OR、NOT。

邏輯運算(Logical Operations)

  • AND or Conjunction(關聯)
  • OR or Disjunction(無關)
  • NOT or Negation(否定)

AND 用布林代數式可表示為 ABA \cdot B 或是 ABA \wedge B

OR 用布林代數式可表示為 A+BA + B 或是 ABA \lor B

NOT 用布林代數式可表示為 A\rightharpoondown ANOTANOTA ,那本系的教授是用一個 bar 來表示 NOT,如 A\overline{A}

AND 要全部輸入都是 1,輸出才會是 1。

OR 只要其中一個輸入是 1,輸出就會都是 1,要產生 0 的情況,一定要全部輸入都是 0。

NOT 會將狀態反轉,就是 0 變成 1,1 變成 0。

真值表(Truth Table)

真值表(Truth Table)是一種用於邏輯運算的數學表格,主要用來列出所有可能的輸入組合下,布林代數式的結果。

如果有兩個輸入端如 A、B,那麼其輸出的結果會是 22=42^2 = 4 種可能,三個輸入端就是 23=82^3 = 8 種可能結果,由此可以推算出他的公式應該是 2n2^n ,也就是輸出端的可能結果, n 是輸入端的個數。

以下是 AND、OR、NOT 個別的真值表:

AND( ABA \cdot B ):

ABABA \cdot B
000
100
010
111

OR( A+BA + B ):

ABA+BA + B
000
101
011
111

NOT( A\overline{A} ):

AA\overline{A}
01
10

邏輯電路與布林代數式之間的轉換

在此之前我們先看看 AND、OR、NOT 在電路上是怎麼表示的:

基礎邏輯電路(上) - 邏輯電路與布林代數式之間的轉換

Image Source:Logic Circuit: AND Circuit | 臺灣東芝電子零組件股份有限公司 | 台灣

AND 是長的很像子彈的那個,OR 長的像是箭頭一樣,NOT 長的像是三明治上插一個竹籤加上綠豆的東西。總之看你怎麼去想像XD。

在上圖中,Y 是輸出端,那這邊就可以用布林代數式給他代進去了:

  • AND: Y=ABY = A \cdot B
  • OR: Y=A+BY = A + B
  • NOT: Y=AY = \overline{A}

反之,想要用布林代數式表示回去電路符號的話,就照上面的圖去畫即可。

範例

e.g. 1 以下圖片是 AND 跟 OR 的邏輯電路圖,要求出 x 的布林代數式。

這邊觀察 ABA \cdot B 的輸出端連接到 OR 的輸入端,那 OR 另一端輸入端為 C,所以根據前面的布林代數式規則,最後得到結果就是 x=AB+Cx = A \cdot B + C

基礎邏輯電路(上) - 範例

e.g. 2 以下圖片為上圖的反例,試求出 x 的布林代數式。

這邊就只是將原來的 AND 改成 OR,後面的 OR 改成 AND,最後可得到 x=(A+B)Cx = (A + B) \cdot C

基礎邏輯電路(上) - 範例

e.g. 3 求出以下 (a) 和 (b) 中 x 的布林代數式。

先看 (a),可以發現 NOT 出現在 A 輸入端,因此先得到 A\overline{A} 。另一端 B 沒有任何變動,最終可輸出 x=A+Bx = \overline{A} + B

接下來 (b),同樣檢查 A、B 上面有沒有東西,沒有,那就看輸出端,發現有一個 NOT,那就表示要將原本要輸出的 ABA \cdot B 加上 NOT,變成 x=ABx = \overline{A \cdot B}

基礎邏輯電路(上) - 範例

布林代數式表格(延伸版)

OperationsSymbolDefinition
AND\cdot or \wedge只有當兩個輸入都為真(True)時才回傳真(True)。
OR++ or \lor如果至少有一個輸入為真(True),則回傳真(True)。
NOTA\overline{A} or A\rightharpoondown A
or \simA
反轉狀態。
XOR\oplus如果剛好奇數個輸入為真(True),則回傳真(True)。
NAND\downarrow只有當兩個輸入都為真(True)時才回傳假(False)。
NOR\uparrow如果至少一個輸入為真(True),則回傳假(False)。
XNOR\leftrightarrow如果兩個輸入相等,則回傳真(True)。

XOR

XOR 的 X 為 exclusive,然後以下是他的真值表:

ABABA \oplus B
000
101
011
110

電路圖:

基礎邏輯電路(上) - XOR

Image Source:XOR Gate | Tutorial with examples, truth table,and downloadable assets – Hacky Labs

XOR 是怎麼來的呢?首先 XOR 的意義是兩個輸入不同才為真,相同為假,由此可推出布林代數式應該是 x=(AB)+(A+B)x = (\overline{A} \cdot B)+(A+\overline{B})

兩個輸入其中一個是 1 輸出就是 1,這邊用到 AND 的概念,以 AB\overline{A} \cdot B 為例,首先可以畫畫看他的真值表:

ABAB\overline{A} \cdot B
000
100
011
110

其中可發現 0、1 輸出 1,其他都是 0,這樣就確保了 XOR 的第一個條件,而 A+BA+\overline{B} 的真值表則是做與他相反的輸入,就會變成 1、0 輸出 1,那這時候再把這兩個輸出結果 OR 起來,最後就會得到 XOR,請看以下的邏輯電路圖:

基礎邏輯電路(上) - XOR

Image Source:設計CMOS邏輯:XOR,XNOR和變速箱門

你會看到 B 直直對過去會有個小小的圈圈,那個是 NOT 的省略方法,而 A 對到下面的 AND 也是如此,都是表示 A\overline{A}B\overline{B} 的省略方法。

NAND

NAND 其實就是在 AND 的基礎下,在他的輸出端加上一個 NOT,就變成 NAND 了。

以下是他的真值表(把 AND 的真值表拿過來,然後輸出全部 NOT 一遍就得到了):

ABABA \downarrow B
001
101
011
110

以下圖示說明了 NAND 的由來:

基礎邏輯電路(上) - NAND

Image Source:NAND and NOR | Spinning Numbers

NOR

NOR 的概念其實也跟 NAND 一樣,都是在輸出端加上 NOT。

以下是他的真值表:

ABABA \uparrow B
001
100
010
110

以下圖示說明了 NOR 的由來:

基礎邏輯電路(上) - NOR

Image Source:NAND and NOR | Spinning Numbers

XNOR

XNOR 也一樣,就在 XOR 的基礎下,在輸出端後面加上 NOT。

以下是他的真值表:

ABABA \leftrightarrow B
001
100
010
111

電路符號就變這樣:

基礎邏輯電路(上) - XNOR

Image Source:設計CMOS邏輯:XOR,XNOR和變速箱門

布林代數式定律(Theorems / Laws)

  1. 同一律(Identity Law):
    • A+0=AA + 0 = A
    • A1=AA \cdot 1 = A
  2. 交換律(Commutative Law):
    • AB=BAA \cdot B = B \cdot A
    • A+B=B+AA + B = B + A
  3. 結合律(Associative Law):
    • (AB)C=A(BC)(A \cdot B) \cdot C = A \cdot (B \cdot C)
    • (A+B)+C=A+(B+C)(A + B) + C = A + (B + C)
  4. 分配律(Distributive Law):
    • A(B+C)=(AB)+(AC)A \cdot (B + C) = (A \cdot B) + (A \cdot C)
  5. 反轉律(Inversion Law):
    • 註:經過兩次 NOT 還是自己。
    • A=A\overline{\overline{A}} = A
  6. 補數律(Complement Law):
    • A+A=1A + \overline{A} = 1
    • AA=0A \cdot \overline{A} = 0
  7. 冪等律(Idempotent Law):
    • A+A=AA + A = A
    • AA=AA \cdot A = A
  8. 笛摩根定理(De Morgan’s Laws):
    • AB=A+B\overline{A \cdot B} = \overline{A} + \overline{B}
    • A+B=AB\overline{A + B} = \overline{A} \cdot \overline{B}

學這要幹嘛?可以簡化布林代數式,也更進一步去改善、精簡電路設計,降低開發成本。


補充說明:XOR 定律,基本上與布林代數式定律差不多,但些許地方有差別。

  1. 自反律(Self-Inverse Law):
    • AA=0A \oplus A = 0
  2. 交換律(Commutative Law):
    • AB=BAA \oplus B = B \oplus A
  3. 結合律(Associative Law):
    • ABC=A(BC)=(AB)CA \oplus B \oplus C = A \oplus (B \oplus C) = (A \oplus B) \oplus C
  4. 同一律(Identity Law):
    • A0=AA \oplus 0 = A

註:XOR 在密碼學領域有相當的用處,透過這些定律可以進行加密解密的動作。

簡易證明笛摩根定理(De Morgan’s Laws)

最簡單的方式就是使用真值表證明。

第一定理: AB=A+B\overline{A \cdot B} = \overline{A} + \overline{B}

AABBABA \cdot BAB\overline{A \cdot B}A\overline{A}B\overline{B}A+B\overline{A} + \overline{B}
0001111
0101101
1001011
1110000

第二定理: A+B=AB\overline{A + B} = \overline{A} \cdot \overline{B}

AABBA+BA + BA+B\overline{A + B}A\overline{A}B\overline{B}AB\overline{A} \cdot \overline{B}
0001111
0110100
1010010
1110000

利用布林代數式定律簡化邏輯電路

e.g. 1 畫出 Y=AB+B+CY = AB + B +C 的邏輯電路圖。

首先要來簡化電路,之後才好畫圖。先看 AB+BAB + B ,這邊可以用分配律化簡成 B(A+1)B(A + 1) ,而 A+1A + 1 是 1,因此 B(A+1)=BB(A + 1) = B

再將得出的結果代回去原式 Y=B+CY = B + C ,就可得到簡化結果了。

以下是這個範例的邏輯電路圖畫法(畫的稍醜不好意思):

基礎邏輯電路(上) - 利用布林代數式定律簡化邏輯電路

e.g. 2 簡化電路 F=A(A+A)F = A \cdot (A + \overline{A})

根據補數律的 A+A=1A + \overline{A} = 1 ,可簡化成 F=A1F = A \cdot 1 ,最終結果就是 F=AF = A

e.g. 3 畫出 G=A+BCG = \overline{A + B} \cdot \overline{C} 的邏輯電路圖。

遇到這種題目一定要先簡化,首先 A+B\overline{A + B} 的部分用到笛摩根定理,可得到 AB\overline{A} \cdot \overline{B} 。最後代回去原式即得 G=ABCG = \overline{A} \cdot \overline{B} \cdot \overline{C}

而以下是該範例的邏輯電路圖畫法:

基礎邏輯電路(上) - 利用布林代數式定律簡化邏輯電路

也可以畫成這樣:

基礎邏輯電路(上) - 利用布林代數式定律簡化邏輯電路

由於篇幅原因,故到此為止,下一節將繼續學習什麼是 Product of Sum、Sum of Product、Adder、Full-Adder、Half-Adder 等等。

總結

一、布林代數(Boolean Algebra)

布林代數是數學的分支,用於處理(1)與(0)的邏輯運算。

三種基本運算:

  1. AND( \cdot ):所有輸入為 1,輸出才為 1。
  2. OR( ++ ):只要有一個輸入為 1,輸出為 1。
  3. NOT( \overline{} ):將輸入反轉,0→1、1→0。

所有的邏輯閘都可以用 AND、OR、NOT 這些邏輯閘所組成。

二、真值表(Truth Table)

真值表列出所有輸入組合的輸出結果。

若輸入數為 nn ,則有 2n2^n 種輸出組合。

以下是 AND、OR、NOT 個別的真值表:

AND( ABA \cdot B ):

ABABA \cdot B
000
100
010
111

OR( A+BA + B ):

ABA+BA + B
000
101
011
111

NOT( A\overline{A} ):

AA\overline{A}
01
10

三、邏輯電路與布林代數的對應

邏輯電路可直接轉換成布林代數式,反之亦然:

  • ANDY=ABAND \rightarrow Y = A \cdot B
  • ORY=A+BOR \rightarrow Y = A + B
  • NOTY=ANOT \rightarrow Y = \overline{A}

四、進階邏輯運算

運算符號定義
XOR兩輸入不同為真
NANDAND 輸出後面加上 NOT
NOROR 輸出後面加上 NOT
XNOR兩輸入相同為真

五、布林代數基本定律(Laws of Boolean Algebra)

  1. 同一律(Identity Law):
    • A+0=AA + 0 = A
    • A1=AA \cdot 1 = A
  2. 交換律(Commutative Law):
    • AB=BAA \cdot B = B \cdot A
    • A+B=B+AA + B = B + A
  3. 結合律(Associative Law):
    • (AB)C=A(BC)(A \cdot B) \cdot C = A \cdot (B \cdot C)
    • (A+B)+C=A+(B+C)(A + B) + C = A + (B + C)
  4. 分配律(Distributive Law):
    • A(B+C)=(AB)+(AC)A \cdot (B + C) = (A \cdot B) + (A \cdot C)
  5. 反轉律(Inversion Law):
    • 註:經過兩次 NOT 還是自己。
    • A=A\overline{\overline{A}} = A
  6. 補數律(Complement Law):
    • A+A=1A + \overline{A} = 1
    • AA=0A \cdot \overline{A} = 0
  7. 冪等律(Idempotent Law):
    • A+A=AA + A = A
    • AA=AA \cdot A = A
  8. 笛摩根定理(De Morgan’s Laws):
    • AB=A+B\overline{A \cdot B} = \overline{A} + \overline{B}
    • A+B=AB\overline{A + B} = \overline{A} \cdot \overline{B}

六、補充 XOR 定律(XOR Laws)

  1. 自反律(Self-Inverse Law):
    • AA=0A \oplus A = 0
  2. 交換律(Commutative Law):
    • AB=BAA \oplus B = B \oplus A
  3. 結合律(Associative Law):
    • ABC=A(BC)=(AB)CA \oplus B \oplus C = A \oplus (B \oplus C) = (A \oplus B) \oplus C
  4. 同一律(Identity Law):
    • A0=AA \oplus 0 = A

七、笛摩根定理證明

透過列出各輸入組合可驗證兩條定理的等價性,也就是用真值表去證明即可。

參考資料

Boolean Algebra - GeeksforGeeks

Logic Circuit: AND Circuit | 臺灣東芝電子零組件股份有限公司 | 台灣

XOR Gate | Tutorial with examples, truth table,and downloadable assets – Hacky Labs

設計CMOS邏輯:XOR,XNOR和變速箱門

真值表 - 維基百科,自由的百科全書

布林代數的基本運算原則-知識百科-三民輔考

Chapter2-數位邏輯-Digital Logical | PinJin’s Blog

互斥或閘 - 維基百科,自由的百科全書

3. 布林代數與邏輯閘 - HackMD

利用 XOR 對資料加密的原理淺談 - johnny860726的創作 - 巴哈姆特