謝 燕,張超洋,周啟忠,成 奎
(1.宜賓學(xué)院中德工程學(xué)院,四川宜賓644007;2.宜賓學(xué)院物理與電子工程學(xué)院,四川宜賓644007;3.四川輕化工大學(xué)自動化與信息工程學(xué)院,四川宜賓644000)
基于FPGA的動態(tài)可重構(gòu)計算機被廣泛應(yīng)用于航空、航天和航海領(lǐng)域中的控制或傳輸模塊,這些軍事領(lǐng)域要求系統(tǒng)具有高精度和高性能,同時盡量避免輻射和外界干擾環(huán)境對系統(tǒng)性能的影響[1-3].基于FPGA 重構(gòu)系統(tǒng)具有較高的自適應(yīng)、自修復(fù)能力,這對提升軍用系統(tǒng)的穩(wěn)定性和可用性非常有用,因此對動態(tài)可重構(gòu)技術(shù)的研究對于國家軍工業(yè)的發(fā)展將有重要的作用[4-6].
通常電子設(shè)備對空間環(huán)境和地表輻射非常敏感. 隨著電路向著模塊化和集成化方向發(fā)展,集成電路對體積、工作頻率和輻射效應(yīng)提出了越來越高的要求.空間應(yīng)用場合勢必要考慮高能粒子對電子元件的影響,特別是單粒子翻轉(zhuǎn)(SEU)事件可以在時序邏輯電路中引起瞬態(tài)脈沖或改變一些靜態(tài)存儲器元件的邏輯狀態(tài). 由于FPGA 的用戶編程功能取決于設(shè)備內(nèi)的配置鎖存器中的存儲數(shù)據(jù),因此配置存儲器陣列中的SEU 現(xiàn)象可能對用戶實現(xiàn)的設(shè)計的預(yù)期功能產(chǎn)生不利影響.
處理可編程邏輯器件中SEU 效應(yīng)傳統(tǒng)上采用雙模冗余、三模冗余或者多模冗余等方法[7-8]. 文獻[8]和[9]分別從演化算法和功能目標(biāo)模型出發(fā)研究了重構(gòu)控制分析方法. 文獻[11]介紹了一種商用的Xilinx Virlex-II Pro器件的重離子輻射實驗,以評估器件的單粒子翻轉(zhuǎn)(SEU)特性并檢驗測試方法的有效性.文獻[12]對FPGA故障的可編程布線資源進行了深入研究. 文獻[13]提出基于有限域比特并行多項式基乘數(shù)的新容錯架構(gòu).
三重模塊冗余(TMR)與通過部分重新配置的SEU校正相結(jié)合能有效地緩解SEU現(xiàn)象.VirtexTM系列Xilinx FPGA 支持這種方法.TMR的主要技術(shù)在于系統(tǒng)中敏感電路處理SEU 的方式是通過三個相同的模塊分別實現(xiàn)相同的功能,并對電路的輸出口進行按位“多數(shù)表決”.根據(jù)表決電路的輸出信息,重新配置控制器(PowerPC)可以判斷敏感電路是否故障. 通過動態(tài)重構(gòu),可以實現(xiàn)故障屏蔽和電路容錯. 當(dāng)表決電路失效時,可由重構(gòu)控制器實現(xiàn)誤操作. 為了提高動態(tài)可重構(gòu)計算機的抗干擾能力,本文提出了一種基于現(xiàn)場可編程門陣列(FPGA)的動態(tài)可重構(gòu)計算機的TMR 設(shè)計方法. 通過比較兩個冗余表決電路的輸出實現(xiàn)表決判斷,重構(gòu)控制器可以判斷表決電路是否失敗,并能實現(xiàn)糾正錯誤,使得系統(tǒng)恢復(fù)正常工作.
TMR的基礎(chǔ)結(jié)構(gòu)如圖1所示.冗余邏輯0、冗余邏輯1 和冗余邏輯2 的結(jié)構(gòu)是完全相同的. 多數(shù)表決器可用FPGA 內(nèi)部三態(tài)緩沖器實現(xiàn),這些緩沖器用于實現(xiàn)用戶設(shè)計中的所有布爾函數(shù).多數(shù)表決器的功能是其輸出至少對應(yīng)兩個輸入的邏輯值(1 或0). 例如,如果表決的三個輸入分別標(biāo)記為A、B 和C,如果輸入信號兩個或多個是“1”,那么表決器的輸出是“1”. 如果表決輸出標(biāo)記為V,表決輸出的布爾方程可表示為:
圖1 多數(shù)表決三模冗余結(jié)構(gòu)圖
多數(shù)表決器的真值表見表1. 表1 表明,如果三個冗余邏輯中只有一個有故障,TMR電路可以實現(xiàn)正確的功能.因此,TMR電路具有很強的容錯能力.
表1 多數(shù)表決器真值表
如果三個冗余邏輯中有兩個或三個邏輯存在故障,則TMR電路不能正確運行.為了避免累積故障導(dǎo)致的電路故障的發(fā)生,基于FPGA 的系統(tǒng)中廣泛采用了動態(tài)可重構(gòu)方法,如動態(tài)可重構(gòu)計算機.
基于FPGA 的動態(tài)可重構(gòu)計算機具有性能好、可靠性高的特點. TMR 動態(tài)可重構(gòu)計算機的結(jié)構(gòu)如圖2 所示. 系統(tǒng)由CPU 控制器、動態(tài)可重構(gòu)備份資源、多路復(fù)用器(MUX)、敏感模塊和輔助電路組成.其中,附加電路包含一個MUX和一個多數(shù)表決器,敏感模塊包含三個冗余邏輯,其內(nèi)部結(jié)構(gòu)和功能相同. 通過檢測多數(shù)表決器的輸出,CPU 控制器可以判斷敏感模塊是否出現(xiàn)故障.如果敏感模塊發(fā)生故障,即三個冗余邏輯之間有兩個以上邏輯存在故障,CPU控制器調(diào)用flash中保存的配置文件重新配置備份資源進行動態(tài)重構(gòu),通過控制MUX 替換敏感模塊.CPU控制器重新配置從故障敏感模塊釋放的邏輯資源實現(xiàn)故障恢復(fù). 最后,將恢復(fù)的模塊放回系統(tǒng),以處理下一個故障. 因此,基于FPGA 的動態(tài)可重構(gòu)計算機具有容錯性能和故障恢復(fù)能力.
圖2 動態(tài)可重構(gòu)計算機的結(jié)構(gòu)描述
傳統(tǒng)的TMR 方法僅限于保護用戶的設(shè)計不受SEUs的影響,因為介于觸發(fā)器之間的邏輯路徑通常是硬連接的、不可重新配置的門. 對于這種固定的邏輯技術(shù)雖然對SEUs足夠的保護,但仍然可能使電路容易受到單粒子瞬變的影響.因為所有的邏輯路徑,而不僅僅是觸發(fā)器,都容易受到單粒子效應(yīng)的影響.通過完整的全模塊冗余可以實現(xiàn)對系統(tǒng)的進一步的保護,全模冗余可以利用FPGA 中TMR 實現(xiàn).然而,為了增加數(shù)據(jù)完整保留和自主恢復(fù)的額外功能,動態(tài)可重構(gòu)計算機的方法必須有如圖2 所示的多數(shù)表決附加電路來實現(xiàn)故障檢測.附加電路容易受到SEU 的影響,如果接入電路出現(xiàn)故障,則錯誤信息將傳輸?shù)紺PU 控制器,然后,CPU 控制器將實現(xiàn)錯誤的控制,并且減少了所有動態(tài)可重構(gòu)計算機的可靠性. 為解決這一問題,本文提出了一種名為冗余表決電路技術(shù)的新方法.
具有冗余表決電路的動態(tài)可重構(gòu)計算機的結(jié)構(gòu)如圖3所示.
圖3 冗余表決電路技術(shù)描述
比較圖3和圖2可見,冗余表決電路技術(shù)對一個TMR 敏感模塊有兩個冗余接入電路. 配置文件包含冗余附加電路的配置文件. 冗余存儲電路0 的輸出標(biāo)記為V0,冗余存儲電路1 的輸出標(biāo)記為V1. 如果冗余附加電路0和冗余附加電路1沒有故障,無論敏感模塊是否有故障,V0的值都等于V1的值.根據(jù)多數(shù)表決的真值表(表1),V0與V1的關(guān)系表和電路狀態(tài)描述在表2中.
表2 電路狀態(tài)表
表2表明,CPU控制器可以通過比較值V0和V1的值來判斷電路狀態(tài).如果V0不等于V1,則僅提示冗余附加電路存在故障.冗余附加電路占用的資源比敏感模塊占用的資源要少,因此,動態(tài)重新配置敏感模塊的備份資源滿足了動態(tài)重新配置附加電路的要求. 為了判斷敏感模塊是否失敗,首先通過動態(tài)重新配置,CPU 控制器在不檢測冗余附加電路0 或冗余附加電路1是否失效前提下對冗余的附加電路進行校正.通過再次將V0與V1進行比較,可以通過CPU 控制器獲得敏感模塊的操作狀態(tài). 因此,本文提出的冗余表決電路技術(shù)可以提高動態(tài)可重構(gòu)計算機的可靠性.
圖4 Xilinx Ml403開發(fā)平臺
圖5 FPGA的內(nèi)部實際操作波形
圖6 超級終端
方法在Xilinx Ml403 開發(fā)平臺上得到驗證(如圖4 所示),開發(fā)平臺配置Virtex-4 系列FPGA 芯片(XC4VFX12),該芯片包含嵌入式PowerPC 微處理器. PowerPC 微處理器實現(xiàn)了CPU 控制器的操作.利用Xilinx 嵌入式開發(fā)工具包(EDK)結(jié)合ISE 和設(shè)計工具PLANAHEAD,可以設(shè)計和驗證系統(tǒng)的動態(tài)重構(gòu)功能.實驗系統(tǒng)的敏感模塊是具有相同結(jié)構(gòu)和功能的加法樹.
由于在實驗環(huán)境中注入實際的SEU 不便,所以對加法器和表決電路進行重新組合產(chǎn)生不同的輸出,給系統(tǒng)注入了故障并進行了驗證. Chipscope 采集的FPGA內(nèi)部實際運行波形如圖5所示.
超級終端如圖6 所示. 系統(tǒng)輸出“Total Number of Bank A Error”表示塊A(加法器)的故障被觸發(fā).系統(tǒng)輸出“Reprogramming Partial Bank A to Correct Error finish Partial Bank A...”表示完成了故障塊A的重建并返回到運行狀態(tài),實現(xiàn)了系統(tǒng)自檢和自校正的目標(biāo).
本文提出了一種改進的基于FPGA的動態(tài)可重構(gòu)計算TMR方法.通過對TMR表決電路的自檢和自校正,增強了動態(tài)可重構(gòu)計算機的可靠性,因此該方法可用于處理航空、航天和衛(wèi)星的SEU 效應(yīng). 實驗結(jié)果驗證了本文提出的方法的有效性.