盧容德 (長江大學(xué)電子信息學(xué)院,湖北 荊州434023)
時序邏輯電路經(jīng)典的設(shè)計方法——驅(qū)動表法,是在完成狀態(tài)編碼的工作后,根據(jù)編碼后的狀態(tài)轉(zhuǎn)換圖和選擇的觸發(fā)器類型,列出對應(yīng)的驅(qū)動表,再根據(jù)驅(qū)動表寫出驅(qū)動函數(shù)和輸出函數(shù)的卡諾圖,用卡諾圖化簡法得出最簡的驅(qū)動函數(shù)和輸出函數(shù)表達式,得出設(shè)計電路。然后根據(jù)電路中各觸發(fā)器的次態(tài)方程,用計算法求出電路無效狀態(tài)的次態(tài),檢查電路是否具有自啟動功能。如果電路不能自啟動,還要適當修改設(shè)計,最后完成電路的設(shè)計任務(wù)[1-3]。這種方法在驅(qū)動函數(shù)的確定和自啟動功能的檢驗等方面,使用起來都顯得比較繁瑣。采用次態(tài)卡諾圖法,直接根據(jù)分離的次態(tài)卡諾圖得出最簡的次態(tài)函數(shù),再根據(jù)次態(tài)方程確定驅(qū)動函數(shù),可以使確定驅(qū)動函數(shù)的過程簡化,但仍然不能改善自啟動功能檢驗的不足[4-5]。為此,筆者直接根據(jù)次態(tài)聯(lián)合卡諾圖確定次態(tài)函數(shù),提出了異步時序邏輯電路設(shè)計的驅(qū)動函數(shù)法和翻轉(zhuǎn)模式法,并舉例說明次態(tài)聯(lián)合卡諾圖在同步和異步時序邏輯電路設(shè)計中的應(yīng)用。
聯(lián)合卡諾圖設(shè)計法與經(jīng)典的設(shè)計步驟完全相同,其不同點是直接根據(jù)次態(tài)聯(lián)合卡諾圖確定最簡次態(tài)函數(shù)。文獻[6]指出,時序邏輯電路的次態(tài)聯(lián)合卡諾圖,既是1個二維的狀態(tài)轉(zhuǎn)換表,又是1個表格式的狀態(tài)轉(zhuǎn)換圖。所以,按照經(jīng)典的設(shè)計方法,只要完成了狀態(tài)編碼的工作,就可以直接得出次態(tài)聯(lián)合卡諾圖。所以,采用次態(tài)聯(lián)合卡諾圖的同步時序邏輯電路的設(shè)計步驟為:①邏輯抽象,得出描述對象過程的原始狀態(tài)轉(zhuǎn)換圖;②狀態(tài)化簡;③狀態(tài)賦值,也叫狀態(tài)編碼;④作出次態(tài)聯(lián)合卡諾圖;⑤確定觸發(fā)器,直接用次態(tài)聯(lián)合卡諾圖得出最簡次態(tài)函數(shù),在化簡的過程中同時考慮自啟動的問題;⑥將次態(tài)函數(shù)與觸發(fā)器的特性方程相比較,確定各觸發(fā)器的驅(qū)動函數(shù);⑦根據(jù)輸出要求確定輸出函數(shù);⑧畫出邏輯電路。
以文獻[4]討論的例題為對象,說明聯(lián)合卡諾圖在同步時序邏輯電路設(shè)計中的應(yīng)用,設(shè)計1個帶有進位輸出的同步13進制加法計數(shù)器,要求電路具有自啟動功能。
本例為計數(shù)器的設(shè)計,故直接進入同步時序邏輯電路的設(shè)計步驟③。按照8421碼編碼,得出13進制加法計數(shù)器的狀態(tài)轉(zhuǎn)換圖,如圖1所示。圖1中,C為進位信號。
圖1 13進制加法計數(shù)器狀態(tài)轉(zhuǎn)換圖
根據(jù)狀態(tài)轉(zhuǎn)換圖,可以得出13進制加法計數(shù)器的次態(tài)聯(lián)合卡諾圖,如圖2(a)所示。為了使卡諾圖清晰可辨,圖2中沒有標出輸出函數(shù)。如果對8421碼加法計數(shù)器的狀態(tài)編碼比較熟悉,可以不用狀態(tài)轉(zhuǎn)換圖,直接寫出次態(tài)聯(lián)合卡諾圖。
圖2 例1的次態(tài)聯(lián)合卡諾圖
選用JK觸發(fā)器實現(xiàn)電路的功能時,根據(jù)圖2(b)中的卡諾圈,確定最簡次態(tài)函數(shù)如下:
畫卡諾圈時,不能將次態(tài)函數(shù)對應(yīng)的現(xiàn)態(tài)變量消去。如化簡Q3的次態(tài)函數(shù)時,不得利用無關(guān)項m15。根據(jù)卡諾圖中無關(guān)項圈了為1,不圈為0的規(guī)則,很容易判別該設(shè)計是否具有自啟動功能。根據(jù)圖2(b),無效狀態(tài)1101、1110、1111的次態(tài)分別為0010、0010、0000,電路能自啟動,故可以根據(jù)上述次態(tài)方程確定驅(qū)動函數(shù)。
根據(jù)狀態(tài)轉(zhuǎn)換圖不難得出進位信號表達式(即輸出函數(shù)):
由此得到滿足設(shè)計要求的8421碼同步13進制加法計數(shù)器邏輯電路,如圖3所示。文獻[6]將已經(jīng)作出的聯(lián)合卡諾圖拆開,再用卡諾圖法求出最簡次態(tài)函數(shù)表達式。檢驗自啟動功能時,將無效狀態(tài)對應(yīng)的編碼代入次態(tài)函數(shù)表達式中計算次態(tài),每個無效狀態(tài)要計算4次,而根據(jù)聯(lián)合卡諾圖檢驗自啟動,無需計算,因為次態(tài)聯(lián)合卡諾圖完整地描述了現(xiàn)態(tài)與次態(tài)的轉(zhuǎn)換關(guān)系。
圖3 同步13進制加法計數(shù)器邏輯電路圖
異步時序邏輯電路的聯(lián)合卡諾圖設(shè)計法與同步時序電路基本相同,其不同點在于觸發(fā)器時鐘信號的確定及由此產(chǎn)生的次態(tài)方程描述方式的變化。
與同步時序邏輯電路相比,異步時序邏輯電路的設(shè)計比較困難,但實現(xiàn)同一個邏輯功能,異步型時序電路比較簡單。采用次態(tài)聯(lián)合卡諾圖進行異步時序邏輯電路設(shè)計,其過程十分簡捷。
描述異步時序邏輯電路的次態(tài)方程為:
式中,Xj(j=1,2,…,m)表示輸入信號;Qi(i=1,2,…,n)表示第i個觸發(fā)器的現(xiàn)態(tài)表示第i個觸發(fā)器的次態(tài)。
式(4)揭示了如下2個基本關(guān)系:①無CP時(CP=0),觸發(fā)器的次態(tài)保持原來的狀態(tài)不變。②有CP時(CP=1),觸發(fā)器的次態(tài)由電路的輸入信號和現(xiàn)態(tài)的組合以及觸發(fā)器的特性方程決定。因而上述次態(tài)方程是異步時序邏輯電路聯(lián)合卡諾圖設(shè)計法的理論基礎(chǔ)。
設(shè)計異步時序邏輯電路的方法包括驅(qū)動函數(shù)法和翻轉(zhuǎn)模式法。
驅(qū)動函數(shù)法的要點是在完成狀態(tài)編碼工作后,首先作出次態(tài)聯(lián)合卡諾圖,再確定各觸發(fā)器的時鐘脈沖,然后寫出卡諾圖中時鐘有效區(qū)內(nèi)電路的次態(tài)函數(shù),最后將次態(tài)函數(shù)與觸發(fā)器的特性方程相比較,得出驅(qū)動函數(shù)的表達式,在時鐘有效區(qū)內(nèi),該方法與同步電路設(shè)計過程相同。
翻轉(zhuǎn)模式法的要點是在作出次態(tài)聯(lián)合卡諾圖后,首先圈出各次態(tài)的變化區(qū)(即翻轉(zhuǎn)區(qū)),再確定滿足驅(qū)動各觸發(fā)器的時鐘脈沖。按該種方法設(shè)計,觸發(fā)器工作在“翻轉(zhuǎn)”(即計數(shù))方式,故驅(qū)動電路簡單。
驅(qū)動函數(shù)法是先確定CP,然后求驅(qū)動函數(shù),而翻轉(zhuǎn)模式法是先確定驅(qū)動函數(shù)(即按照翻轉(zhuǎn)模式驅(qū)動),然后求CP。
例如,在圖4(a)所示的次態(tài)聯(lián)合卡諾圖中,Q0的負跳區(qū)完全覆蓋Q2的變化區(qū),在Q0的負跳區(qū)外,Q2的次態(tài)不變。如果采用驅(qū)動函數(shù)法,則Q2可以選擇負邊沿觸發(fā)的觸發(fā)器,將Q0作為Q2的CP;如果采用翻轉(zhuǎn)模式法,則只需在Q2的翻轉(zhuǎn)區(qū)選擇CP。下面用負邊沿觸發(fā)的JK觸發(fā)器來加以說明。
采用驅(qū)動函數(shù)法時,取CP2=Q0,Q2次態(tài)函數(shù)的卡諾圈如圖4(b)所示。在畫卡諾圈時,要注意以下2點:①在CP有效區(qū)內(nèi)見“1”必圈;②在CP有效區(qū)外,所有最小項都是無關(guān)項,只要化簡需要,見 “0”也可以圈。
圖4 次態(tài)聯(lián)合卡諾圖在異步時序電路設(shè)計中應(yīng)用
按驅(qū)動函數(shù)法得出的Q2的次態(tài)方程如下:
其驅(qū)動方程為:
按翻轉(zhuǎn)模式法得出Q2的時鐘方程如下:
其驅(qū)動方程為:
翻轉(zhuǎn)模式法實際上就是CP“使能”法,即讓覆蓋范圍較大的CP僅僅在觸發(fā)器的翻轉(zhuǎn)區(qū)起作用,此處就是讓Q0↓ 在∑m(11,15)有效。
觀察JK觸發(fā)器的內(nèi)部電路發(fā)現(xiàn),上述2種方法設(shè)計的驅(qū)動電路完全相同,這是因為JK觸發(fā)器的JK信號與CP信號就是邏輯與的關(guān)系。
異步時序邏輯電路設(shè)計中,選擇CP的原則如下:①翻轉(zhuǎn)最頻繁的觸發(fā)器用外接CP驅(qū)動,對于計數(shù)器,該觸發(fā)器是電路的最低位。②高位觸發(fā)器的CP由低位觸發(fā)器提供,低位觸發(fā)器提供的CP稱為內(nèi)部時鐘脈沖。③當?shù)臀挥|發(fā)器不能滿足高位觸發(fā)器CP的要求時,則該高位觸發(fā)器由外接CP驅(qū)動。④直接由外接CP驅(qū)動的觸發(fā)器,其驅(qū)動函數(shù)確定的方法與同步時序邏輯電路的方法相同。⑤當內(nèi)部時鐘脈沖恰好覆蓋高位觸發(fā)器的翻轉(zhuǎn)區(qū)時,則該觸發(fā)器接成翻轉(zhuǎn)模式即可。⑥當內(nèi)部時鐘脈沖覆蓋的范圍大于高位觸發(fā)器的翻轉(zhuǎn)區(qū)時,則該觸發(fā)器的驅(qū)動設(shè)計有驅(qū)動函數(shù)法和翻轉(zhuǎn)模式法。⑦內(nèi)部時鐘脈沖的選擇,可以直接在次態(tài)聯(lián)合卡諾圖中用觀察法確定;也可以用波形圖 (時序圖)進行輔助分析[4]。
具體要求是設(shè)計1個具有自啟動功能的8421碼異步十進制減法計數(shù)器。
按照8421碼編碼后,十進制減法計數(shù)器的狀態(tài)轉(zhuǎn)換圖如圖5所示,圖中,B為借位信號。其次態(tài)聯(lián)合卡諾圖如圖6所示。
圖5 例2的狀態(tài)轉(zhuǎn)換圖
圖6 例2的次態(tài)聯(lián)合卡諾圖
選用負邊沿觸發(fā)的JK觸發(fā)器。首先,確定外接CP直接驅(qū)動觸發(fā)器FF0,直接利用聯(lián)合卡諾化簡Q0的次態(tài)函數(shù)?;啎r考慮到無關(guān)項,不難得出:
由于Q0工作在翻轉(zhuǎn)模式,故有:
故觸發(fā)器FF1驅(qū)動方程為:
接著,標出Q1的負跳區(qū),如圖7(b)所示。按照Q2在Q1的負跳區(qū)內(nèi)翻轉(zhuǎn)、在Q1的負跳區(qū)外保持的原則,標出Q2無效狀態(tài)的邏輯值,如圖7(b)所示。不難發(fā)現(xiàn)的負跳區(qū)恰好覆蓋Q2的翻轉(zhuǎn)區(qū),故可以作為觸發(fā)器FF2的時鐘脈沖并且FF2工作在翻轉(zhuǎn)模式,因此有:
這里,化簡時利用了無關(guān)項m1。
FF3的驅(qū)動方程為:
根據(jù)狀態(tài)轉(zhuǎn)換圖得出借位信號表達式(即輸出函數(shù)):
圖7 利用次態(tài)聯(lián)合卡諾圖的設(shè)計過程
最后,得到滿足設(shè)計要求的8421碼異步10進制減法計數(shù)器邏輯電路,如圖8所示。
根據(jù)圖7(b)所示的次態(tài)聯(lián)合卡諾圖及卡諾圈,考慮的無關(guān)項的邏輯值被圈為1、未圈為0,很容易驗證電路的自啟動性能。完整的狀態(tài)轉(zhuǎn)換圖如圖9所示。
圖8 8421碼異步10進制減法計數(shù)器邏輯電路
圖9 完整的狀態(tài)轉(zhuǎn)換圖
設(shè)計時序電路的關(guān)鍵是如何確定觸發(fā)器的驅(qū)動函數(shù),使用次態(tài)聯(lián)合卡諾圖可以使確定驅(qū)動函數(shù)的過程簡化,而驅(qū)動函數(shù)法和翻轉(zhuǎn)模式法為時序電路設(shè)計的難點,它們?yōu)楫惒綍r序電路的設(shè)計提供了簡便有效的方法。對于時序電路自啟動功能的檢查,無論涉及到同步時序電路還是異步時序電路,次態(tài)聯(lián)合卡諾圖法都具有其獨特優(yōu)勢。
[1]蔣立平.數(shù)字邏輯電路與系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2008.
[2]曹漢房.數(shù)字電路與邏輯設(shè)計[M].武漢:華中科技大學(xué)出版社,2004.
[3]歐陽星明.數(shù)字電路邏輯設(shè)計[M].北京:人民郵電出版社,2011.
[4]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2006.
[5]任駿原.基于次態(tài)卡諾圖的J、K激勵函數(shù)最小化方法及時序邏輯電路自啟動設(shè)計[J].浙江大學(xué)學(xué)報 (理學(xué)版),2010,37(4):425-427.
[6]盧容德.聯(lián)合卡諾圖在邏輯電路分析中的應(yīng)用[J].長江大學(xué)學(xué)報 (自然科學(xué)版 ),2009,6(4):N61-65.