卡諾圖邏輯化簡工具

點選真值表或卡諾圖的方格,輸入 2~4 個變數的邏輯函數,即可立即求出最簡的積之和(SOP)與和之積(POS)。積之和的分組會以不同顏色畫在卡諾圖上,並顯示質隱含項、必要質隱含項與邏輯閘的輸入數。也可以載入 3 輸入多數決、七段顯示器解碼器、奇同位等範例。

每點選一次方格,就會依 0 → 1 → X(隨意項)→ 0 的順序切換。無論在真值表或卡諾圖上修改,另一邊都會同步更新。

卡諾圖

真值表

結果

最簡積之和(SOP)

最簡和之積(POS)

質隱含項

    邏輯閘輸入數
    –

    A̅ 表示 A 的反相(NOT),AND 以並排字母表示,OR 以「+」表示,編號則是以 A 為最高位元、將 ABCD 視為二進位數所得的值。

    什麼是卡諾圖:為何按格雷碼順序排列

    卡諾圖將真值表的每一列對應到一個方格,2 個變數有 4 格,3 個變數有 8 格,4 個變數有 16 格。本工具在 4 個變數時以 AB 為列、CD 為行,3 個變數時以 A 為列、BC 為行,2 個變數時以 A 為列、B 為行,標籤依 00、01、11、10 的格雷碼順序排列。若按二進位順序(00、01、10、11)排列,01 與 10 之間會有 2 個位元改變,但按格雷碼順序,相鄰的方格恰好只有 1 個變數不同。只差 1 個變數的兩個最小項可以消去該變數,合併成一個積項,例如 A̅BC + ABC = BC。卡諾圖的作用,就是讓這些可以合併的組合以相鄰方格的形式一眼就能看出來。

    分組規則:2 的冪次矩形與邊緣相連

    將 1 的方格圈成大小為 2 的冪次(1、2、4、8、16 格)的矩形。2ᵏ 格的群組可以消去 k 個變數,因此群組要盡量大,並以盡量少的群組涵蓋所有的 1。群組之間可以重疊。在格雷碼中 10 與 00 也只差 1 個位元,所以左右兩端、上下兩端都彼此相鄰,整張圖可視為上下左右都會繞回的曲面。在「四個角落的分組」範例 Σm(0, 2, 8, 10) 中,四個角落的方格構成一個群組,群組內 A 與 C 會變化,而 B 與 D 都維持為 0,因此結果為單一項 B̅D̅。相反地,「3 輸入奇同位」(A⊕B⊕C)的 1 與 0 排成棋盤狀,沒有任何一對相鄰的 1,因此 4 個最小項都會保留,以積之和的形式無法再化簡。

    隨意項(X)的用法:七段顯示器的範例

    隨意項是指該輸入組合不會發生,或即使發生輸出是 0 或 1 都無妨的方格,本工具以 X 表示。只有在能使群組變大時才把 X 當作 1,其他情況則可當作 0,因此分組的彈性會增加。「七段顯示器的 a(BCD)」範例是以 4 位元 BCD(ABCD,A 為最高位元)輸入數字 0~9,決定是否點亮最上方橫段 a 的函數;在 6 也有上方橫段的字形下,a 在 0、2、3、5、6、7、8、9 時點亮,在 1 與 4 時熄滅。輸入不會出現 10~15,將這些設為 X 後,最簡積之和為 A + C + BD + B̅D̅,共 4 項、6 個文字(變數的字母數),而且 4 項都是必要質隱含項。若 10~15 維持為 0,則需要 A̅BD + A̅C + AB̅C̅ + A̅B̅D̅ 這樣的 4 項、11 個文字,而且還有另一個同樣大小的解。此外,同一個 X 可能在積之和中當作 1、在和之積中當作 0,例如本例的 12(ABCD = 1100)在積之和中屬於 A 的群組,在和之積中則屬於 (B̅ + C + D) 的群組。

    質隱含項、必要質隱含項與 Quine-McCluskey 法

    無法再擴大的群組,也就是不被其他任何群組包含的積項,稱為質隱含項。在質隱含項中,若某個 1 的方格只被它涵蓋,就稱為必要質隱含項,最簡式中一定包含它。只用必要質隱含項無法涵蓋所有的 1 時,就必須從其餘的質隱含項中選擇組合;也有像 Σm(0, 1, 2, 5, 6, 7) 這樣完全沒有必要質隱含項、最簡解有 2 種的函數。本工具不靠目視,而是使用奎因-麥克拉斯基(Quine-McCluskey)法:在表格上有系統地合併只差 1 個變數的項,求出所有質隱含項,再從中找出項數最少、項數相同時文字數最少的組合,因此一定能得到最簡式。人在卡諾圖上能看出相鄰關係的極限約為 4~5 個變數,更大的函數則以這類表格法,或邏輯合成工具中的啟發式演算法來化簡。

    積之和與和之積、以 NAND 與 NOR 實現,以及危障

    積之和(SOP)是以 OR 連接 AND 項的式子,由圈選 1 的方格求得。和之積(POS)是以 AND 連接 OR 項的式子,由圈選 0 的方格求得,群組中維持為 0 的變數取原變數、維持為 1 的變數取反相,再以 OR 連接。根據笛摩根定理,積之和的 AND-OR 兩級可以直接換成 NAND-NAND 兩級,和之積的 OR-AND 兩級可以換成 NOR-NOR 兩級,因此只用在 CMOS 中容易實現的 NAND 或 NOR 就能構成電路。哪一種形式較小取決於函數,以七段顯示器的 a 為例,積之和有 4 項,和之積 (A + B + C + D̅)(B̅ + C + D) 則只有 2 項。此外,最簡式不一定沒有危障:Σm(1, 3, 6, 7) 的最簡積之和為 A̅C + AB,在 B = C = 1 時若 A 改變,兩個項交接的瞬間輸出可能短暫降為 0,這就是靜態 1 危障。加上跨越兩個群組的共識項 BC(本工具會將它顯示為非必要的質隱含項),成為 A̅C + AB + BC,即可防止這種突波;因此若電路需要避免危障,請在顯示的最簡式中自行加上這類項。

    練習邏輯設計題目

    卡諾圖的主要用途是什麼?

    1. A測量電路的延遲時間
    2. B設計類比濾波器
    3. C化簡邏輯式
    查看答案與解析

    正確答案:C. 化簡邏輯式

    卡諾圖是將真值表排列成相鄰方格的輸入僅相差1位元(格雷碼順序)的圖。將相鄰的1以1、2、4、8個的矩形圈起來,該範圍內變化的變數就會消去,邏輯式因而簡化。重點是將圖的兩端也視為相鄰。手工作業的極限約為4〜5個變數,超過時則以奎因-麥克拉斯基法或邏輯合成工具的演算法來化簡。

    下列哪一項是3輸入多數決電路輸出為1的條件?

    1. A只有3個輸入全為1時
    2. B3個輸入中有2個以上為1時
    3. C只要有1個輸入為1時
    查看答案與解析

    正確答案:B. 3個輸入中有2個以上為1時

    多數決電路在輸入的過半數為1時輸出1,3輸入時即有2個以上為1時。邏輯式為 AB + BC + CA,與全加器的進位輸出邏輯相同。將相同電路做成3份再取多數決的三重冗餘(TMR),即使其中1個因故障或輻射造成位元翻轉,也能維持正確的輸出,因此用於航空、太空設備與高可靠度的伺服器。

    邏輯式 A + A·B 化簡後的結果是哪一個?

    1. AA
    2. BB
    3. CA·B
    查看答案與解析

    正確答案:A. A

    A + A·B = A·(1 + B) = A·1 = A(吸收律)。A為1時整體為1,A為0時A·B也為0,整體為0,與B無關而等於A。對偶形式 A·(A + B) = A 也成立。像這樣化簡以省去冗餘的閘,可減少面積、延遲與功耗。不過為了避免危態(hazard),也有刻意保留冗餘項的設計。

    常見問題

    最多可以處理幾個變數?

    本工具支援 2~4 個變數。4 個變數(16 格)以內只需一張 4 × 4 的格子,包含邊緣相連在內都能用肉眼確認相鄰關係;5 個變數則需要並排兩張 4 × 4 的圖,並把兩張圖中相同位置的方格也視為相鄰,判讀會困難許多。真值表的列數也會隨變數每增加 1 個而加倍,因此本工具以容易對照圖與表的 4 個變數為上限。更大的函數請使用邏輯合成工具等軟體化簡。

    為什麼會顯示「另有其他同樣大小的解」?

    因為有些函數中,項數與文字數都最少的組合不只一種。例如 Σm(0, 1, 2, 5, 6, 7) 可以寫成 A̅B̅ + BC̅ + AC,也可以寫成 A̅C̅ + B̅C + AB,兩者都是 3 項、6 個文字,而且沒有任何必要質隱含項。本工具會顯示其中一種。它們表示的是同一個邏輯函數,所以每一種都是正確答案。

    X(隨意項)是什麼意思?

    表示該輸入組合不會發生,或即使發生輸出是 0 或 1 都無妨。BCD 的 10~15,以及狀態機中未使用的狀態,都是典型的例子。化簡時,X 會被當成能讓式子變得較小的值。在實際電路中,X 的方格仍會輸出由求得的式子決定的 0 或 1,因此請先確認這些輸入確實不會發生再使用。

    如何用手算求出和之積?

    以與圈選 1 相同的規則圈選 0 的方格。在每個群組中,維持為 0 的變數取原變數(A),維持為 1 的變數取反相(A̅),以 OR 連接,再把這些項以 AND 連接,就得到和之積。這等同於圈選 0 求出反相函數 F̅ 的積之和,再用笛摩根定理將整體取反。例如 3 輸入多數決會得到 (A + B)(A + C)(B + C),展開後與積之和 AB + AC + BC 是相同的函數。

    可以用電路確認求得的式子嗎?

    可以。在本網站的「邏輯電路模擬器」中,依照顯示的式子連接 AND、OR、NOT 閘,就會自動產生真值表,可以確認是否與本工具的真值表一致。標為 X 的方格,會變成由式子決定的 0 或 1。也可以改用只有 NAND 的兩級電路,確認真值表維持不變。不過模擬器不處理邏輯閘的延遲,因此不會出現由危障造成的突波。

    相關術語

    卡諾圖 真值表 格雷碼 笛摩根定理 組合電路 突波(Glitch) 解碼器 邏輯合成

    相關計算工具

    半導體、電子電路與資訊計算工具 →