一個(gè)邏輯函數(shù)的卡諾圖就是將此函數(shù)的最小項(xiàng)表達(dá)式中的各最小項(xiàng)相應(yīng)地填入一個(gè)特定的方格圖內(nèi) ,此方格圖稱為卡諾圖。因此,卡諾圖是邏輯函數(shù)的一種圖形表示??ㄖZ圖是美國(guó)工程師karnaugh在20世紀(jì)50年代提出的。
下面從討論一變量卡諾圖開(kāi)始,逐步過(guò)渡到多變量的卡諾圖。
大家知道,n個(gè)變量的邏輯函數(shù)有2n個(gè)最小項(xiàng),因此一個(gè)變量的邏輯函數(shù)有兩個(gè)最小項(xiàng)。設(shè)變量為d,則最小項(xiàng)為和d,分別記為m0和m1,即m0=,m1=d 。這兩個(gè)最小項(xiàng)可用兩個(gè)相鄰的方格來(lái)表示,如圖1(a)所示。方格上的和d分別表示原變量和非變量。為了簡(jiǎn)明起見(jiàn),非變量可以不標(biāo)出,只標(biāo)出原變量d,即可得圖1(b)。圖1(c)是進(jìn)一步的簡(jiǎn)化畫法,其中m0、m1只用其下標(biāo)編號(hào)來(lái)表示。
圖1 1變量卡諾圖
如果邏輯函數(shù)的變量增為兩個(gè),設(shè)為c、d,則2變量邏輯函數(shù)的最小項(xiàng)為22=4項(xiàng),即,,,m3=cd。由于有4個(gè)最小項(xiàng),可用4個(gè)相鄰的方格來(lái)表示。這4個(gè)方格可以由折疊了的1變量卡諾圖展開(kāi)來(lái)獲得,如由圖2(a)按箭頭方向展開(kāi)成圖2(b)。在圖2(b)中,變量d標(biāo)在圖的底下,標(biāo)的規(guī)律符合展開(kāi)的規(guī)律(參看圖1c),中間兩格底下為d,兩邊的兩格底下為(圖中未標(biāo)出)。因?yàn)樽兞縞的標(biāo)法必須區(qū)別于d,這樣就有兩種可能的標(biāo)法,可以標(biāo)在展開(kāi)前方格的頂上,也可標(biāo)在展開(kāi)后新的兩個(gè)方格的頂上,圖(b)采用后一種標(biāo)法,以保持左邊的第一格仍為m0項(xiàng),即維持展開(kāi)前兩方格最小項(xiàng)序號(hào)不改變。由圖2(b)可看到一個(gè)規(guī)律:新的方格內(nèi)最小項(xiàng)的編號(hào)比對(duì)應(yīng)的原方格增加了2n-1=22-1=2。按照這個(gè)規(guī)律折疊圖2(a)時(shí),方格1后面為方格3,方格0后面為方格2,展開(kāi)后即得圖2(b)所示的2變量卡諾圖。
圖2 2變量卡諾圖
綜上所述,可歸納折疊展開(kāi)的法則如下:
1.新增加的方格按展開(kāi)方向應(yīng)標(biāo)以新變量。
2.新的方格內(nèi)最小項(xiàng)編號(hào)應(yīng)為展開(kāi)前對(duì)應(yīng)方格編號(hào)加2n-1。
按照同樣的方法,可從折疊的2變量卡諾圖展開(kāi)獲得3變量卡諾圖。3變量邏輯函數(shù)l(b,c,d)應(yīng)有8個(gè)最小項(xiàng),可用8個(gè)相鄰的方格來(lái)表示,這8個(gè)方格可由圖3(a)展開(kāi)成圖3(b)來(lái)獲得。新增加的4個(gè)方 格按展開(kāi)方向應(yīng)標(biāo)以新增加的變量b(以區(qū)別于原來(lái)的變量c、d)。而且,新增加的方格內(nèi)最小項(xiàng)的編號(hào)比展開(kāi)前對(duì)應(yīng)方格編號(hào)增加2n-1=23-1=4,這樣即可獲得3變量卡諾圖,如圖3(b)所示。在圖中,可根據(jù)某一方格所處的位置,列出該方格代表的最小項(xiàng),例如,2號(hào)方格處于變量為的區(qū)域,則,余類推。
圖3 3變量卡諾圖
同理,可得4變量卡諾圖,如圖4所示。
圖44變量卡諾圖
在使用時(shí),只要熟悉卡諾圖上各變量的取值情況(即方格外各變量a、b、c、d等的取值的區(qū)域),就可以直接填入對(duì)應(yīng)的最小項(xiàng)。