今天寫一下時序問題常見的跨時鐘域的亞穩態問題。
先說明一下亞穩態問題:
D觸發器有個明顯的特征就是建立時間(setup time)和保持時間(hold time)
如果輸入信號在建立時間和保持時間發生變化,則可能產生亞穩態,如果在時鐘上升沿也就是D觸發器采樣期間,輸入點評判斷為1則輸出為1,如果是0則輸出為0,另外一種情況就是在時鐘上升沿時,D在發生變化,在中間思考跳轉很久,但不知道Dinput跳到0還是1(此狀態出現概率非常低,但會出現)到下一個時鐘還沒有思考好是0還是1,沒有出現穩定狀態,這就是亞穩態。[1]
總結:在FPGA系統中,如果數據傳輸中不滿足觸發器的Tsu和Th不滿足,或者復位過程中復位信號的釋放相對于有效時鐘沿的恢復時間(recovery time)不滿足,就可能產生亞穩態,此時觸發器輸出端Q在有效時鐘沿之后比較長的一段時間處于不確定的狀態,在這段時間里Q端在0和1之間處于振蕩狀態,而不是等于數據輸入端D的值。這段時間稱為決斷時間(resolution time)。經過resolution time之后Q端將穩定到0或1上,但是穩定到0或者1,是隨機的,與輸入沒有必然的關系。[2]
總結亞穩態問題產生場景:1)跨時鐘域的信號傳輸,由于源信號時鐘與目的信號時鐘的相移未知,可能導致保持時間和建立時間條件不滿足,從而產生亞穩態現象。2)異步信號,最常見的為異步復位信號,由于異步信號不與觸發器同步時鐘同步,所以可能導致保持時間和建立時間條件不滿足,產生亞穩態現象。
(建立時間保持時間條件:數據在建立時間和保持時間保持穩定)
亞穩態導致的后果:
一般情況下亞穩態產生的后果為產生不可預知的數據,或者在前面所述亞穩態第三種情況可能導致系統崩潰。在數據表現方面來說會產生毛刺、突變等現象。影響系統后續的邏輯判斷和程序整體運行走向。
一般FPGA的建立時間和保持時間加起來為1ns左右,所以可以根據概率論來計算亞穩態產生的概率,也就是同步時鐘周期的倒數。
亞穩態的串擾,也就是D觸發器處于震蕩狀態時會影響后續觸發器的狀態,一般來說如果震蕩狀態不超過同步時鐘周期,也就不會串擾下一個觸發器導致下一個觸發器也產生振蕩,一般工程上來講串兩至三個觸發器基本就可以保證不串擾。(是可能不串擾,不是一定不串擾,串擾的可能性很小)
針對上述的亞穩態問題,常見的解決方法:
1)通過對異步信號邊沿提取實現異步信號同步處理,在邊沿提取過程中也要防止亞穩態串擾,進行多寄存器緩存減小亞穩態串擾的可能性。
2)通過FIFO實現異步信號同步處理。
3)對于異步時鐘通過異步復位同步釋放的方法實現亞穩態大可能的消除:
異步復位,同步釋放就是對異步復位時鐘進行兩次或兩次以上緩存,盡可能的減少亞穩態信號進入到系統內部。
在進行異步復位同步釋放的時候一定能夠要進行至少兩次緩存,這樣才能保證亞穩態串擾的可能性大大降低。
原文標題:【FPGA】幾種時序問題的常見解決方法
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
時鐘
+關注
關注
10文章
1733瀏覽量
131451 -
時序設計
+關注
關注
0文章
21瀏覽量
43927
原文標題:【FPGA】幾種時序問題的常見解決方法
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論