卡諾圖的主要用途是什麼?
- A測量電路的延遲時間
- B設計類比濾波器
- C化簡邏輯式
點選真值表或卡諾圖的方格,輸入 2~4 個變數的邏輯函數,即可立即求出最簡的積之和(SOP)與和之積(POS)。積之和的分組會以不同顏色畫在卡諾圖上,並顯示質隱含項、必要質隱含項與邏輯閘的輸入數。也可以載入 3 輸入多數決、七段顯示器解碼器、奇同位等範例。
收藏與最近使用的工具只儲存在這個瀏覽器(localStorage)中。
其他輸入維持目前的值,只讓選擇的輸入在目前值的 1/4 到 4 倍之間變化時的結果。紅點是目前的值。
卡諾圖將真值表的每一列對應到一個方格,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。卡諾圖的作用,就是讓這些可以合併的組合以相鄰方格的形式一眼就能看出來。
將 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 個最小項都會保留,以積之和的形式無法再化簡。
隨意項是指該輸入組合不會發生,或即使發生輸出是 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) 的群組。
無法再擴大的群組,也就是不被其他任何群組包含的積項,稱為質隱含項。在質隱含項中,若某個 1 的方格只被它涵蓋,就稱為必要質隱含項,最簡式中一定包含它。只用必要質隱含項無法涵蓋所有的 1 時,就必須從其餘的質隱含項中選擇組合;也有像 Σm(0, 1, 2, 5, 6, 7) 這樣完全沒有必要質隱含項、最簡解有 2 種的函數。本工具不靠目視,而是使用奎因-麥克拉斯基(Quine-McCluskey)法:在表格上有系統地合併只差 1 個變數的項,求出所有質隱含項,再從中找出項數最少、項數相同時文字數最少的組合,因此一定能得到最簡式。人在卡諾圖上能看出相鄰關係的極限約為 4~5 個變數,更大的函數則以這類表格法,或邏輯合成工具中的啟發式演算法來化簡。
積之和(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,即可防止這種突波;因此若電路需要避免危障,請在顯示的最簡式中自行加上這類項。
正確答案:B. 3個輸入中有2個以上為1時
多數決電路在輸入的過半數為1時輸出1,3輸入時即有2個以上為1時。邏輯式為 AB + BC + CA,與全加器的進位輸出邏輯相同。將相同電路做成3份再取多數決的三重冗餘(TMR),即使其中1個因故障或輻射造成位元翻轉,也能維持正確的輸出,因此用於航空、太空設備與高可靠度的伺服器。
正確答案: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 個文字,而且沒有任何必要質隱含項。本工具會顯示其中一種。它們表示的是同一個邏輯函數,所以每一種都是正確答案。
表示該輸入組合不會發生,或即使發生輸出是 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 的兩級電路,確認真值表維持不變。不過模擬器不處理邏輯閘的延遲,因此不會出現由危障造成的突波。