唐普英
(電子科技大學光電信息學院,四川成都610054)
時序邏輯電路是“數(shù)字邏輯設計及應用”課程的重要內(nèi)容,也是數(shù)字系統(tǒng)的核心組成,鎖存器和觸發(fā)器則是時序邏輯電路的基本構(gòu)件,而S-R鎖存器是鎖存器和觸發(fā)器的構(gòu)成基礎。
鎖存器和觸發(fā)器振蕩問題是指它們無法在某個規(guī)定時間段內(nèi)達到一個可確認的狀態(tài)。當它們進入振蕩狀態(tài)時,既無法預測其輸出電平,也無法預測何時輸出才能穩(wěn)定。此時,這種無用的輸出電平可以沿信號通道傳播下去,從而擴大故障面,使問題難以處理[1]。
若要解決數(shù)字系統(tǒng)的振蕩問題,則需探究S-R鎖存器產(chǎn)生振蕩問題的本質(zhì)原因。
借助電路輸入輸出的時序關(guān)系,本文分析S-R鎖存器出現(xiàn)振蕩的原因,從而揭示鎖存器和觸發(fā)器產(chǎn)生振蕩的本質(zhì)機理。這一探討有助于避免該問題的產(chǎn)生,也有助于數(shù)字系統(tǒng)的可靠性設計。
由于S-R鎖存器和S'-R'鎖存器的功能等價關(guān)系,本文僅討論S-R鎖存器的振蕩問題。為了方便分析,我們假設數(shù)字電路中各個門電路延時相同,均為2個單位時間并給定輸入端信號時序,獲得輸出端信號時序,經(jīng)電路延時和功能分析,得出結(jié)論。
(1)從SR=11到SR=00時產(chǎn)生振蕩狀態(tài)
S-R鎖存器如圖1所示。當S=1,R=1時,即輸入S和R同時有效,可得到Q=0,QN=0。在時間t=0+時,S=0,R=0,即輸入S和R同時取消,R、S端同時為0,則經(jīng)1個門延時后(即:時間t=2+時)Q=1,QN=1,并同時反饋到兩個或非門的輸入端,此時兩個或非門的兩個反饋輸入端同時為1。再經(jīng)過1個門延時后(即:時間t=4+時)Q=0,QN=0。鎖存器輸出Q和QN就這樣振蕩下去,在兩個或非門的延時絕對相等的條件下,S-R觸發(fā)器便進入振蕩狀態(tài)。
圖1 S-R 鎖存器[2]
圖2 SR從11到00時出現(xiàn)振蕩狀態(tài)
(2)窄脈寬時出現(xiàn)振蕩狀態(tài)
原始狀態(tài)時如圖3所示,輸入R=S=0,鎖存器Q=0,QN=1。時間t=0+時,S端輸入一個寬度為2個單位時間(假設該脈沖寬度小于要求的最小脈沖寬度,應為門延時的2倍)的正脈沖,經(jīng)過1個門延時后(時間t=2+)QN=0,此時由于R=0,經(jīng)過1個門延時后(時間t=4+)Q=1。由于時間t=2+時S=0,并且此時Q=0,因此經(jīng)過1個門延時后(時間t=4+)QN=1。故在時間t=4+時Q和QN同時等于1,此時輸入S和R都已等于0。此后的時序圖就與上述從SR=11到SR=00的情形一樣,一直振蕩下去。
圖3 S端施加的窄脈寬時出現(xiàn)振蕩
圖4所示為在輸入端S=0,在輸入端R施加一個窄脈寬正脈沖時出現(xiàn)振蕩狀態(tài)的情形。表明:SR鎖存器中,只要一個輸入端保持低電平(即:該端輸入電平無效),另一個輸入窄脈寬脈沖時就會出現(xiàn)振蕩。圖5所示是輸入S=0,輸入R的脈沖寬度足夠?qū)?即:大于要求的最小脈沖寬度)時不出現(xiàn)振蕩狀態(tài)的情形。
圖4 R端施加窄脈寬脈沖時出現(xiàn)振蕩
圖5 R端施加的脈寬夠?qū)挄r不出現(xiàn)振蕩
圖6(a)是D鎖存器的邏輯結(jié)構(gòu)圖,圖6(b)是D鎖存器的邏輯圖。實際上,圖6(a)右端虛線框內(nèi)的兩個非或門就是S'-R'鎖存器(其實S'-R'鎖存器與S-R鎖存器的功能是一樣的,前者表示低電平輸入有效,后者表示高電平輸入有效)。圖7是圖6(a)中各點的時序圖,其中t=2時輸入D由1→0,t=6時使能輸入C由1→0。從圖7可以看到,由于R_L的負脈沖寬度只有2個單位時間,不滿足最小脈沖寬度的要求,導致圖6(a)中S'-R'鎖存器輸出呈現(xiàn)振蕩狀態(tài),圖7中的陰影部分表示振蕩狀態(tài)一直持續(xù)下去。
圖6 D鎖存器
圖7 D鎖存器結(jié)構(gòu)圖中各點的時序圖
圖7之所以出現(xiàn)振蕩狀態(tài),是因為D鎖存器存在建立時間(setup time)的緣故,即:輸入D在鎖存器的使能輸入C的下降沿之前的一小段時間(稱為建立時間)內(nèi)不能變化。因此,D鎖存器輸入端不滿足建立時間關(guān)系,而造成振蕩輸出的本質(zhì)原因是其中的S'-R'鎖存器的輸入脈沖寬度不滿足要求。
由圖6(a)可以看出,當使能信號C為低電平時,與C連接的兩個與非門被關(guān)閉??紤]到該兩個與非門的時延,C下降沿后再經(jīng)歷一小段時間(稱為保持時間,hold time)才能徹底關(guān)閉兩個與非門。因此,輸入D在鎖存器的保持時間內(nèi)也不能變化,才能避免出現(xiàn)振蕩狀態(tài)。由此可見,在D鎖存器的建立時間和保持時間內(nèi),輸入信號D不能變化。
如圖8所示,輸入C的時序關(guān)系不變,而輸入D由1→0的時刻提前到t=0,R_L的負脈沖寬度是4個單位時間,滿足最小脈沖寬度的要求,鎖存器的輸出穩(wěn)定。如圖9所示,輸入C的時序關(guān)系不變,而輸入D由1→0的時刻移到t=8,R_L不存在負脈沖,鎖存器的輸出也穩(wěn)定。
圖8 t=0時D由1→0,輸出穩(wěn)定
圖9 t=8時D由1→0,輸出穩(wěn)定
觸發(fā)器分為D、JK和T三種類型,由于JK觸發(fā)器和T觸發(fā)器均可通過D觸發(fā)器轉(zhuǎn)換得到[3]。因此下面僅討論D觸發(fā)器的振蕩問題。
圖10是D觸發(fā)器(上升沿觸發(fā))內(nèi)部結(jié)構(gòu)圖,它是由兩個D鎖存器構(gòu)成。由上述討論知道,當輸入D不滿足鎖存器的建立時間和保持時間的關(guān)系時,將產(chǎn)生振蕩。可見D觸發(fā)器的輸入時序不滿足要求時也將出現(xiàn)振蕩問題。但從觸發(fā)器、鎖存器和S-R鎖存器的組成關(guān)系看,觸發(fā)器的振蕩問題歸根結(jié)蒂還是S-R鎖存器的振蕩問題。
圖10 D觸發(fā)器內(nèi)部結(jié)構(gòu)圖
圖11是D觸發(fā)器(上升沿觸發(fā))的時序圖,時鐘CLK的前3個上升沿對應的輸入滿足了建立時間和保持時間的要求,輸出穩(wěn)定的狀態(tài);時鐘CLK的第4個上升沿對應的輸入不滿足建立時間和保持時間的要求,輸出呈現(xiàn)振蕩狀態(tài)(如圖11中波形Q的陰影部分所示);時鐘CLK的第5個上升沿對應的輸入滿足建立時間和保持時間的要求,輸出穩(wěn)定的狀態(tài)。
圖11 D觸發(fā)器(上升沿觸發(fā))時序圖
從上述分析可以得出:觸發(fā)器的振蕩問題歸根結(jié)蒂是S-R鎖存器的振蕩問題。S-R鎖存器出現(xiàn)振蕩有兩種原因:①S-R鎖存器輸入端S和R從同時有效變?yōu)橥瑫r無效;②鎖存器輸入端S或R的脈沖寬度不夠。
觸發(fā)器出現(xiàn)振蕩狀態(tài)的原因是輸入不滿足建立時間和保持時間關(guān)系,其根本原因則是S-R鎖存器輸入端S或R的脈沖寬度不夠。
[1]http://baike.baidu.com/view/931945.htm?fr=aladdin.
[2]John F.Wakerly.數(shù)字設計原理與實踐(原書第4版)[M].林生,葛紅,金京林 譯,北京:機械工業(yè)出版社,2007年5月.
[3]楊方.對觸發(fā)器邏輯功能轉(zhuǎn)換的分析[J].長春:長春大學學報,2012,22(6):644-646.