王兆東,劉向軍
(華北電力大學(xué)電氣與電子工程學(xué)院,北京102206)
序列檢測(cè)電路的設(shè)計(jì)是時(shí)序邏輯電路設(shè)計(jì)中的內(nèi)容之一,它一直是學(xué)生學(xué)習(xí)數(shù)字電路中的難點(diǎn)。同步米里型序列檢測(cè)電路設(shè)計(jì)是國(guó)內(nèi)外許多教材文獻(xiàn)中反復(fù)引用的一個(gè)例子[1-3],但本人在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)該例題存在沒(méi)有檢測(cè)到序列時(shí)就輸出了檢測(cè)到信號(hào)的錯(cuò)誤輸出,系統(tǒng)工作出現(xiàn)不正常的問(wèn)題。在文獻(xiàn)[4]中,認(rèn)為輸出波形存在問(wèn)題的原因是狀態(tài)化簡(jiǎn)后的電路有可能不能正常工作了,這種說(shuō)法有待商榷,因?yàn)?,電路正常運(yùn)行時(shí),電路處于有效狀態(tài),一定能滿足狀態(tài)轉(zhuǎn)換,與狀態(tài)化簡(jiǎn)無(wú)關(guān),而只有在無(wú)效狀態(tài)下輸入X時(shí)出現(xiàn)錯(cuò)誤運(yùn)行與化簡(jiǎn)有關(guān)系。在文獻(xiàn)[5]中,為確保系統(tǒng)正常工作,在所設(shè)計(jì)電路的基礎(chǔ)上,輸出增加一個(gè)延遲環(huán)節(jié),使電路等到輸入改為下一位輸入數(shù)據(jù)時(shí)才輸出,是解決輸出錯(cuò)誤的方法之一,但是,這并沒(méi)有找到問(wèn)題的根源,因?yàn)閱?wèn)題發(fā)生在輸入與時(shí)鐘不同步,以及無(wú)效態(tài)的次態(tài)任意,常常會(huì)引起輸出錯(cuò)誤,并且調(diào)整過(guò)程缺乏規(guī)律,還需在輸入解決根本問(wèn)題。
本文分析了米里型序列檢測(cè)電路存在的主要問(wèn)題,給出了確保電路正常工作的有效方法。
同步米里型序列檢測(cè)電路設(shè)計(jì)的一般步驟包括以下幾部分[6]:首先根據(jù)設(shè)計(jì)要求,分析邏輯功能,獲得原始狀態(tài)轉(zhuǎn)換圖,進(jìn)行狀態(tài)化簡(jiǎn),得出最簡(jiǎn)的狀態(tài)轉(zhuǎn)換圖;為每個(gè)狀態(tài)分配代碼(狀態(tài)編碼),畫(huà)出編碼后的狀態(tài)轉(zhuǎn)換圖;選定觸發(fā)器的類型和個(gè)數(shù),列寫帶有驅(qū)動(dòng)端的狀態(tài)轉(zhuǎn)換表;利用卡諾圖化簡(jiǎn)求出驅(qū)動(dòng)方程和輸出方程;檢查能否自啟動(dòng),不能自啟動(dòng)應(yīng)修改設(shè)計(jì),最后畫(huà)出邏輯電路圖。
設(shè)計(jì)一個(gè)時(shí)序邏輯電路目標(biāo)是完成指定的邏輯功能,如果運(yùn)行出現(xiàn)錯(cuò)誤,那么設(shè)計(jì)不合理,需要對(duì)電路進(jìn)行修正。
多年來(lái)國(guó)內(nèi)外許多教材長(zhǎng)期反復(fù)引用的一個(gè)例子是設(shè)計(jì)一個(gè)同步米里型時(shí)序邏輯電路實(shí)現(xiàn)串行數(shù)據(jù)檢測(cè),當(dāng)連續(xù)輸入3個(gè)或3個(gè)以上1時(shí)輸出為1,否則輸出為0。
按照時(shí)序邏輯電路的設(shè)計(jì)方法,文獻(xiàn)[1]中的例5 ~例9,取S0=00,S1=01,S2=11,選用上升沿觸發(fā)D觸發(fā)器實(shí)現(xiàn),對(duì)觸發(fā)器的每個(gè)驅(qū)動(dòng)端和整個(gè)邏輯電路的輸出進(jìn)行卡諾圖化簡(jiǎn)后,得到驅(qū)動(dòng)方程和輸出方程:
最后,根據(jù)驅(qū)動(dòng)方程和輸出方程,得到邏輯電路圖如圖1所示。
圖1 111序列檢測(cè)的邏輯電路圖
文獻(xiàn)[1]中檢查了電路能夠自啟動(dòng),其完整的狀態(tài)圖如圖2所示。
圖2 完整的狀態(tài)轉(zhuǎn)換圖
2.1.1 存在的問(wèn)題
對(duì)于上述電路的輸出進(jìn)行分析,結(jié)果表明,當(dāng)初狀態(tài)是10,且X為1時(shí),代入輸出方程,輸出為1。電路輸出1表明接受到了3個(gè)和3個(gè)以上的1,顯然,無(wú)效的狀態(tài)為初狀態(tài),接收到一個(gè)1時(shí)就輸出了1,不符合題意,它沒(méi)有任何含義。
2.1.2 解決方法
在不應(yīng)該輸出1的時(shí)候輸出了1,究其原因是狀態(tài)轉(zhuǎn)換表中將無(wú)效狀態(tài)對(duì)應(yīng)的輸出設(shè)為了任意,這樣的處理不符合題意,在卡諾圖化簡(jiǎn)時(shí)利用了這個(gè)任意項(xiàng),所以有了一個(gè)錯(cuò)誤的輸出,需要修正。
與其設(shè)計(jì)完再修正,不如在設(shè)計(jì)中,就應(yīng)該按照題意設(shè)置,確定無(wú)效態(tài)對(duì)應(yīng)的輸出為0。修正方法是修改狀態(tài)裝換表,將現(xiàn)狀態(tài)10對(duì)應(yīng)的輸出改為0。
此時(shí),輸出的表達(dá)式為:
輸入的序列X一般有電平碼和脈沖碼兩種形式,如果電平碼與時(shí)鐘同步,已知111序列檢測(cè)中的輸入波形對(duì)應(yīng)的輸出波形如圖3所示,輸出波形正常,符合題意。
圖3 X輸入為電平序列且與時(shí)鐘同步時(shí)的波形分析
但是,在有些情況下是不能正常工作的,檢測(cè)到兩個(gè)1時(shí)就輸出了1。
2.2.1 存在的問(wèn)題
(1)X輸入為電平碼與時(shí)鐘不同步
當(dāng)X輸入為電平碼與時(shí)鐘不同步時(shí),其波形分析如圖4所示,輸出波形在連續(xù)輸入兩個(gè)1則錯(cuò)誤地輸出了1,與題意不符。
圖4 X輸入為電平序列且與時(shí)鐘不同步時(shí)的波形分析
(2)X輸入為脈沖碼
當(dāng)輸入X為脈沖碼時(shí),分析其波形如圖5所示。在連續(xù)輸入兩個(gè)1之后同樣產(chǎn)生了錯(cuò)誤的輸出1,與題意不符。
圖5 X輸入為脈沖序列的波形分析
2.2.2 解決方法
米里型電路的輸出不僅與狀態(tài)有關(guān),還與輸入有關(guān),輸出不一定與時(shí)鐘同步,但是隨時(shí)會(huì)受到輸入的影響。分析兩種情況,原因是輸入的X與時(shí)鐘不同步,如果能把任意的輸入都調(diào)整到與時(shí)鐘同步,就可實(shí)現(xiàn)如圖3的波形分析,輸出就會(huì)符合題意要求。
為了使X與時(shí)鐘同步,在X加入檢測(cè)電路時(shí)先加一延遲環(huán)節(jié),如D[7]觸發(fā)器,從而保證輸出的正確,改進(jìn)后的電路如圖6所示。
圖6 改進(jìn)電路
(1)X輸入為電平碼調(diào)整后與時(shí)鐘同步
在圖6所示的改進(jìn)電路中,可將圖4中的電平碼X加延遲后調(diào)整為X',波形如圖7所示。
圖7 電平序列加延遲后的序列X'
(2)X輸入為脈沖碼調(diào)整后與時(shí)鐘同步
在圖6所示的改進(jìn)電路中,可將圖5中的脈沖碼加延遲后調(diào)整為X',波形如圖8所示。
圖8 脈沖碼經(jīng)延遲后的序列X'
輸入序列經(jīng)整理后的為X',使序列與時(shí)鐘達(dá)到同步,那么所設(shè)計(jì)的電路可實(shí)現(xiàn)如圖3所示的波形分析,完成111序列檢測(cè),消除了不應(yīng)該輸出1卻輸出了1的現(xiàn)象。
對(duì)于含有無(wú)效狀態(tài)的時(shí)序邏輯電路,假如電路由于某種原因進(jìn)入無(wú)效狀態(tài),在有限個(gè)時(shí)鐘脈沖作用下最終能到有效的循環(huán)狀態(tài)中,則稱該電路具有自啟動(dòng)能力[8]。
2.3.1 存在問(wèn)題
由圖2可知,設(shè)計(jì)的電路圖能夠自啟動(dòng),在卡諾圖化簡(jiǎn)時(shí)任意態(tài)的使用恰好使?fàn)顟B(tài)轉(zhuǎn)換符合題意。但是,同樣是111序列檢測(cè),設(shè)計(jì)方法相同,只是按照S0=00,S1=01,S2=10進(jìn)行狀態(tài)編碼,那么對(duì)所設(shè)計(jì)的電路進(jìn)行自啟動(dòng)檢查,將得到如圖9所示的狀態(tài)轉(zhuǎn)換圖。由圖9可知,雖然能夠自啟動(dòng),但是狀態(tài)轉(zhuǎn)換并不符合題意,不能描述原始狀態(tài)表所描述的功能。比如,當(dāng)輸入序列11110110111序列時(shí),輸出應(yīng)該為00110000001,如果從無(wú)效狀態(tài)開(kāi)始,則會(huì)輸出11110000001,顯然輸出不符合要求,經(jīng)歷2個(gè)時(shí)鐘后電路工作正常。文獻(xiàn)[1]中101序列檢測(cè)的設(shè)計(jì)結(jié)果,也存在這個(gè)問(wèn)題,當(dāng)輸入序列10101011101時(shí),輸出應(yīng)該為00100010001,但是如果從無(wú)效狀態(tài)開(kāi)始,則會(huì)輸出10001000001,序列檢測(cè)經(jīng)歷6個(gè)時(shí)鐘后才能正常,沒(méi)有規(guī)律可循。
圖9 按S0=00,S1=01,S2=10編碼所設(shè)計(jì)電路對(duì)應(yīng)的狀態(tài)轉(zhuǎn)換圖
2.3.2 解決方法
有此現(xiàn)象的原因,是無(wú)效狀態(tài)的次態(tài)不合理,是狀態(tài)轉(zhuǎn)換表的無(wú)效狀態(tài)對(duì)應(yīng)任意次態(tài)引起的。所以,電路雖然能自啟動(dòng),但是也應(yīng)該修正其驅(qū)動(dòng)方程。狀態(tài)編碼為S0=00,S1=01,S2=10的111序列檢測(cè)電路的設(shè)計(jì)中,無(wú)效狀態(tài)的次態(tài)不應(yīng)該選擇任意,當(dāng)輸入0時(shí),次態(tài)應(yīng)設(shè)為S0;當(dāng)輸入1時(shí),次態(tài)應(yīng)設(shè)為S1,修正其驅(qū)動(dòng)方程,進(jìn)而修正所設(shè)計(jì)的電路。還以輸入11110110111序列為例,假設(shè)初態(tài)為無(wú)效態(tài)11,則能夠輸出00110000001,符合題意。
此例說(shuō)明,時(shí)序邏輯電路的設(shè)計(jì)在狀態(tài)轉(zhuǎn)換表的分析中不能一律把無(wú)效狀態(tài)的次態(tài)看成任意,在設(shè)計(jì)中應(yīng)該根據(jù)題意確定次態(tài),既能保證了電路能自啟動(dòng),又能使?fàn)顟B(tài)轉(zhuǎn)換不會(huì)出現(xiàn)錯(cuò)誤。
在米里型同步時(shí)序邏輯電路的設(shè)計(jì)中,電路的輸出不應(yīng)該有任意項(xiàng),只有規(guī)定的序列下輸出才為1,可直接獲得輸出的表達(dá)式,不需要卡諾圖化簡(jiǎn),也不需要修正;當(dāng)輸入與時(shí)鐘不同步或脈沖序列時(shí),在輸入端加延遲環(huán)節(jié),調(diào)整輸入與時(shí)鐘同步,保證了輸出的正確;無(wú)效態(tài)的次態(tài)任意,常常會(huì)引起輸出錯(cuò)誤,并且調(diào)整過(guò)程缺乏規(guī)律,所以,本文建議其次態(tài)應(yīng)該根據(jù)題意確定而不是任意態(tài)。此方法,在同步米里型時(shí)序邏輯電路的設(shè)計(jì)中有通用性。
[1]李月喬.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:中國(guó)電力出版社出版,2002:268-295
[2]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].4版.北京:高等教育出版社,1997:286-290
[3]康華光.數(shù)字電子技術(shù)基礎(chǔ)[M].4版.北京:高等教育出版社,1997:286-290
[4]龍勝春.米里電路設(shè)計(jì)的狀態(tài)化簡(jiǎn)問(wèn)題[J].電氣電子教學(xué)學(xué)報(bào),2002,24(4):52-53
[5]陳云洽.串行數(shù)據(jù)檢測(cè)器的設(shè)計(jì)[J].電氣電子教學(xué)學(xué)報(bào),2006,28(2):110-113
[6]徐勇謙,萬(wàn)延.時(shí)序邏輯電路設(shè)計(jì)方法[J].科技創(chuàng)新導(dǎo)報(bào),2008(10):61-62
[7]張富彬,HO Ching-yen,彭思龍.靜態(tài)時(shí)序分析及其在IC設(shè)計(jì)中的應(yīng)用[J].電子器件,2006,29(4):1330-1333
[8]任俊原.基于次卡諾圖的JK激勵(lì)函數(shù)最小化方法及時(shí)序邏輯電路自啟動(dòng)設(shè)計(jì)[J].浙江大學(xué)學(xué)報(bào)(理學(xué)版),2010,37(4):425-427