基礎邏輯電路(下)
基礎邏輯電路(下)
歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。
若文章有任何疑點及錯誤的地方歡迎提出。
本篇文章主要作為個人學習用途,撰筆形式概要以筆記形式撰筆。另外本篇文章以入門為導向,若需詳細閱讀相關學門,請搜尋「數位系統導論」或「數位系統設計」。
Sum of Products(SOP) Form
先做 AND 運算,再做 OR 運算。
如:
主要是用 號連接多項 Products,下圖可能會比較清晰一點。

Image Source:What is Sum Of Product (SOP) Form? - GeeksforGeeks
為什麼需要 SOP?因為可以從真值表直接算出布林運算式,接著進一步簡化可畫出電路圖,這是一種蠻好的方式。
最小項(Minterm)
最小項是構成 SOP 的基本單位,是一個 AND 項(積項),具有以下特點:
- 包含所有輸入變數:每個變數都必須出現。
- 每個變數只出現一次:可為原變數或補數形式。
- 只用 AND 運算:所有變數用 連接。
對於 個變數的布林函數,共有 個最小項。
而最小項的命名規則如下:
最小項用小寫字母 m(最小項的縮寫)加下標來表示,下標號碼由二進位轉十進位而來:
- 變數為 時,用原變數(對應二進位 1)。
- 變數為 時,用補數(加橫線,對應二進位 0)。
呃什麼意思呢??接下來做個舉例:
設三變數 ,這樣共有 個最小項。
| 編號 | 二進位 | A | B | C | 最小項運算式 | 符號 |
|---|---|---|---|---|---|---|
| 0 | 000 | 0 | 0 | 0 | ||
| 1 | 001 | 0 | 0 | 1 | ||
| 2 | 010 | 0 | 1 | 0 | ||
| 3 | 011 | 0 | 1 | 1 | ||
| 4 | 100 | 1 | 0 | 0 | ||
| 5 | 101 | 1 | 0 | 1 | ||
| 6 | 110 | 1 | 1 | 0 | ||
| 7 | 111 | 1 | 1 | 1 |
所謂的最小項就是那些 、 等等,而 以及 所代表的意義跟 、 是一樣的。
也就是說 、 。
SOP 實際範例
有一個真值表長以下這樣,求出其布林運算式。
| A | B | C | F |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
可以利用最小項 + SOP 的方法,由於是 SOP,所以只要看輸出的 F 為 1 的項目就好了,其他 0 的不用看。
然後就可以得到
接著可以進一步化簡,會發現大家都有共同因式叫做 C,先把他提出來: 。
提出來後,可以觀察一下 跟 ,會發現前一組的有共同因式 ,後一組的有共同因式 ,所以也可以共同提出來變成: 。
這邊用到之前學過的定律, ,因此又會得到 。
然後裡面也是這樣的定律,最後化簡完得到 。( )
Product of sums(POS) Form
跟 SOP 相反,先做 OR 再做 AND,如:
SOP 的基本單位叫做最小項,那 POS 的就叫做最大項(Maxterm),就直接進入例子來看 POS 了。
設有以下簡單的真值表,兩變數 :
| A | B | F |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
如果是 SOP 的話,只要看 1 的去做就好,會變成:
但換成 POS 的話,是要看 0 的情形去算,變成: 。
POS 後面為 的原因是因為笛摩根定理,如果照著前面想法寫成 的話就會錯囉,因為 POS 裡面要是 OR 運算先。
加法器(Adder)
顧名思義,就是執行加法運算的數位電路部件,是構成電子計算機核心微處理器中算術邏輯單元(ALU)的基礎。在電子系統中,加法器主要負責計算地址、索引等數據,也是其他硬體(例如二進位數的乘法器)的重要組成部分。
加法器有兩種,一個是半加器(Half adder),一個是全加器(Full adder)。
半加器(HA:Half adder)
半加器習慣簡稱為 HA,他是最基本的數位加法電路,專門處理兩個一位元二進位數(如十進位的個位數相加)的相加運算。
HA 有兩個輸入端(「被加數 」和「加數 」)以及兩個輸出端:和(Sum, )與進位(Carry, )。這兩個一位元二進制數的和用十進制表示即等於 。
而這個 呢,也可以表示成 ,下面的 表示 out 的意思。
因為 HA 只有兩個輸入端,所以真值表的可能輸出結果也就對應到四個輸出,以下是 HA 的真值表:
| A | B | C | S |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
先來看 S 的部分是怎麼得出來的,這邊用條列式的步驟看會比較清楚:
由於真值表的輸出只能表示一個位元,因此最後的 的 1 被省略掉了,但這也表示一件事情,那就是他進位了,所以最後要在 C 的地方寫上 1,表示 S 已經進一位。
這邊可以用布林代數式簡單表示出 S 跟 C:
然後透過這個布林代數式我們可以得出以下電路:

Image Source:File:Half Adder.svg - 維基百科,自由的百科全書
而這個電路可以用一個正方形寫 HA,再加上兩個輸出簡單表示:

