FPGA亞穩態和毛刺小結


 

 

 

 

1首先介紹一下建立時間和保持時間的基本概念:

1.1建立時間和保持時間:                                                                

                                                                                                             

 

              

1.1

tsh:建立時間,th:保持時間

建立時間:是指時鍾觸發器上升沿到來之前,數據穩定不變的時間。如果建立時間不夠,則數據不能在這個時鍾進入觸發器。

保持時間:是指時鍾觸發器上升沿到來之后,數據保持不變的時間。如果保持時間不夠,則數據同樣不能被打入觸發器。

由於PCB走線時,存在分布電感和電容,所以幾納秒的毛刺將被自然濾除,而在PLD內部決無分布電感和電容,所以在PLD/FPGA設計中,競爭和冒險問題將變的較為突出。

2關於毛刺的基本概念:

信號在FPGA內通過連線和邏輯單元時,都會產生延時。延時產生的原因:①:連線的長短和邏輯單元的數目 ,②:受器件的制造工藝、工作電壓、溫度等條件的影響, 所 以在信號變化的瞬間,組合邏輯的輸出有先后順序,往往會產生一些尖峰的信號,這些信號稱為毛刺。如果有毛刺,該電路稱為冒險電路。只由內部電路決定。 

看下面的例子:

      

 

 

  

   我們可以看到,A,B,C,D四個輸入信號,最后導致輸出出現毛刺。原因是A,B,C,D信號輸入不是同時發生。(即使同時發生,它們各自由於連線和邏輯單元的原因,到達門電路的時間也不同。)所以可以說,只要輸入信號同時發生變化,由於走線的原因,必將產生毛刺。所以我們不能直接將其輸出,要進行一些措施。

方法一:格雷碼代替二進制計數器,由於格雷碼每次只有一位進行變化,不滿足產生毛刺的條件。所以可以減小錯誤

方法二:另一種更常見的方法是利用D觸發器的D輸入端對毛刺信號不敏感的特點,在輸出信號的保持時間內,用觸發器讀取組合邏輯的輸出信號,這種方法類似於將異步電路轉化為同步電路。如圖:

       

 

      

 

由於異步輸入不是總能滿足所饋送的觸發器滿足建立時間和保持時間,所以常常會產生亞穩態。

3關於亞穩態知識的基本概念

 

 

圖1.2:采用一個時鍾同步下的模型

 

 其中:tco為觸發器數據輸出延時;Tdelay=Tcomb 為經過組合邏輯的延時 ;Tsetup(tsu)為建立時間;Tpd為時鍾延時,一般時鍾延時可以忽略。

 

 

1.1亞穩態的特點:

   ①增加觸發器進入穩態的時間:

 

如圖 ,如果滿足正常建立時間和保持時間,則Tco為觸發器的延時。如果違反觸發器的時序要求:則會在延時后出現亞穩態時間tR。

 

②:可能輸出毛刺,震盪,或中間電平

 經過一段時間后,亞穩態會處於穩定狀態,有可能是高電平,也有可能是低電平。與數據無關,與電路有關。且在亞穩態狀態時,會出現毛刺,震盪或者輸出中間電平。

如例:

 

 

 

F1 <= local_2m輸入,F0 <= local_2m輸入,local_2m和cdr_2m都是2MHz的方波信號,被一個50MHz的異步時鍾作同步化處理。Verilog代碼為:

always @(posedge clk_50m)

  if(sel==1)begin

    clk2m_oa <= cdr_2m ;

    clk2m_ob <= cdr_2m ;

  end

  else begin

    clk2m_oa <= local_2m ;

    clk2m_ob <= local_2m ;

  end

 

 

分析出現亞穩態的原因:首先,2MHZ被50MHZ處理,一定會出現亞穩態,在震盪期間出現高電平,然后為低電平。這個毛刺產生的原因是因為門電路的原因。

 

③:亞穩態返回到哪一個穩定態是不可預測的,而且和輸入數據無關。

 

 

