簡談FPGA設計中亞穩態現象

2021-10-14 18:15:06 字數 1366 閱讀 2145

今天和大俠簡單聊一聊fpga設計中亞穩態現象,話不多說,上貨。

說起亞穩態,首先我們先來了解一下什麼叫做亞穩態。亞穩態現象:訊號在無關訊號或者非同步時鐘域之間傳輸時導致數字器件失效的一種現象。

接下來主要討論在非同步時鐘域之間資料傳輸所產生的亞穩態現象,以及如何降低亞穩態現象發生的概率(只能降低,不能消除),這在fpga設計(尤其是大工程中)是非常重要的。

亞穩態的產生:所有的器件都定義了乙個訊號時序要求,只有滿足了這個要求,才能夠正常的在輸入端獲取資料,在輸出端輸出資料。正常的資料傳遞是:在觸發時鐘沿前必須有一小段時間(tsu)用來穩定輸入訊號(0 or 1),觸發時鐘沿之後需要有一小段特定的時間(th)再次穩定一下,最後再經過乙個特定的始終到輸出延時(tco)後才有效。如果資料的傳遞過程違反了這個時間約束,那麼暫存器輸出就會出現亞穩態,此時輸出的資料是不穩定的(在0和1之間遊蕩)。但是這種現象並不是絕對的,但是我們在實際設計中應當盡量避免這種現象。

同步時鐘系統由於是同步的,沒有兩個非同步的觸發訊號對訊號的輸入輸出干擾,所以亞穩態的機率很小。

非同步時鐘系統:舉個例子,如下:

這是非同步的,rst_n的觸發和clk的觸發各自不相干(造成的亞穩態概率較高)。

同步時鐘系統:舉個例子,如下:

這是同步的,rst_n在clk上公升沿的時候才產生影響,此時造成的亞穩態概率低很多。

非同步時鐘系統充分的利用了暫存器的埠,無需增加另外的資源,但是亞穩態的概率相對高;

同步時鐘系統少用了clk復位埠,額外消耗了了資源,但是降低了亞穩態的發生概率 上述非同步例子中,如果clk上公升沿時,rst-n=0,那麼執行m<=1;但是rst_n和clk變化的時間差很短,不滿足穩態時間要求的就會相互干擾,造成亞穩態的發生。當然有的人會認為同步似乎也會產生這種影響,但是相對而言機率小得多。

在此前提下,使用非同步復位,同步釋放的設計方法,既解決了同步復位的資源消耗問題,也極大的降低了非同步復位的亞穩態風險。

非同步復位:當rst_n= 0 時,乙個clk的上公升沿,輸出的rstn_out=0,實現了非同步復位功能(當然這在只有乙個暫存器的一級緩衝下也能實現),重點在於同步釋放環節。 同步釋放:當rst_n在clk上公升沿后很短的時間內回歸1,那麼就會造成前一級的亞穩態的出現,其實後一級也出現了,但是如果rst_n被認為仍然是0,那麼輸出也就是0,如果被認為是1,rstn_out接受的是前一級的上乙個輸出值(還是0),這就是同步釋放的由來,完美解決問題。

這是本人學習初學fpga的學習筆記,僅供參考。

江湖偌大,繼續闖蕩,願大俠一切安好,有緣再見!

簡談系統設計

系統設計是把需求轉化為軟體系統的最重要的環節。系統設計的優劣在根本上決定了軟體系統的質量。系統設計要比純粹的程式設計困難得多。天下西湖三十六,最美是杭州 千年前的蘇東坡大學士對西湖精彩絕倫的系統設計,使杭州榮公升為 天堂 讓後人只剩下讚嘆和破壞的份了。系統設計大體上包含四個方面的內容 體系結構設計 ...

簡談FPGA學習中亞穩態現象

說起亞穩態,首先我們先來了解一下什麼叫做亞穩態。亞穩態現象 訊號在無關訊號或者非同步時鐘域之間傳輸時導致數字器件失效的一種現象。接下來主要討論在非同步時鐘域之間資料傳輸所產生的亞穩態現象,以及如何降低亞穩態現象發生的概率 只能降低,不能消除 這在fpga設計 尤其是大工程中 是非常重要的。亞穩態的產...

設計模式簡談 單例模式

確保乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。既然只能有乙個例項 單例模式的主要作用是確保乙個類只能有乙個例項存在,那麼這個模式可以用在隨機數生成器,計數器,管理器等等工具類。或者如果某個類建立乙個新物件會消耗很多資源的話,我們也可以使用單例模式來減少資源的消耗。這裡我們使用c 作...