冒險 (數字電路)
產生原因
數字電路中,輸入的數字信號改變或進行一些邏輯運算(如非、與、或等)時,輸出信號沒有能完全同步改變,從而引發短暫時間內的錯誤信號脈衝輸出,這種錯誤信號的脈衝很窄,被稱作「毛刺」(英語:glitch)[1]。
分類
最常見的三種冒險現象分別是靜態冒險、動態冒險和功能冒險。
- 靜態冒險(static hazard):輸入信號的改變只引起一個錯誤信號脈衝
- 動態冒險(dynamic hazard):輸入信號的改變引起多個錯誤信號脈衝
- 功能冒險(function hazard):多個輸入信號變化不同步產生的錯誤信號
輸出信號毛刺為負向脈衝的為0型冒險,通常在與或、與非、與或非型電路中出現;輸出信號為正向脈衝的為1型冒險,通常在或與、或非型電路中出現。[2]:95頁
危害
冒險現象持續的時間很短暫,但是危害卻不小。特別是在時序邏輯電路中,如果冒險發生在時間邊沿時,輸出信號的冒險會造成嚴重的後果。
消除方法
冒險現象是一種臨時性的問題,因為電路最終會穩定在所需要的功能信號上。儘管這樣,消除冒險還是十分必要,特別是當信號需要接入下一級系統裡時。
設計無冒險的電路
設計一個不發生冒險的數字電路是消除冒險的最理想的辦法。但是,這種方式對於一些複雜的電路來說,設計出的電路會比較複雜,使電路變得更為複雜,甚至導致成本的上升。簡單電路的靜態冒險則可以應用這個方法。
卡諾圖
在卡諾圖中圈選「1」或「0」的時候,如果可以避免某一個所選區域與另一個區域相切,即可避免冒險現象的發生。不過,這種卡諾圖圈選方式雖然可以消除因邏輯設計產生的冒險,以上圈選方式得到的最小項積之和式或最大項和之積式很可能不是最簡與或式或最簡或與式,即產生了冗餘項。[2]:96頁
選通法
冒險通常是在輸入信號改變後的較短時間內發生,如果在錯誤信號的脈衝消退後再進行讀值,也能避免錯誤信號造成的危害。實際可以使用選通電路來實現此功能。
使用濾波電路
採用額外的濾波電路也可以緩解錯誤信號的脈衝。通常,錯誤信號脈衝都是高頻信號,和正常的、所需要的信號頻率差別較大,可以通過濾波電路進行消除。這種方式的缺點則在於,錯誤信號雖然被消除了,但是輸出信號的上升沿和下降沿也隨之被破壞。[2]:94頁
參考文獻
- ^ 劉寶琴、王德生、羅嶸. 逻辑设计与数字系统. 北京: 清華大學出版社. : 111頁. ISBN 978-7-302-09320-6 (中文(中國大陸)).
- ^ 2.0 2.1 2.2 鄧元慶、關宇、賈鵬、石會. 数字设计基础与应用. 北京: 清華大學出版社. ISBN 978-7-302-21406-9 (中文(中國大陸)).