歡迎來到邏輯簡化(Logic Simplification)的世界!
你好!今天,我們要一起學習如何讓數字電路變得「精簡高效」。在電子學的世界裡,我們通常會先拿到一份長長又複雜的需求清單。如果直接根據這份清單來搭建電路,可能會使用過多的元件,導致成本高昂且運作速度緩慢。
透過學習布林代數(Boolean Algebra)和卡諾圖(Karnaugh Maps),你將學會如何將這些冗長的表達式化簡為最簡單的形式。這就像數學裡的約分一樣——數值不變,但處理起來會輕鬆得多!
1. 從真值表(Truth Tables)到布林表達式
在簡化電路之前,我們需要先描述它的功能。我們使用真值表來顯示每種可能的輸入組合所對應的輸出(對於你的課程大綱,最多涵蓋 A、B 和 C 這三個輸入)。
積之和(Sum-of-Products, SOP)
編寫布林表達式最常見的方法是積之和(SOP)。
比喻:想像一個防盜警報器。當(入侵者 AND 夜晚)OR(火災 AND 高溫)發生時,你希望警報器(輸出)打開。請注意我們是如何將「AND」部分組合在一起,再用「OR」將它們連接起來的。
如何編寫 SOP 表達式:
1. 查看你的真值表,找到所有輸出為 1 的行。
2. 對於這些行中的每一行,寫出一個 AND 項(即乘積項)。
3. 在該項中,如果輸入為 0,則在字母上方加一橫(例如 \(\bar{A}\));如果輸入為 1,則直接寫出字母(例如 \(A\))。
4. 使用 + (OR) 將所有這些項連接起來。
範例:如果輸出僅在 (A=1, B=0, C=1) 時為 1,則該 SOP 項為 \(A \cdot \bar{B} \cdot C\)。
快速回顧:
• AND 用點號 (\(\cdot\)) 表示,或者直接將字母寫在一起 (\(AB\))。
• OR 用加號 (\(+\)) 表示。
• NOT 用字母上方的橫線 (\(\bar{A}\)) 表示。
2. 使用布林代數進行簡化
布林代數是一套用於簡化邏輯的規則。別擔心它看起來像普通數學;它實際上簡單得多,因為變數只能是 0 或 1!
必須記住的核心規則:
• 單位元律(Identity Law): \(A \cdot 1 = A\) 以及 \(A + 0 = A\)
• 零元律(Null Law): \(A \cdot 0 = 0\) 以及 \(A + 1 = 1\)
• 雙重否定律(Double Negation): \(\bar{\bar{A}} = A\)(兩個「NOT」互相抵消!)
• 互補律(Complement Law): \(A \cdot \bar{A} = 0\) 以及 \(A + \bar{A} = 1\)
• 分配律(Distributive Law): \(A \cdot (B + C) = AB + AC\)
常用技巧:留意 \(A + AB\)。這總是能簡化為 A。為什麼呢?因為如果 A 是 1,無論 B 是什麼,整個結果必定為 1!
重點總結:布林代數的目標是移除盡可能多的項和變數,以縮小電路規模。
3. 視覺化方法:卡諾圖(K-Maps)
如果你不喜歡數學運算,那你一定會愛上卡諾圖!卡諾圖是一個視覺化的方格圖,能幫助我們在不進行複雜計算的情況下,一眼看出規律並簡化表達式。
設定圖表(3 個變數:A, B, C)
對於 3 個變數的圖表,我們使用一個 8 格的網格(2 行乘 4 列)。將一個變數 (A) 放在側邊,另外兩個變數 (B, C) 放在上方。
重要的「格雷碼(Gray Code)」規則:在標註 B 和 C 的列時,你必須確保相鄰的兩列只有一個位元發生變化。順序必須是:
00, 01, 11, 10
(注意 11 排在 10 前面!這是最常見的錯誤,請務必小心。)
卡諾圖簡化步驟:
1. 填寫地圖:在真值表中輸出為 1 的位置,於對應的方格中填入「1」。
2. 分組 1:將「1」圈起來。
• 分組的大小必須是 1, 2, 4 或 8(2 的次方)。
• 分組必須是矩形或正方形。
• 盡量讓分組越大越好。
• 分組可以像圓柱體一樣從邊緣「折疊跨越」!
3. 讀取分組:對於每個分組,觀察輸入 (A, B, C)。
• 如果某個變數在圈選範圍內發生了變化(例如在圈的一邊是 0,另一邊是 1),就將其捨棄。
• 如果某個變數保持不變,就將其保留!
範例:如果你有一個包含四個「1」的群組,其中 B 始終為 1,而 A 和 C 都有變化,那麼該組的簡化結果就是 B。
你知道嗎?卡諾圖是由貝爾實驗室的 Maurice Karnaugh 於 1953 年發明的,目的是為了加快電話交換電路的設計速度!
4. 實作電路
一旦你有了簡化後的 SOP 表達式,就可以開始動手搭建電路了!SOP 表達式會告訴你精確需要使用哪些閘。
標準設計流程:
1. 使用 NOT 閘來獲得反相輸入(\(\bar{A}, \bar{B}\) 等)。
2. 為每個「積(Product)」項使用 AND 閘。
3. 最後使用一個 OR 閘將 AND 閘的結果「求和」。
範例:對於 \(Y = AB + \bar{A}C\),你需要兩個 AND 閘(一個用於 \(AB\),一個用於 \(\bar{A}C\)),並使用一個 OR 閘將它們組合起來。
5. 避免常見錯誤
別擔心,剛開始覺得困難是很正常的!即使是專家有時也會犯這些錯誤:
• 卡諾圖順序:忘記在圖表的列中使用 11 再接 10。
• 對角線分組:請記住,你只能在水平或垂直方向上對「1」進行分組。絕對不可以跨越對角線!
• 遺漏「1」:確保圖表上的每一個「1」都至少包含在一個分組中。
• 過度複雜化:永遠尋找盡可能大的分組(4 個 1 的分組比 2 個 1 的分組要好)。
快速回顧框:
1. 真值表 -> 展示邏輯運作。
2. SOP 表達式 -> 「未經篩選」的數學原始版本。
3. 卡諾圖/布林代數 -> 「精簡清理」的過程。
4. 邏輯電路 -> 最終、高效的硬體成品。
重點總結:組合邏輯的核心在於處理當前的輸入。利用卡諾圖找出從輸入到輸出的最短路徑,這能為你的電子設計節省時間、成本和空間!