信號由於經由不同路徑傳輸達到某一匯合點的時間有先有后的現象,就稱之為競爭
由於競爭現象所引起的電路輸出發生瞬間錯誤的現象,就稱之為冒險
FPGA設計中最簡單的避免方法是盡量使用時序邏輯同步輸入輸出。
消除競爭冒險的常用方法有以下三種:
- 加濾波電容,消除毛刺的影響
- 加選通信號,避開毛刺
- 增加冗余項,消除邏輯冒險
下面主要介紹增加冗余項的原理
可以先通過邏輯表達式畫出卡諾圖來判斷是否會出現冒險現象,當卡諾圖中的卡諾圈相切,則有競爭冒險
由上圖,圖中的圈稱為卡諾圈,卡諾圈中只能包含1,2,4,8....2^n(n為非負整數)個元素,當該函數在A=B=1時,存在0型邏輯冒險。
圖中紅圈與藍圈有相切的地方,被稱為卡諾圈相切。
- 變量取值在卡諾圈內變化,不存在邏輯冒險;
- 變量取值在相切的卡諾圈跳變時,而這個相切部分又沒有被另外的卡諾圈包圍,則可能存在邏輯冒險。
可能存在冒險的情況實例
注:畫卡諾圖時變化順序為00-01-11-10,每次變化一位,更多項以此類推。