一、什么是亞穩態
首先康康百度怎么解釋亞穩態的:亞穩態是指觸發器無法在某個規定時間段內達到一個可確認的狀態。當一個觸發器進入亞穩態時,既無法預測該單元的輸出電平,也無法預測何時輸出才能穩定在某個正確的電平上。在這個穩定期間,觸發器輸出一些中間級電平,或者可能處於振盪狀態,並且這種無用的輸出電平可以沿信號通道上的各個觸發器級聯式傳播下去。
根據百科解釋,可以提煉以下特點:
1)亞穩態違背了時序,無法在規定時間成為穩態。
2)亞穩態輸出不確定,但是會傳給后一級觸發器。這會導致后級電路出錯。所以亞穩態危害很大。
3)亞穩態最終都會穩定下來,但需要較長的時間。
二、亞穩態是怎么產生的
根據1.1,我們知道亞穩態是由於違背了觸發器的建立(Tsu)和保持時間(Th)而產生的。
首先解釋幾個基本概念:
Tsu為建立時間:是指在觸發器的時鍾信號上升沿到來以前,數據穩定不變的時間,如果建立時間不夠,數據將不能在這個時鍾上升沿被穩定的打入觸發器,Tsu就是指這個最小的穩定時間。
Th為保持時間:是指在觸發器的時鍾信號上升沿到來以后,數據穩定不變的時間,如果保持時間不夠,數據同樣不能被穩定的打入觸發器,Th就是指這個最小的保持時間。
Tco為輸出時間:是觸發器在clk時鍾上升沿到來之后需多長的時間才能穩定輸出的的時間。
Tmet:亞穩態輸出恢復到穩定狀態所需的超出Tco的額外時間稱為穩定時間,即經過這段時間,亞穩態變成穩態了。
如果數據傳輸中不滿足觸發器的Tsu和Th,就會造成數據不穩定,從而導致亞穩態。
其核心在於:數據不穩定
三、如何避免亞穩態
如果規定一個特定時間長度,數據在這個時間長度內還不能穩定,則會造成亞穩態。那么定義這個時間長度為亞穩態窗口。
如上面所述,只要滿足了建立時間和保持時間,就能避免亞穩態。對於亞穩態窗口來說,窗口越大,進入亞穩態的概率也越大。
在FPGA/IC設計當中,異步信號、跨時鍾域信號都是亞穩態高發區。
對於異步信號,一般采用多級同步器,可以避免亞穩態的發生。
相當於拉長了整體的Tsu和Th,讓數據有足夠的時間穩定下來。
對於跨時鍾域信號,采用FIFO對跨時鍾域數據進行緩沖,讓信號在FIFO中穩定后再輸出。
特別注意的是,上述方法只能降低亞穩態發生的概率,如果亞穩態還是發生了,那么上述方法並不能阻止亞穩態傳輸給后級電路。