1、毛刺
信號在器件內部通過連線和邏輯單元時有一定的延時。延時的大小與連線的長短和邏輯單元的數目有關,同時還受器件的制造工藝、工作電壓、溫度等條件的影響。信號的高低電平轉換也需要一定的過渡時間。由於存在這兩方面因素,多路信號的電平值發生變化時,在信號變化的瞬間,組合邏輯的輸出有先后順序,並不是同時變化,往往會出現一些不正確的尖峰信號,這些尖峰信號稱為“毛刺”。
2、競爭與冒險
競爭:門電路兩個輸入信號同時向相反的邏輯電平跳變的現象。
冒險:由於競爭而在輸出端可能產生尖峰脈沖的現象。
3、怎么判斷競爭和冒險?
(1)兩個輸入變量:
- ①代數法,輸出端的邏輯函數某一個變量同時以原變量和反變量的兩種形式出現。
- ②卡諾圖法,只要在卡諾圖中存在兩個相切但不相交的圈。
(2)多個輸入變量
- ①計算機輔助分析
- ②實驗檢查
4、怎么消除毛刺(競爭和冒險)?
(1)輸出接濾波電容;
(2)組合邏輯輸出加寄存器;
(3)組合邏輯中加入冗余項;
(4)引入選通信號;
(5)采用格雷碼;
5、時序邏輯電路是否存在競爭和冒險?
時序電路也存在競爭冒險,這是由D觸發器端輸入信號之間的競爭產生的。為了保證觸發器可靠的翻轉,輸入信號和時鍾信號在時間配合上應該滿足一定的要求,然而當輸入信號和時鍾信號同時改變,而且途經不同的路徑到達同一觸發器時,便產生了競爭,有可能導致觸發器誤動作,這種現象稱為存儲電路的競爭冒險現象。時序電路存在以下兩種競爭冒險:
1)異步復位中,clk上升沿與rst_n下降沿同時到達。rst_n信號的優先級高於clk信號,這樣在rst_n到來時實現的是復位操作。
2)異步復位中,clk上升沿與rst_n上升沿同時到達。當rst_n上升沿達到時,D觸發器在理論上完成復位了,但是此時如果clk恰好在rst_n信號釋放周圍,系統該聽誰的?此時在運行電路中,也會出現短暫的競爭-冒險現象,系統不穩定。
6、什么是流水線冒險?
冒險有結構冒險、數據冒險和控制冒險三種。解決通用辦法是在流水線中插入流水線氣泡直至冒險消除。
- 結構冒險:由於資源沖突而使硬件無法支持所有可能的指令組合同時執行。例如在單端口存儲器執行讀寫操作過程,假設流水線要求同一時鍾周期內要對存儲器進行訪問兩次,這樣的話就會產生存儲器讀寫沖突。這種情況可以再增加一個時鍾周期,即將流水線停止一個周期(產生一個流水線氣泡)。另一種方法就是使用不同的存儲器或者多端口存儲器,消耗更多的資源。(采用使能信號推遲時鍾,使得流出流水線氣泡時間)
- 數據冒險:指令執行需要之前指令的計算結果,而這個結果在流水線中還沒有計算出來。解決辦法就是使用數據/寄存器轉移,進行縱向氣泡延遲,從而解決問題。
- 控制冒險:分支的流水線和其他指令改變程序計數器的值。由於分支所需的數值需要后續的計算流水才可以 產生 ,這是我們需要將流水停止幾個周期知道從重新獲取下一條數值進行判斷,使風險降低到最小。
