FPGA的亞穩態跟MTBF

FPGA的亞穩態跟MTBF

博主微信:flm13724054952,不懂的有疑惑的也可以加微信諮詢,歡迎大家前來投稿,謝謝!

引言

看了許多網上介紹亞穩態的博文,有些介紹得不是很到位,例如在介紹亞穩態的時候並沒有一起介紹了MTBF(mean time between failure,平均無故障時間),甚至有一些“歧義”的介紹比較使人誤導,這篇博文主要了描述了我自己對FPGA中的亞穩態跟MTBF的瞭解。介紹亞穩態是怎樣產生的,還有它是怎樣導致設計的失敗。並舉例子介紹MTBF由亞穩態得出的平均無故障時間可以告訴設計者是否應該去降低出現失效的機率。這篇博文將告訴你如何由各種設計和器件參數計算出平均無故障時間,如何通過一些設計技巧優化或者規避亞穩態來提高系統的穩定性。當然本文都是博主跟公司工程師們交流及自己研究理解的,如果有不到位的歡迎批評並交流。

亞穩態

在所有的數字器件中如FPGA的寄存器都有各自的時序要求,只有滿足了時序要求,寄存器才能在輸入端捕捉數據並在輸出端輸出穩定的數據。在前面博文介紹的電路靜態時序分析可知,爲保證電路正常,信號應該在寄存器捕獲沿前的“建立時間Tsu”之前翻轉變換並保持穩定到寄存器捕獲沿後的“保持時間Th”,然後經過Tco(始終捕獲沿到寄存器Q端所需的時間)纔會輸出有效(穩定)。如果一個數據信號的翻轉變換違反了寄存器的Tsu跟Th,寄存器的輸出就可能會是亞穩態。在產生亞穩態中,輸出會在高電平跟低電平來回震盪的時間叫做Tmet(從亞穩態震盪到穩定狀態的0或者1的過程叫做決斷時間,resolution time),這個時候輸出翻轉到0或者1的延遲可能會超過時鐘沿到寄存器輸出端的延遲(注意是Tmet>Tco)。
下面是我從很多博文看到的一張時序解釋圖在這裏插入圖片描述
由圖可知,當產生亞穩態後Tco時間後會有Tmet(決斷時間)的振盪時間段,當振盪結束回到穩定狀態時爲“0”或者“1”,這個是隨機的。因此,會對後續電路判斷造成影響。 這張時序圖給我的感覺就是難道Tco==Th?,兩者很明顯是不同的概念,另外許多博文圖片的描述都是震盪時間Tmet是在Tco之後開始算的??,我看了Alter官網的白皮書介紹與公司工程師們的交流則看法不一樣,亞穩態Tmet是在信號違反時序而馬上觸發的,而不是在違反之後還要經過Tco之後才觸發進入決斷時間Tmet。所以對於亞穩態的時序圖我的看法則如下所示:當input在時鐘上升沿(捕獲沿)前的Tsu建立時間裏翻轉變換,即爲input violates在經過寄存器觸發進入亞穩態Tmet的震盪時間,其震盪時間大於Tco。而決斷時間Tmet是取決於製造商的工藝與電路系統的工作環境,大部分情況下寄存器會從亞穩態快速的進入到穩定狀態。但是並不代表系統完全沒事,系統的穩定性更多時候取決於MTBF。 當然以上是自己的研究瞭解,如果大家有其他看法,歡迎提出交流批評,歡迎共同進步。
在這裏插入圖片描述

亞穩態的危害

是不是當電路發生亞穩態就會導致系統失效呢?這個答案很明顯是否定的。當寄存器捕獲輸出發生亞穩態,但是如果能在同步給下一個寄存器的capture數據之前恢復到穩定狀態(下一個寄存器時鐘捕獲沿的Tsu之前保持穩定),那麼就不會導致設計失敗而消極的對系統造成影響。但是當如果寄存器輸出亞穩態的決斷時間Tmet如果大於Tco以及到下一個寄存器路徑上的時間餘量,那麼下一個同步寄存器就會得到一個不確定的不一致邏輯狀態而導致設計的失敗跟系統失效。

亞穩態的產生

