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