基于FPGA的三模冗余容錯技術研究
為了選擇需要進行三模冗余的模塊并進行合理的布局布線,將系統(tǒng)出現(xiàn)的錯誤分為持續(xù)性錯誤和非持續(xù)性錯誤。持續(xù)性的錯誤是指由SEU產生的改變了電路內部狀態(tài)的錯誤;非持續(xù)性錯誤是指可以通過FPGA重構而消除的錯誤,而持續(xù)性錯誤在重構后依然存在。
結合以上的分析,實施部分TMR的優(yōu)先級別如下:
第一級是會產生持續(xù)性錯誤的部分。
第二級是會導致能產生連續(xù)性錯誤電路部分出錯的電路,以降低TMR和非TMR之間的轉換為準則。
第三級是會產生持續(xù)性錯誤電路的前向部分,同樣以降低TMR和非TMR之間的轉換為準則。
第四級是與會產生持續(xù)性錯誤電路部分獨立的部分。
可以通過靜態(tài)的分析來對電路進行劃分。這里存在的問題是在標準的全局TMR中,所有的輸入、輸出以及時鐘都進行了三模冗余,而使用部分TMR時,對I/O以及時鐘的冗余有可能不能被實現(xiàn)。和沒有采用TMR的邏輯電路一樣,沒有進行TMR的時鐘和I/O同樣可以產生不能被檢測的錯誤。
由實驗結果來看,由于此方法主要著重于能產生持續(xù)性錯誤的電路部分,所以當所使用的冗余資源增多時,持續(xù)性的錯誤出現(xiàn)的幾率很快的降低,最終幾乎全部被克服掉。所以采用部分TMR可以在資源和可靠性間達到平衡,在最小限度影響可靠性的條件下,最大限度地提高資源利用率。
另外,一個翻轉有可能改變配置存儲器中控制布線的配置位,而使得兩個不同冗余模塊間的連線短路,這樣一個翻轉影響了TMR中不止一個模塊,導致輸出錯誤。而配置資源中的90%都用來控制布線,所以這個問題是需要考慮的。產生這種錯誤的可能性還依賴于TMR的布局,而TMR的布局直接依賴于多數(shù)表決器的數(shù)量。當表決器增多時,模塊之間需要額外的連接,所以各模塊必須靠得很近,這樣使得一次翻轉導致模塊之間短路的可能性增加。為了降低會影響TMR穩(wěn)健性的產生改變布線的錯誤的可能性,必須最大可能地減少各個模塊之間的連接。如果多數(shù)表決器的數(shù)量可以被降下來,那么模塊之間的連接可以減少。
解決這個問題的方法是采用較大粒度的TMR以降低它們之間的連接,且表決器只應用在電路輸出部分。但同時又出現(xiàn)了一個新的問題,例如為對存儲單元的狀態(tài)進行修復,Xilinx提出了將表決器應用在有寄存器的地方并加入反饋以糾正翻轉對寄存器中值的影響的XTMR方法,如果內部的表決器被去掉,那么出錯部分存儲單元的錯誤將得不到糾正,所以重構后它與其他模塊工作的狀態(tài)不同步。
文獻中解決這個問題的方法是通過從外部存儲器中讀取存儲的工作狀態(tài)。但是這個方法需要三個模塊離線后才能進行狀態(tài)的存儲和重置進而達到同步。顯然可行性不高,尤其是對實時性要求高的電路。
針對此問題,文獻提出了一種同步技術,該技術TMR系統(tǒng)中采用狀態(tài)寄存器復制機制,并在三個冗余模塊之間引入數(shù)據(jù)通路來傳輸狀態(tài)寄存器的數(shù)據(jù)。當某一個冗余模塊發(fā)生故障被局部重構后,能夠通過接受主控制器的令牌,從正常模塊復制狀態(tài)寄存器的數(shù)據(jù)來完成同步而及時地恢復工作。該方法縮短了故障模塊從修復到重新加入系統(tǒng)工作的時間,從而減小發(fā)生故障積累的概率,提高冗余系統(tǒng)的可靠性。
另一種方法是預測其他模塊最快會達到的狀態(tài),然后對重構后的模塊進行狀態(tài)的預置。這時只需使要重構的模塊停止工作而不影響其他兩個模塊的工作,當工作模塊的狀態(tài)和預置的狀態(tài)同步時,三個模塊又一起工作。此時狀態(tài)選擇是一個問題,這個狀態(tài)到達的頻率必須很高,而且會在較快時間內到達,另外多個狀態(tài)可以提高效率但同時會使預置信號寬度增加。
如果寄存器中狀態(tài)不可預測,例如寄存器鏈和加法器,那么不能使用這個方法,所以這種方法需要改進以提高其適應性。在TMR各模塊布線時,盡量將它們相隔有一定的距離,這樣也可以降低一個模塊出現(xiàn)錯誤后對其他模塊造成影響的可能性。
2.3 基于對FPGA基本單元結構改進的TMR技術
因為TMR資源消耗較大,一般方法中由于布線以及表決器的實現(xiàn),當粒度越小耗費的資源更多。文獻提出了一種比較新穎的小粒度的方法,它對基于SRAM的FPGA的結構進行了一些改變(LUT及CLB結構),以小粒度來實現(xiàn)TMR但資源消耗卻得到降低。
評論