Image Source:The Elements of Computing Systems: 02-Combinational Chips | by Anuj Yadav | Medium
半加器的缺點
唯一缺點就是不能做到前級進位運算,像是十進位的 19 + 23,會先算個位數 9 + 3 = 12,將 2 寫下然後 1 進位到十進位,而 1 為前級進位。在多位元的加法器中,每一位元都需要考慮前一位元的進位,不然加法結果就錯了。
整理一下:半加器像是只能十進位的個位數相加,不能做到兩位數以上相加。
那要怎麼解決這個問題呢?這時候就請出我們的全加器了。
全加器(FA:Full Adder)
全加器(Full Adder)是數位電路中用來執行三個一位元二進位數相加的組合邏輯電路。
他在半加器的基礎上多了一個輸入,所以總共是三個輸入:
- 兩加數(A、B)
- 前一位元的進位數( )
輸出一樣維持兩個:
- 和(Sum, )
- 進位(Carry, )
全加器的真值表如下所示:
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
註:該真值表的輸入排列方式是以二進位不斷加一、進位得到的。
真值表最後的 因為只看最右邊的 ,所以真值表這邊 ,而同時也有進位,所以 。
然後這要怎麼轉成布林代數式呢?只要用到前面學到的 SOP 技巧即可。
上述兩式都可以繼續化簡,以下是 的化簡詳細步驟:
觀察一下可以提出 跟 ,變成 。
前面括號裡面的叫做 A XNOR B,後面的叫做 A XOR B,所以可以進一步寫成: 。
這邊設一個變數叫做 X,令 ,代入原式可得到 ,可看到這就是 XOR 的定義了,再改成 XOR 符號: 。
最後將 X 展開就會得到我們想要的精簡過後的結果了:
以下為 的化簡詳細步驟:
看到 ,可以跟 配,因此提出 ,注意這邊不要也把後面的 牽扯進去了,會算得很麻煩。
ok 首先得到這樣的式子: 。
之後後面可以提出 AB,變成 。
觀察一下可以發現前面的是 A XOR B,後面抵銷變成 1,最後得到最精簡的式子:
最後的最後,讓我來列出兩個式子的最終結果:
以下就是 的電路畫法:

Image Source:Full Adder - GeeksforGeeks
FA 也可以畫成這樣:

用兩個 HA 也可以實現 FA:

Image Source:Full Adder - GeeksforGeeks
總結
一、Sum of Products(SOP)
SOP(乘積之和)是一種布林函數表示法。
定義是先進行 AND,再進行 OR。
形式:
為何使用 SOP?可由真值表直接導出布林運算式,再經化簡後可轉換為邏輯電路,是數位設計的基礎流程之一。
SOP 在實作時看輸出是 1 的,0 的不用看。
最小項(Minterm)
最小項是 SOP 的基本構成單位,具以下特性:
- 包含所有輸入變數。
- 每個變數僅出現一次(原變數或補數形式)。
- 僅使用 AND 運算。
對於 個變數,共有 個最小項。
命名方式: ,下標 由變數真值的二進位轉十進位得來。
二、Product of Sums(POS)
定義:POS(和之積)為 SOP 的相反形式,也就是先進行 OR,再進行 AND。
形式:
反之,SOP 有最小項,那 POS 就會是最大項,同樣把兩者原理顛倒就好。
POS 在實作時看輸出是 0 的,1 的不用看。
注意:POS 內部必須是 OR 運算,若誤寫成 則違反定義,所以要做 POS 記得寫成
三、半加器(HA:Half Adder)
功能:對兩個一位元二進位數 、 相加。
輸入: A, B
輸出:和(Sum, S)、進位(Carry, C 或 )
真值表:
| A | B | C | S |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
布林代數式:
缺點:
- 無法處理前級進位(Carry-in),
- 僅適用於一位元加法。
四、全加器(FA:Full Adder)
功能:可處理三個輸入(含前一位的進位)。
輸入:A, B, (前級進位)
輸出:S(和)、 (進位)
真值表:
| A | B | S | ||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
布林代數式(已化簡,由 SOP 做過來的):
電路結構:可由兩個半加器 + 一個 OR 閘組成。
五、總表
| 類別 | 運算順序 | 基本單位 | 典型形式 | 應用 |
|---|---|---|---|---|
| SOP | AND → OR | 最小項(Minterm) | 從真值表得出輸出為 1 的條件 | |
| POS | OR → AND | 最大項(Maxterm) | 從真值表得出輸出為 0 的條件 | |
| HA | 二輸入加法 | 無前級進位 | , | 單位元加法 |
| FA | 三輸入加法 | 含前級進位 | , | 多位元加法基礎元件 |
參考資料
Chapter2-數位邏輯-Digital Logical | PinJin’s Blog
Logical Expression in SOP and POS Form
Difference between SOP and POS in Digital Logic - GeeksforGeeks




