在實際的電路設計過程中,存在傳播延時和信號變換延時。由延時引起的競爭與冒險現象會影響輸出的正確與否。下面將就競爭與冒險產生的原因,判斷方法和避免競爭與冒險的方法進行討論,希望對諸位有所幫助。
產生原因
競爭:在組合邏輯電路中不同路徑的輸入信號到達同一個門級電路時,在時間上有先有后,這種先后時間上的差異稱之為競爭(Competition)
冒險:由于競爭的存在,信號在過渡時間瞬間可能產生錯誤的輸出,例如尖峰脈沖。成為冒險。
有競爭不一定產生冒險,但是有冒險一定存在競爭。
判斷方法
代數法
在電路的邏輯表達式中保持一個變量不變,其余變量用0或者1替代如果邏輯表達式可以化成:
F = A + ~A
或
F = A·~A
的形式則可以判斷出此邏輯存在競爭與冒險。
卡諾圖法
存在兩個相切的卡諾圖,若在相切處沒有其他卡諾圖包圍,可能會出現競爭與冒險現象。如下圖所示:
F = ~A·~B + A·C
F = A·~B + B·~C
消除方法
常見的避免競爭與冒險的辦法有以下四種:
增加濾波電容,濾除窄脈沖
在輸出端并聯一個小電容,將尖峰脈沖幅度削弱至門電路閾值以下。這種方法的突出問題是會增加輸出電壓的翻轉時間,容易破壞波形。
修改邏輯,增加冗余項
在卡諾圖中兩個相切的圈之間增加一個圈,并加入邏輯表達式之中。如下圖所示:
F = ~A·~B + A·C + ~B·C
使用時鐘同步電路,利用觸發(fā)器進行打拍延遲
同步電路信號的變化都發(fā)生在時鐘邊沿,對于D觸發(fā)器的輸入端而言,只要毛刺不出現在時鐘上升沿并且還不滿足建立保持時間要求,就不會對系統(tǒng)產生危害,即D觸發(fā)器對輸入端毛刺不敏感。因此在時鐘邊沿驅動下,對組合邏輯信號進行延遲打拍即可消除競爭冒險。實際設計過程中可以根據設計需求對信號進行合理的打拍延遲。
采用格雷碼計數器
在遞加的多bit位計數器,計數值有時候會發(fā)生多bit的跳變,產生短暫的尖峰脈沖。而格雷碼計數器,計數時相鄰的數之間只有一個bit數據發(fā)生跳變,所以能有效避免競爭與冒險。
總結
在消除競爭與冒險的辦法中,增加濾波電容和邏輯冗余都不是在代碼層面考慮的問題。利用觸發(fā)器在時鐘同步電路下對異步信號進行打拍延時常在Verilog中使用。
審核編輯 黃宇
-
電路
+關注
關注
171文章
5816瀏覽量
171590 -
競爭冒險
+關注
關注
0文章
2瀏覽量
5004
發(fā)布評論請先 登錄
相關推薦
評論