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