邊沿型觸發器的輸出有兩個穩定狀態: 高電平或者低電平。為保證可靠操作, 必須要滿足觸發器的時序要求,也就是我們熟知的建立時間和保持時間。如果輸入訊號違反了觸發器的時序要求, 那麼觸發器的輸出訊號就有可能會出現非法狀態—亞穩態。亞穩態是一種不穩定狀態,在一定時間後, 最終返回到兩個穩定狀態之一。亞穩態輸出的訊號是什麼樣子的? 對於系統有什麼危害? 如果降低亞穩態帶來的危害? 這是下面要**的問題。
[文中有幾張對於了解本文很關鍵,如果不能顯示,請參考部落格相簿中topic2.png]
亞穩態的特點:
1. 增加觸發器進入穩定狀態的時間。
亞穩態的壞處之一是會導致觸發器的tco時間比正常情況要大。多出來的時間tr (resolution time) 就是亞穩態持續的時間,參考圖1。如果觸發器的時序要求tsu(建立時間)和th(保持時間)被滿足,那麼觸發器的延時tco=tco_norm; 否則如果違反了觸發器的時序要求,那麼觸發器在經過tco_norm時間後,進入亞穩態,亞穩態持續的時間叫做resolution time,標識為tr。tr過後,亞穩態返回到兩個穩定狀態之一。
認識fpga觸發器的亞穩態
圖 1
資料的跳變距離觸發器的取樣時刻越近,tr就越大。這種關係參見圖2.
認識fpga觸發器的亞穩態
器件製造商給出的tsu和th指標都是有餘量的。輕微的違反tsu或者th並不會發生亞穩態,只是導致觸發器的tco超出器件的規範(spec)。只有當資料的跳變出現在亞穩態捕捉視窗w (見圖2中的w,fs級別的時間視窗),才會發生亞穩態。總的來說,資料的跳變越靠近w視窗,觸發器進入穩定態的時間就越長。
在同步設計中,源觸發器(source flipflop)的輸出必須在乙個時鐘週期內穩定下來,才能夠被目的觸發器(destination flipflop)準確取樣。如果tr過大,可能讓目的暫存器取樣到亞穩態,會導致亞穩態的傳播。
2. 輸出毛刺、振盪、或中間電平亞穩態的危害
目前主流的fpga都是基於同步設計思想。乙個良好的子模組設計都是同步於同乙個時鐘的子系統。當不同時鐘域的多個模組進行通訊時,就可能會發生亞穩態。
另外,同乙個時鐘域內,如果時序不滿足,比如由於組合邏輯和走線的延時過大,導致源暫存器的跳變到達目的暫存器的時刻剛好位於時鐘的跳變沿,也會發生亞穩態。當然,在同步模組中,對於乙個時序收斂良好的設計,不會存在亞穩態的情況。
1. 理論上講,如果亞穩態不能夠在乙個時鐘週期內返回到穩定態,那麼目的暫存器也會發生亞穩態。這就是亞穩態的傳播。
2. 亞穩態的毛刺直接輸出,有可能導致系統錯誤。比如毛刺訊號送給cpu做中斷,可能導致cpu產生錯誤的中斷響應。
3. 取樣到錯誤的電平,導致功能錯誤。這是邏輯設計人員最容易遇到的問題。最典型的例子是,假設有乙個4bits one-hot編碼的狀態機。正常的功能只有四個狀態0,2,4,8。但是這個狀態機的有多個非同步輸入訊號,那麼就會發生亞穩態。我們知道,亞穩態返回到1或者0是隨機的,這樣就會出現狀態機的輸入有非法的組合,導致狀態機進入到非法狀態。如果狀態機沒有安全編碼保護,狀態機就會掛死在非法狀態。
4. 破壞block ram的內容。在讀取ram時,如果生成讀位址的時鐘和ram的讀時鐘是非同步的,那麼讀取也會破壞ram的內容。基本上是因為讀ram會伴隨乙個自動的回寫動作,這是大多數cmos fpga的特性。回寫的時候,由於在位址上發生了亞穩態,導致某乙個位址的內容回寫到了另外的位址上,從而破壞了ram的內容。
亞穩態的處理
理論上講,非同步訊號輸入到乙個同步系統,亞穩態是不可避免的。現實問題是如何降低亞穩態帶來的危害,如何降低亞穩態發生的概率。
亞穩態最終會返回到穩定態,因此只要等足夠的時間,就可以免受亞穩態的危害。亞穩態返回的時間tr(resolution time)是個很複雜的問題,取決於系統的mtbf要求和器件本身。總的來是很短的。對於90nm或者更小的工藝,在可以接受的mtbf如10年內,tr大約在1ns左右;mtbf如2023年內,tr大約在2ns左右,具體可以諮詢響應的fpga製造商。
1. 降低亞穩態發生的概率。
經典的處理方法是多拍同步。參見圖5的correct method.
非同步訊號經過第乙個暫存器,如果發生了亞穩態,2ns(假設mtbf=1000y)左右返回到穩定態,如果時鐘週期大於2ns(時鐘頻率小於500mhz), 那麼顯然第二個暫存器就沒有亞穩態發生了。此時亞穩態的唯一影響就是不能在最準確的時刻識別到非同步訊號,有可能早一拍,或者晚一拍識別。
多說一點,為了處理亞穩態,識別非同步訊號需要的時間就較長(2拍或者更多),這就是目前流行的同步設計的代價。非同步設計較好的解決了這個問題,非同步設計靠硬體握手機制來反饋什麼時候識別成功。有興趣的朋友可以了解一下乙個新興的fpga公司achronix。
作為對比,我們看看圖5中的wrong method. 第一拍觸發器在接收非同步訊號後,產生了亞穩態。由於經過了組合邏輯和走線的延時,亞穩態傳播到目的暫存器的時間增大很多。這種情況下,只有在很低速的時鐘頻率時,第二拍觸發器才可以避免亞穩態。因此是不正確的處理方法。
降低亞穩態帶來的危害。
乙個良好的設計必須有好的容錯能力,讓設計對亞穩態不敏感。如果亞穩態出現,至少要有能力恢復。
狀態機如果有非同步訊號輸入,一定要多拍處理非同步訊號,並且使用安全狀態機,任何情況下不可以讓狀態機掛死在非法狀態。
非同步介面不可能做到準確地定時,在預算精度時,必須容忍+/-1拍的延時。
非同步fifo兩個時鐘域的位址互動時,使用格雷碼計數器並多拍處理, 可減低對亞穩態的敏感.
能用低的頻率實現的功能,不要用高的頻率。頻域較高時,要用三拍或者更多的觸發器來降低亞穩態的危害。
較陡的訊號邊沿(包括資料和時鐘)有利於降低發生亞穩態的概率。
觸發器的認識
觸發器的認識 一 觸發器簡介 觸發器 trigger 是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作 insert,delete,update 時就會啟...
觸發器的認識
觸發器的認識 一 觸發器簡介 觸發器 trigger 是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作 insert,delete,update 時就會啟...
對觸發器的認識
對觸發器的認識 解答 觸發器是表上的程式,主要提供資料新增 修改與刪除後的程式處理方法,可以用來檢查資料及進行資料更新,也可以分擔一些前端應用程式撰寫的邏輯規則。用場景 觸發器可以查詢其他表,而且可以包含複雜的sql語句。它們主要用於強制複雜的業務規則或要求。觸發器的主要應用場合概括起來講有以下幾種...