胡靜
摘 要 卡諾圖是數字電子技術中常用的基本工具,除了用于化簡外,它還有許多應用,作者通過多年的教學進行了總結,并通過例子進行了詳細論述。
關鍵詞 卡諾圖 設計 應用
中圖分類號:TN47 文獻標識碼:A
0引言
卡諾圖是美國工程師Karnaugh在上世紀50年代首先提出來的,主要應用于數字邏輯函數的化簡。在卡諾圖中,將n個變量的全部最小項各用一個小方塊來表示,并且使那些具有邏輯相鄰關系的最小項在幾何位置上也相鄰或相對排列,通過觀察其幾何關系就可以確定如何合并最小項,將復雜的化簡難題變成了簡單直觀的幾何問題。
1用卡諾圖化簡邏輯函數
用卡諾圖化簡邏輯函數實質上是用配項的方法。在用小規(guī)模集成門電路(SSI)設計組合邏輯電路時,為保證設計結果最簡,必須先將邏輯函數化成最簡式(一般為最簡與或式)?;喌姆椒ㄓ泄椒ê涂ㄖZ圖法,應用公式法時能否化成最簡取決于化簡者對公式的熟練程度,尤其在變量數達到四、五個時比較難掌握。但是,需要怎樣選擇最小項進行合并才是合理的卻并不容易看出來,如果采用卡諾圖卻可以將這一難題簡單化解,在卡諾圖中每一個小方塊對應一個最小項,將邏輯函數用卡諾圖表示出來實際上就是配項的方法。由于卡諾圖是平面幾何圖形,具有直觀的優(yōu)點,所以能方便的確定合并最小項的方法,并保證化簡結果最簡。
2用卡諾圖將邏輯函數化為最小項表達式
在進行邏輯設計時并不是都要將邏輯函數寫成最簡式,相反,在許多情況下,需要用中規(guī)模(MSI)、大規(guī)模(LSI)器件完成設計時,不僅不能寫成最簡式,而必須寫成最小項(或最大項)表達式。如果按傳統(tǒng)的方法通過配項去寫是很麻煩的,能否利用卡諾圖直接寫出邏輯函數的最小項表達式呢?初學者在填卡諾圖時都是先將邏輯函數配項成最小項表達式后才填入卡諾圖中,在熟悉了以后可以不用配項而直接將邏輯函數填入卡諾圖中。下面以四變量函數為例舉例說明。
例一:
如圖一所示:對于乘積項A B C對應于卡諾圖中AB取值為00的一行與C取值為0的兩列(D取1或0均可)的交叉處對應的兩個最小項m0和m1;對于ACD則對應于A取0的兩行與CD取11的列交叉所對應的最小項m3和m7;對于AC D則對應于A取1的兩行與CD取00的列交叉所對應的最小項m8和m12。
3用卡諾圖判斷有無競爭——冒險現(xiàn)象
在閻石先生的《數字電子技術基礎》中介紹了這樣一種情況,就是當輸入變量每次只有一個改變狀態(tài)時,如果邏輯式在一定條件下可以化成Y=A+A或Y=A*A的形式,就可判定存在競爭——冒險現(xiàn)象。例如對于例一,當A=0,B=0,D=1時原式變?yōu)閅=C+C,存在競爭——冒險,當B=C=D=0時原式變?yōu)閅=A+A也存在競爭——冒險,可以通過添加冗余項A B D 和B C D 來消除。
如圖一所示,先將邏輯函數填入卡諾圖中,式中的每個乘積項對應用一個矩形框圈起來(類似化簡時的做法),然后觀察,如果某兩個矩形框存在有邏輯相鄰項,則一定存在競爭——冒險現(xiàn)象,發(fā)生競爭——冒險的條件就是這兩個相鄰項對應乘積項的取值。如圖二所示,上例中框A B C和框ACD 有相鄰項,將相鄰的最小項合并得所對應的乘積項為A BD,即說明當滿足條件A=0,B=0,D=1時存在競爭——冒險,該乘積項A BD即為所需添加的冗余項;同樣,框A B C和框AC D也有相鄰項,合并得乘積項B C D,即說明當滿足條件B=C=D=0時存在競爭——冒險,該乘積項也即為所需添加的冗余項。最后添加了冗余項以后的表達式應該為:
Y=A B C + A CD + A C D +A B D + B C D。
4對時序邏輯電路自啟動的判斷
在時序邏輯電路的設計中,自啟動設計是一個重要環(huán)節(jié),如果等到電路設計出來后經檢驗發(fā)現(xiàn)不能自啟動,這時再去修改邏輯設計是很麻煩的。借助卡諾圖可以在設計過程中發(fā)現(xiàn)電路能否自啟動并可以指導修改設計。
例二:設計一個七進制計數器,狀態(tài)轉換圖如圖三,要求能自啟動。
由狀態(tài)轉換圖可得它的次態(tài)卡諾圖如圖四,如果按常規(guī)方法合并最小項,從卡諾圖可以看出,無關項XXX在化簡中不被使用(被視作000),即狀態(tài)000的次態(tài)仍是000,電路不能自啟動,如果將無關項定義為有效循環(huán)中的任意一個狀態(tài)即可實現(xiàn)自啟動,比如定義為001,則狀態(tài)000的次態(tài)是001,電路能夠自啟動。
5在用數據選擇器設計組合邏輯電路中的應用
在用具有n位地址的數據選擇器設計n+1變量邏輯函數時,應用卡諾圖可以輕松實現(xiàn)。我們知道,具有n位地址的數據選擇器可以設計成任意n變量或n+1變量組合邏輯函數,教科書中都是把所求函數的表達式化為最小項表達式然后和數據選擇器的表達式進行對比而得,這種做法在設計成n變量邏輯函數時還比較方便,但在設計成n+1變量函數時需要先配項再變形才能進行比較,其實利用卡諾圖可以比較簡單地完成。
例三:用八選一數據選擇器CC1452設計四變量邏輯函數Z=ABCD+ A B D + B CD + A B,八選一數據選擇器的表達式為Y = m0D0 + m1D1 + …… + m7D7 。按常規(guī)方法把原式配項后寫成Z=A B C *D + A B C*0 + A B C *1 + A B C *1 + A B C *1 + ABC *D + ABC *0 + ABC*D,令地址端A2 = A,A1 = B,A0 = C,對比兩式可知應令數據端D0 = D7 = D,D5 = D ,D1 = D6 = 0,D2 = D3 = D4 = 1,則Y = Z即為所求。
可以看出,這樣做比較麻煩,如果用卡諾圖則簡便得多。如圖五所示,將原式填入卡諾圖中,也可以將卡諾圖變換成右邊所示的表格(讓表中的最小項按自然二進制數從小到大排列),表中數據端D0――D7的取值原則是:每一行對應的最小項方框中如果沒有填入1則對應數據端取0,如果填入有兩個1則對應數據端取1,如果只填入一個1,則填左邊取反變量,填在右邊取原變量。
以上是我的一點見解,望以此拋磚引玉,請各位同行批評指正。
參考文獻
[1] 閻石.數字電子技術基礎(第五版)[M].北京:高等教育出版社,2006.5.
[2] 康華光.電子技術基礎 數字部分(第五版)[M].北京:高等教育出版社,2000.6.