在上面的描述中,我們在廣義上已經知道其實亞穩態的產生原因主要是因爲違反了寄存器的時序要求而導致輸出的震盪。但是其實亞穩態從其產生的方式主要分爲三大類:
第一類:在同步系統電路里面,可以說就是組合邏輯路徑上的延遲大等原因而造成違反寄存器的時序要求。
這一類的解決方式比較好解決,一般較少路徑延遲即可,而這種在同步系統電路里面其亞穩態的產生是比較小概率的,只要不違反時序,保證電路餘量即可。
第二類:在多時鐘跨時域的系統電路里面,因爲發送域寄存器時鐘與接收域寄存器時鐘的時鐘相位移不確定,而導致發送域數據有可能隨時到達接收域寄存器(隨時到達而不滿足寄存器的Tsu跟Th),所以會導致寄存器產生亞穩態。
這一類的解決方式有多種方法,例如總線傳輸,異步FIFO傳輸等方式,這裏不做詳細描述,在後面的博文將再做詳細介紹。
第三類:異步復位而導致系統電路產生亞穩態。因爲異步復位信號有可能隨時復位在時鐘沿的附近,而導致系統產生亞穩態。這一類的解決方式有“異步復位,同步釋放”等,也在後面的博文將再做詳細介紹。

平均無故障時間(MTBF)

對於亞穩態來說,我們沒有辦法把他完全消滅,只能做的是看如何優化電路,在時間上來衡量他發生錯誤的概率是多大。
如果在一個FPGA系統電路里面存在多個獨立(異步)時鐘,並且存在多時鐘跨時域(clock domain)之間的信號傳輸,那麼電路會出現亞穩態。出現亞穩態的平均時間間隔常用“平均無故障時間” (MTBF, Mean Time Between Failure)來表示。數據的頻率,時鐘頻率及寄存器的工作溫度、電壓、輻射等因素都對MTBF有影響。平均無故障時間一般根據系統應用需求而定,例如一個醫療設備額平均無故障時間要大於一個消費型的音響。提高平均無故障時間有利於減少系統在信號傳輸過程因亞穩態而帶來的風險。下圖是平均無故障時間MTBF的計算公式:
在這裏插入圖片描述
從上圖的計算可以看得出,MTBF與觸發器的時鐘頻率密切相關,甚至受到時鐘頻率的影響極大,但是注意一點的是亞穩態發生的概率與時鐘的頻率無關,只是MTBF與觸發器的時鐘頻率有密切聯繫。例如對於一個系統來說,可能觸發器的時鐘頻率爲20MHZ時,系統MTBF爲5年,但是當觸發器時鐘爲40MHZ時,可能MTBF只剩下一分鐘了。例如假設觸發器的時鐘頻率爲10MHZ,而輸入數據頻率爲3KHZ,其MTBF如下圖所計算的:
在這裏插入圖片描述

MTBF的提高

提高平均無故障時間有利於減少系統在信號傳輸過程因亞穩態而帶來的風險。那我們應該如何提高MTBF呢,從上圖MTBF的計算公式來說,我們可以看得出MTBF取決於電路寄存器的工藝及電路的Tmet(Tr,在不引起同步失敗的前提下亞穩態可持續的最長時間)。
提高MTBF的第一種辦法:提高工藝,例如從180nm的工藝提高到90nm的工藝,更快的供電電壓跟更快的晶體管可以使亞穩態信號更快的穩定下來。晶體管的速度提升通常來說也是提高了亞穩態的平均無故障時間。
提高MTBF的第二章辦法:採用3-5的同步鏈裝置,來提高電路的Tmet/Tr,根據系統應用的MTBF需求甚至可以採用更高更多的同步鏈。例如:如果給定器件和運行條件下的Tmet是50ps,則在Tmet上提高200ps則提高MTBF的e^4倍,即50多倍,然而如果提高400ps則累乘e8是3000多倍。
爲了增加Tmet可以增加同步鏈的寄存器個數,因爲寄存器到寄存器之間的時間餘量都會加到Tmet中去,一般來說,在面對跨時域數據交匯的電路,爲了更好的亞穩態保護,一般會採用兩級同步鏈電路。經典的兩級同步鏈的電路設計圖如下所示:
在這裏插入圖片描述

總結

當信號在異步時鐘域中傳輸或者因爲異步復位亞穩態就會發生。而亞穩態失效的平均無故障時間與器件的工藝,設計規格和同步邏輯中的時序裕量有關。FPGA設計者可以使用一些設計技巧提高Tmet或增加同步寄存器中的時序裕量來提高系統可靠性和平均無故障時間。

參考書籍

https://wenku.baidu.com/view/036beaf9aef8941ea76e0568.html FPGA的亞穩態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章