1.2亞穩態的危害:

目前FPGA都是基於同步設計的思想,一個良好的子模塊設計都是基於同一時鍾下設計的。當不同時鍾域進行通信時,就可能產生亞穩態。(如異步FIFO)

①:理論上如果亞穩態一個周期內不能正確恢復成穩定狀態,則目的寄存器也會發生亞穩態,這就是亞穩態的傳播。

②:亞穩態的毛刺直接輸出可能會導致系統錯誤,如送錯中斷。

③:采樣到錯誤的電平,導致功能錯誤。在狀態機內,如果狀態機的正常功能狀態為 2.4.6.8,由於產生產生亞穩態導致狀態機進入1.3.5.7的狀態,會使狀態機掛死在非法狀態。

④:在異步讀取RAM時,讀寫時鍾不一致,如果出現亞穩態,會導致數據讀錯,(或者漏讀,或者漏寫)。

 

1.3亞穩態的處理:

一般來說,只要是異步信號同步化,都會產生亞穩態,只要等待一定的時間,都能恢復成穩定狀態,等待的時間取決於MTBF和期間本身。

MTBF (平均無故障時間)與可靠性如果一個設計中包含同步組件,無論是否願意它都會出現亞穩態。亞穩態無法徹底消除,因此我們所做的就是計算錯誤概率以及在時間上來描述它。讓我們來看一下,假設這里有一個物理系統亞穩態錯誤發生的概率為 1/1000。換句話說,每一千次采樣就會因為亞穩態發生一次錯誤。這也意味着,每一千次,輸出就會在下一個時鍾沿到來時,無法變化。如果時鍾頻率為 1KHz,那么每秒都會有一次錯誤出現,MTBF 值就為 1 秒。當然,這個假設過於簡單;MTBF 是一種故障概率的統計度量,並且需要更為復雜、經驗化、實驗化的數據來計算。對於觸發器來說,這種關系依賴於電路自身的物理常數和時鍾頻率,記住亞穩態本身與時鍾沒有任何關系,但是它和 MTBF 相關。自然的,我們會說一個可靠性好的電路具有很高的 MTBF 值。

①:經典的處理方法為多拍

異步信號經過第一個寄存器,如果發生了亞穩態,2nS(假設MTBF=1000Y)左右返回到穩定態,如果時鍾周期大於2ns(時鍾頻率小於500MHz), 那么顯然第二個寄存器就沒有亞穩態發生了。此時亞穩態的唯一影響就是不能在最准確的時刻識別到異步信號,有可能早一拍,或者晚一拍識別。
    多說一點,為了處理亞穩態,識別異步信號需要的時間就較長(2拍或者更多),這就是目前流行的同步設計的代價。

 

 

②: 降低亞穩態帶來的危害。

 一個良好的設計必須有好的容錯能力,讓設計對亞穩態不敏感。如果亞穩態出現,至少要有能力恢復。
  1.狀態機如果有異步信號輸入,一定要多拍處理異步信號,並且使用安全狀態機,任何情況下不可以讓狀態機掛死在非法狀態。
  2.異步接口不可能做到准確地定時,在預算精度時,必須容忍+/-1拍的延時。
  3.異步FIFO兩個時鍾域的地址交互時,使用格雷碼計數器並多拍處理, 可減低對亞穩態的敏感.
  4.能用低的頻率實現的功能,不要用高的頻率。頻域較高時,要用三拍或者更多的觸發器來降低亞穩態的危害。
  5.較陡的信號邊沿(包括數據和時鍾)有利於降低發生亞穩態的概率。

 

 

 參考文獻:http://blog.sina.com.cn/s/blog_aec06aac01011zgm.html

                  http://wenku.baidu.com/link?url=8XNo2c5svd3R-KGmMbCWO4PCJo8ihAsdErKuKL6NqhFr9RzXjRtCRVfgodC-Xk6oCj86c55X_6_-VWKbSoCw61OVWeQR4VTobx9e4fAV0oe

 

 

 

            

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM