杜新軍,周建華,胡劍平
(北京遙測(cè)技術(shù)研究所北京 100076)
SRAM型FPGA內(nèi)嵌CPU軟核開發(fā)過程靈活,能夠與外圍的FPGA邏輯進(jìn)行靈活的信號(hào)交互,可以替代獨(dú)立的DSP或CPU器件執(zhí)行核心控制功能,并能有效降低開發(fā)成本。
“DSP+FPGA”或“CPU+FPGA”的設(shè)計(jì)方案在軌應(yīng)用時(shí)需要同時(shí)對(duì)兩個(gè)器件進(jìn)行空間單粒子效應(yīng)的防護(hù),防護(hù)設(shè)計(jì)方案較復(fù)雜。利用“SRAM型FPGA內(nèi)嵌軟核+FPGA硬件邏輯”的設(shè)計(jì)方案可以簡(jiǎn)化系統(tǒng)的單粒子效應(yīng)防護(hù)設(shè)計(jì),并且可以得到較好的防護(hù)效果。
目前,“三模冗余+動(dòng)態(tài)刷新”的防護(hù)方案可以對(duì)SRAM型FPGA的空間單粒子翻轉(zhuǎn)效應(yīng)(SEU)進(jìn)行有效的防護(hù),但由于內(nèi)嵌CPU軟核的特殊性,需對(duì)其采取專門的防護(hù)措施,以保證其可靠運(yùn)行。
本文提出一種針對(duì)SRAM型FPGA內(nèi)嵌CPU軟核的SEU防護(hù)設(shè)計(jì)方案,通過“三模冗余+動(dòng)態(tài)刷新”對(duì)CPU軟核的硬件結(jié)構(gòu)進(jìn)行防護(hù),通過冗余自刷新模塊替換對(duì)CPU軟核的存儲(chǔ)區(qū)進(jìn)行防護(hù)。防護(hù)設(shè)計(jì)方案已經(jīng)過模擬注錯(cuò)驗(yàn)證及單粒子輻照試驗(yàn)驗(yàn)證,證明其能夠有效提高CPU軟核對(duì)SEU的容錯(cuò)能力。
本文中所采用的CPU軟核為Xilinx公司提供的Microblaze CPU IP(以下簡(jiǎn)稱CPU IP),該CPU IP采用Harvard架構(gòu),開發(fā)環(huán)境為EDK,開發(fā)語言為C語言。根據(jù)使用要求,可配置OPB、PLB及LMB等外圍總線。其結(jié)構(gòu)如圖1所示。
圖1 CPU IP特殊結(jié)構(gòu)功能示意圖[1]Fig.1 Function of special structure in CPU IP[1]
CPU IP的硬件結(jié)構(gòu)基于SRAM型FPGA的基本邏輯單元構(gòu)建,其數(shù)據(jù)存儲(chǔ)器及程序存儲(chǔ)器基于SRAM型FPGA的BlockRAM(以下簡(jiǎn)稱BRAM)構(gòu)建。另外CPU IP中還包含SRL16以及LUTRAM等特殊結(jié)構(gòu),這些特殊結(jié)構(gòu)在CPU IP中執(zhí)行的功能如圖1所示。
CPU IP的SEU故障模式主要分為兩種:一種為CPU IP的硬件結(jié)構(gòu)發(fā)生翻轉(zhuǎn);另一種為CPU IP存儲(chǔ)區(qū)的數(shù)據(jù)發(fā)生翻轉(zhuǎn)[2]。
CPU IP的硬件結(jié)構(gòu)中包含的SRAM FPGA基本邏輯資源均對(duì)SEU敏感。若其中的某些敏感單元發(fā)生了單粒子翻轉(zhuǎn),則會(huì)導(dǎo)致CPU IP的硬件結(jié)構(gòu)改變,從而影響CPU IP的功能。
CPU IP的存儲(chǔ)區(qū)基于BRAM構(gòu)建,而BRAM結(jié)構(gòu)對(duì)SEU敏感。CPU IP的存儲(chǔ)區(qū)承擔(dān)著程序存儲(chǔ)、數(shù)據(jù)緩存的功能,若發(fā)生翻轉(zhuǎn),則會(huì)導(dǎo)致 CPU IP程序執(zhí)行異常。
根據(jù)前文對(duì)CPU IP的SEU故障模式的分析,將防護(hù)措施定位于“CPU IP硬件結(jié)構(gòu)防護(hù)”和“CPU IP存儲(chǔ)區(qū)防護(hù)”兩個(gè)主要方面。
CPU IP的硬件結(jié)構(gòu)基于SRAM型FPGA的基本邏輯單元構(gòu)建,因此其防護(hù)方法可借用目前針對(duì)SRAM型FPGA的通用防護(hù)方法——“三模冗余+動(dòng)態(tài)刷新”。
2.1.1 三模冗余
三模冗余的原理是通過設(shè)計(jì)三模冗余以及多數(shù)表決來掩蔽發(fā)生的SEU錯(cuò)誤。Xilinx公司提供了專業(yè)的三模冗余軟件TMRTool進(jìn)行三模冗余設(shè)計(jì)。
包含CPU IP的FPGA工程通過TMRTool軟件進(jìn)行三模冗余處理的過程如圖2所示。首先,在原始ISE工程中生成“.ngc”、“.ngo”文件以及其他相關(guān)文件;然后,將其中的“.ngc”、“.ngo”文件經(jīng)過三模冗余軟件處理生成“.edf”文件;最后,將“.edf”文件以及其他相關(guān)文件添加到三模冗余后的ISE工程中,同時(shí)對(duì)相關(guān)文件進(jìn)行適應(yīng)性修改,最終生成三模冗余后的下載文件。
圖2 包含CPU IP的邏輯三模冗余處理過程[2,3]Fig.2 The TMR process containing CPU IP[2,3]
2.1.2 動(dòng)態(tài)刷新
動(dòng)態(tài)刷新的原理是在SRAM型FPGA正常工作的情況下對(duì)其配置空間進(jìn)行刷新。動(dòng)態(tài)刷新可以及時(shí)糾正已經(jīng)發(fā)生的單粒子翻轉(zhuǎn)錯(cuò)誤,同時(shí)不影響系統(tǒng)的正常功能。
進(jìn)行動(dòng)態(tài)刷新的硬件結(jié)構(gòu)如圖3所示。配置控制器向SRAM型FPGA的配置端口輸入特定的指令組合,使之能夠進(jìn)行寫入操作,然后將配置存儲(chǔ)器中的原始配置文件讀出,并寫入SRAM型FPGA的對(duì)應(yīng)配置空間內(nèi)實(shí)現(xiàn)動(dòng)態(tài)刷新。
前文已述,CPU IP中包含SRL16以及LUTRAM。SRL16是指用查找表(LUT)構(gòu)造的16位移位寄存器,LUTRAM是指用LUT構(gòu)造的分布式RAM。動(dòng)態(tài)刷新過程會(huì)對(duì)上述兩種結(jié)構(gòu)正常功能造成影響,所以在設(shè)計(jì)中需要對(duì)上述兩種結(jié)構(gòu)進(jìn)行替換。
TMRTool軟件提供了SRL16結(jié)構(gòu)的替換功能,而LUTRAM則必須用專門設(shè)計(jì)的替換模塊進(jìn)行替換。本文中專門設(shè)計(jì)了LUTRAM的替換模塊,該模塊用Flip-Flop結(jié)合LUT的結(jié)構(gòu)替代了原來的結(jié)構(gòu),其功能與LUTRAM一致,并且不受動(dòng)態(tài)刷新的影響。
圖3 動(dòng)態(tài)刷新硬件連接關(guān)系示意圖Fig.3 Hardware connection of scrubbing
存儲(chǔ)區(qū)承擔(dān)程序存儲(chǔ)及數(shù)據(jù)緩存等功能,對(duì)CPU IP程序的正常運(yùn)行至關(guān)重要。因此,在空間應(yīng)用CPU IP必須對(duì)存儲(chǔ)區(qū)采取SEU防護(hù)措施。
CPU IP的存儲(chǔ)區(qū)分為程序區(qū)和數(shù)據(jù)區(qū),均基于SRAM型FPGA的BRAM構(gòu)建。由于與BRAM正常功能沖突,對(duì)SRAM型FPGA配置存儲(chǔ)區(qū)的動(dòng)態(tài)刷新不能覆蓋BRAM內(nèi)容區(qū)。而單純對(duì)存儲(chǔ)區(qū)進(jìn)行三模冗余雖然能夠在一定程度上掩蔽錯(cuò)誤,但終究會(huì)隨著錯(cuò)誤積累而失效。所以必須對(duì)CPU IP存儲(chǔ)區(qū)采取專門的措施進(jìn)行防護(hù)。
本文采用一種“三模冗余+自刷新”的方案,設(shè)計(jì)一種冗余自刷新模塊,在三模冗余軟件的輔助下替換原來的存儲(chǔ)模塊,實(shí)現(xiàn)SEU防護(hù)。
2.2.1 CPU IP存儲(chǔ)區(qū)結(jié)構(gòu)調(diào)整
為了適應(yīng)CPU IP存儲(chǔ)區(qū)冗余自刷新模塊的設(shè)計(jì),需要對(duì)默認(rèn)的存儲(chǔ)區(qū)結(jié)構(gòu)進(jìn)行調(diào)整。
默認(rèn)的存儲(chǔ)區(qū)結(jié)構(gòu)內(nèi)程序存儲(chǔ)區(qū)與數(shù)據(jù)存儲(chǔ)區(qū)共用64KB存儲(chǔ)空間,其中BRAM的雙端口均被占用,一組端口用于程序總線操作,另一組端口用于數(shù)據(jù)總線操作。本文設(shè)計(jì)中,程序區(qū)實(shí)際占用空間為32KB,數(shù)據(jù)區(qū)實(shí)際占用空間為16KB。為了節(jié)約BRAM資源進(jìn)行后續(xù)的冗余模塊替換,將程序區(qū)與數(shù)據(jù)區(qū)分成兩個(gè)獨(dú)立的存儲(chǔ)區(qū),容量分別為32KB和16KB。存儲(chǔ)區(qū)分開后,每個(gè)獨(dú)立存儲(chǔ)區(qū)均有一組端口空閑,該組空閑端口可用來執(zhí)行自刷新功能。存儲(chǔ)區(qū)調(diào)整前后的結(jié)構(gòu)如圖4所示。
2.2.2 冗余自刷新模塊設(shè)計(jì)
冗余自刷新模塊實(shí)現(xiàn)三模冗余及刷新的功能。其基本原理是:將原始BRAM模塊進(jìn)行三模冗余;在不影響正常數(shù)據(jù)讀寫的情況下,將三模冗余BRAM模塊內(nèi)部同一地址的數(shù)據(jù)讀出;對(duì)來自三模冗余模塊的三份數(shù)據(jù)進(jìn)行表決;如果出現(xiàn)三份數(shù)據(jù)不一致的情況,則將多數(shù)表決后的數(shù)據(jù)寫入該地址中進(jìn)行糾錯(cuò)[4~6]。其設(shè)計(jì)原理如圖5所示。
如圖5所示,設(shè)計(jì)中除了冗余BRAM模塊以及表決模塊以外,還包含地址比較模塊。地址比較模塊用于判斷CPU IP是否正在對(duì)BRAM特定地址進(jìn)行讀寫操作,避免刷新過程與正常的讀寫操作發(fā)生沖突。
圖4 存儲(chǔ)區(qū)調(diào)整前后結(jié)構(gòu)對(duì)比圖Fig.4 Memory structures before and after adjustment
圖5 冗余自刷新模塊原理示意圖[4~6]Fig.5 Principle diagram of redundant self-scrubbing module[4~6]
冗余自刷新模塊通過ISE開發(fā)平臺(tái)進(jìn)行設(shè)計(jì),通過TMRTool軟件生成替換模塊,在進(jìn)行整體工程三模冗余過程中,以該替換模塊替換原始的存儲(chǔ)模塊。
為了評(píng)估防護(hù)方案的防護(hù)性能,進(jìn)行了軟件模擬注錯(cuò)測(cè)試和單粒子輻照試驗(yàn)測(cè)試。
模擬注錯(cuò)測(cè)試基于SRAM型FPGA的動(dòng)態(tài)刷新功能,通過人為修改配置數(shù)據(jù)對(duì)FPGA進(jìn)行動(dòng)態(tài)注錯(cuò)來模擬SEU故障。通過注錯(cuò)控制軟件,可以選擇需要注錯(cuò)的幀數(shù)以及每幀中所注入的錯(cuò)誤數(shù),然后由控制軟件隨機(jī)選擇位置對(duì)配置文件進(jìn)行修改。
模擬注錯(cuò)測(cè)試選擇兩個(gè)試驗(yàn)樣本:一個(gè)為不加防護(hù)措施的樣本M0;另一個(gè)為添加本文提出的防護(hù)措施的樣本M1。測(cè)試主要考核SRAM型FPGA內(nèi)嵌CPU IP的功能。樣本中CPU IP主要負(fù)責(zé)1553總線通信,其工作狀態(tài)由看門狗器件負(fù)責(zé)監(jiān)測(cè)。當(dāng)發(fā)生配置位錯(cuò)誤而導(dǎo)致CPU IP功能異常時(shí),會(huì)導(dǎo)致看門狗復(fù)位,因此測(cè)試中將看門狗復(fù)位作為故障判據(jù)。
模擬測(cè)試中,分別對(duì)兩個(gè)樣本進(jìn)行相同條件的注錯(cuò)測(cè)試。通過對(duì)比兩個(gè)樣本在相同注錯(cuò)條件下的看門狗復(fù)位次數(shù)可以得出防護(hù)方案的防護(hù)性能。相同注錯(cuò)條件下,出現(xiàn)看門狗復(fù)位的次數(shù)越少,說明樣本的容錯(cuò)能力越強(qiáng)。為了使測(cè)試更真實(shí)反映容錯(cuò)能力,對(duì)兩個(gè)樣本分別進(jìn)行了十次測(cè)試,并對(duì)結(jié)果取平均值。具體注錯(cuò)參數(shù)設(shè)置及測(cè)試結(jié)果如表1所示。
根據(jù)模擬測(cè)試結(jié)果,可以得出結(jié)論:同等注錯(cuò)條件下,M1的容錯(cuò)能力為M0的22倍。
為了進(jìn)一步驗(yàn)證該防護(hù)方案的實(shí)際防護(hù)性能,在中科院近代物理研究所進(jìn)行了單粒子輻照試驗(yàn)。試驗(yàn)粒子為Bi,線性能量沉積(LET)為99MeV.cm2/mg。試驗(yàn)樣本選擇與模擬注錯(cuò)測(cè)試一致。
試驗(yàn)中將SRAM型FPGA開蓋,粒子束直接對(duì)準(zhǔn)芯片照射。試驗(yàn)粒子的LET值為99MeV.cm2/mg,SRAM型FPGA的閾值LET為2MeV.cm2/mg,因此能夠誘發(fā)SRAM型FPGA內(nèi)部敏感單元產(chǎn)生SEU錯(cuò)誤[7]。
輻照試驗(yàn)中,對(duì)兩個(gè)試驗(yàn)樣本采取相同的粒子注量率進(jìn)行照射,通過對(duì)比兩個(gè)樣本發(fā)生第一次看門狗復(fù)位時(shí)已經(jīng)注入的粒子數(shù)來衡量防護(hù)方案的防護(hù)性能。同等粒子入射條件下,首次復(fù)位之前注入的粒子數(shù)越多,說明樣本的容錯(cuò)能力越強(qiáng)。為了使測(cè)試更真實(shí)反映容錯(cuò)能力,對(duì)每個(gè)樣本分別進(jìn)行了5次試驗(yàn),并對(duì)結(jié)果取平均值。試驗(yàn)結(jié)果如表1所示。根據(jù)試驗(yàn)結(jié)果,可以得出結(jié)論:同等粒子入射條件下,M1的容錯(cuò)能力為M0的37倍。
表1 防護(hù)性能驗(yàn)證結(jié)果Table1 Test results of SEU mitigation
根據(jù)模擬注錯(cuò)測(cè)試結(jié)果和單粒子輻照試驗(yàn)結(jié)果可以得出結(jié)論:本文提出的防護(hù)方案能夠有效提高CPU IP對(duì)SEU的容錯(cuò)能力。
本文提出一種針對(duì)SRAM型FPGA內(nèi)嵌CPU軟核的SEU防護(hù)方案,利用“動(dòng)態(tài)刷新+三模冗余”對(duì)內(nèi)嵌CPU軟核的硬件結(jié)構(gòu)進(jìn)行防護(hù),利用“冗余自刷新模塊替換”對(duì)內(nèi)嵌CPU軟核的存儲(chǔ)區(qū)進(jìn)行防護(hù)。通過模擬注錯(cuò)測(cè)試及單粒子輻照試驗(yàn)對(duì)本文提出的防護(hù)方案進(jìn)行了防護(hù)性能驗(yàn)證。根據(jù)驗(yàn)證結(jié)果,該方案能夠有效提高內(nèi)嵌CPU軟核對(duì)SEU的容錯(cuò)能力。此外,模擬注錯(cuò)測(cè)試結(jié)果與粒子輻照試驗(yàn)結(jié)果基本一致,也說明模擬注錯(cuò)測(cè)試可以近似模擬粒子輻照試驗(yàn)。
此次粒子輻照試驗(yàn)由于機(jī)時(shí)有限,每個(gè)樣本只進(jìn)行了5次重復(fù)試驗(yàn),試驗(yàn)結(jié)果存在隨機(jī)誤差,有待后續(xù)試驗(yàn)數(shù)據(jù)的進(jìn)一步完善。
[1]Xilinx Corporation.MicroBlaze Processor Reference Guide EDK8.1i(UG081)[M].V5.4.California of America:Xilinx Corporation,2006.
[2]Greg Miller,Carl Carmichael,Gary Swift.Single-Event Upset Mitigation Design Flow for Xilinx FPGA Power PC Systems(XAPP1004)[M].V1.0.California of America:Xilinx Corporation,2008.
[3]Xilinx Corporation.Xilinx TMRTool User Guide(UG156)[M].V2.2.California of America:Xilinx Corporation,2007.
[4]Greg Miller,Carl Carmichael,Gary Swift.Single-Event Upset Mitigation for Xilinx FPGA Block Memories(XAPP962)[M].V1.1.California of America:Xilinx Corporation,2008.
[5]Greg Miller,Carl Carmichael,Gary Swift,Chen Wei Tseng.Mitigation Design Flow and Troubleshooting a Soft Processor in a Complex FPGA[C]//MAPLD.Washington,D.C.of America:NASA,2008.
[6]Sana Rezgui,Jeffrey George,Gary Swift,Kevin Somervil.SEU Mitigation of a Soft Embedded Processor in the Virtex-II FPGAs[C]//MAPLD.Washington,D.C.of America:NASA,2005.
[7]Sana Rezgui,Jeffrey George,Gary Swift,Carl Carmichael.SEE Validation of SEU Mitigation Methods for FPGAs[C]//MAPLD.Washington,D.C.of America:NASA,2005.