1.背景介紹
空間輻射環(huán)境中的高能帶電粒子入射到半導(dǎo)體器件的特定區(qū)域有可能會引起單粒子效應(yīng),從宏觀角度看,FPGA的配置存儲器中該單元存儲的信息由“1”變成了“0”,即出現(xiàn)了存儲狀態(tài)的翻轉(zhuǎn)。美國Los Alamos國家實驗室、Brigham Young大學(xué)和Xilinx公司對FPGA的單粒子效應(yīng)進行了多次實驗,得出了:單粒子效應(yīng)引起的FPGA故障多數(shù)是由配置存儲器發(fā)生單粒子翻轉(zhuǎn)引起的。
針對FPGA內(nèi)部的單粒子效應(yīng)故障,研究者們提出了相應(yīng)的檢測與加固設(shè)計方法,如三模冗余(TMR)設(shè)計、兩模塊冗余(DMR)設(shè)計、時間三模冗余(TTMR)設(shè)計、狀態(tài)機狀態(tài)編碼加固設(shè)計、運算單元的結(jié)果校驗等多種方法。這些方法從邏輯設(shè)計方面提高了FPGA抗單粒子效應(yīng)的能力。
?
本文作者在項目實踐中對于系統(tǒng)可靠性設(shè)計方面采用過三模冗余、糾錯編碼等加固措施。這些加固方法帶來了系統(tǒng)資源占用率的上升和運算速度的降低,但是其對于抗單粒子翻轉(zhuǎn)性能的提升程度卻難以通過簡單方法獲得,因此需要一種驗證方法對其加固效果做出客觀評估,需要一個測試系統(tǒng)來完成具有充足覆蓋率的自動化大規(guī)模測試。本文所描述的基于動態(tài)重構(gòu)技術(shù)的FPGA電路容錯性能評估系統(tǒng)即在此需求下設(shè)計完成的。
2.動態(tài)重配置技術(shù)簡介
FPGA的“動態(tài)可重配置” ,是指在系統(tǒng)運行期間,隨時可以通過對FPGA的重新配置來改變其邏輯功能,而且并不影響系統(tǒng)的正常運行, FPGA邏輯功能的改變在時間上保持動態(tài)連續(xù)。由此可見, FPGA的動態(tài)可重配置不僅可以改變而且能夠動態(tài)地改變數(shù)字邏輯系統(tǒng)的功能,與靜態(tài)可重配置相比, FPGA的動態(tài)可重配置有著更廣闊的應(yīng)用前景。
如圖2.1所示,有兩種途徑可以實現(xiàn)動態(tài)重配置:(1) 依靠JTAG、SlectMAP等外部配置端口進行配置,這種方式的重配置依靠FPGA外部芯片或者上位機系統(tǒng);(2) 依靠內(nèi)部端口(ICAP)完成對配置寄存器,由FPGA內(nèi)部產(chǎn)生配置指令,完成對FPGA動態(tài)區(qū)域的重新配置。
2.1內(nèi)部配置訪問端口
內(nèi)部配置訪問端口(Internal Configuration Access Port, ICAP)是FPGA內(nèi)部配置寄存器的訪問端口,為動態(tài)重構(gòu)技術(shù)在片上可編程系統(tǒng)的應(yīng)用提供了基本條件。在嵌入式的微處理器或其他用戶邏輯控制下,從PC或者片上存儲器中讀取配置數(shù)據(jù)寫入該ICAP接口即可完成芯片的動態(tài)重構(gòu)。ICAP用于動態(tài)局部自重構(gòu),它是FPGA內(nèi)部單元的入口,用戶可通過ICAP訪問配置寄存器。ICAP與SelectMAP工作方式相同,但不同于SelectMAP的雙向數(shù)據(jù)總線,ICAP提供專門的讀/寫總線,總線寬度可以通過設(shè)置參數(shù)ICAP_WIDTH來確定,有三種可選的數(shù)據(jù)寬度:8位、16位和32位。
?
?
2.2配置信息寫入與回讀
配置信息寫入的過程即是按照配置命令將數(shù)據(jù)寫入配置寄存器,寫入配置信息就是完成FPGA的完整配置或重配置。寫入過程是通過發(fā)送包數(shù)據(jù)到幀輸入寄存器(Frame Data Register Input, FDRI)來實現(xiàn)的,寫入過程包括寫命令字、寫數(shù)據(jù)。
配置信息回讀是通過配置端口將FPGA內(nèi)部配置存儲器中的數(shù)據(jù)讀出的過程?;刈x過程可以讀出CLB、IOB的寄存器、FPGA內(nèi)部存儲器的當(dāng)前狀態(tài)以及布線資源的配置情況等,而且可以通過對回讀數(shù)據(jù)的校驗來檢驗當(dāng)前配置數(shù)據(jù)的正確性。本文設(shè)計的系統(tǒng)通過回讀將待測系統(tǒng)的配置信息讀入存儲器,在此配置信息基礎(chǔ)上注入錯誤后寫回到配置存儲器以實現(xiàn)故障模擬。
回讀過程是通過發(fā)送命令從幀輸出寄存器(Frame Data Register Output, FDRO)中讀取數(shù)據(jù)包來實現(xiàn)的。回讀過程分為寫操作命令、讀取數(shù)據(jù)和恢復(fù)現(xiàn)場三部分。每一幀的回讀數(shù)據(jù)內(nèi)容都決定著與其相應(yīng)的物理排列的FPGA功能模塊的功能邏輯.
3.基于動態(tài)重構(gòu)技術(shù)的FPGA電路容錯性能評估系統(tǒng)的實現(xiàn)
本系統(tǒng)結(jié)構(gòu)如圖3.1所示,分為上位機控制模塊、Micro Blaze模塊、配置信息讀寫模塊、激勵產(chǎn)生與測試數(shù)據(jù)收集模塊。其中上位機模塊提供用戶交互界面,可對模擬粒子量、測試循環(huán)等參數(shù)進行配置,與測試平臺之間依靠TCP/IP協(xié)議通信。在動態(tài)重構(gòu)技術(shù)支持下,測試平臺只需在一片F(xiàn)PGA內(nèi)即可實現(xiàn)。為了與上位機實現(xiàn)TCP/IP通信,測試平臺內(nèi)嵌了Micro Blaze處理器。Micro Blaze處理器模塊獲取上位機指令并翻譯成邏輯時序通過GPIO發(fā)送至平臺的邏輯部分。邏輯部分包含了配置信息讀寫、待測模塊激勵生成和數(shù)據(jù)收集等功能。下面將分別詳細介紹上位機控制程序、Micro Blaze模塊和邏輯部分的實現(xiàn)。
?
3.1上位機控制程序和Micro Blaze模塊
本系統(tǒng)的上位機控制程序基于MFC編寫,TCP/IP協(xié)議棧的實現(xiàn)則是繼承了MFC提供的異步Soket類CAsyncSocket。FPGA中嵌入了Micro Blaze處理器,利用IwIP協(xié)議棧實現(xiàn)和上位機的通信。通過兩者的相互配合可以對待測系統(tǒng)的配置文件大小、模擬粒子注入量、粒子注入量放大倍數(shù)、配置信息bit翻轉(zhuǎn)個數(shù)和測試循環(huán)次數(shù)等參數(shù)進行配置。并且可以將待測系統(tǒng)的測試數(shù)據(jù)進行收集,并發(fā)送給上位機。
參數(shù)配置完成后系統(tǒng)軟件即可開始測試循環(huán),每次循環(huán)包含產(chǎn)生隨機bit翻轉(zhuǎn)位、待測系統(tǒng)運行和收取數(shù)據(jù)三個步驟。第一次循環(huán)時不產(chǎn)生隨機翻轉(zhuǎn)位而直接開始待測系統(tǒng)運行,收集此次的數(shù)據(jù)作為待測系統(tǒng)對激勵的正確響應(yīng),以后每次循環(huán)收集到的待測系統(tǒng)輸出數(shù)據(jù)與此數(shù)據(jù)對比得到系統(tǒng)是否正常工作。每次循環(huán)結(jié)束后,該次循環(huán)產(chǎn)生的隨機位置和系統(tǒng)工作狀態(tài)信息會被記錄寫入文件。循環(huán)次數(shù)達到參數(shù)設(shè)定值后系統(tǒng)生成測試報告。
3.2邏輯部分結(jié)構(gòu)
本系統(tǒng)的邏輯部分完成待測模塊的配置、故障模擬注入、激勵產(chǎn)生與數(shù)據(jù)收集。結(jié)構(gòu)框圖如圖3.2所示。待測模塊作為FPGA內(nèi)的動態(tài)區(qū),其首次配置由完整比特流完成,開始測試之后的重配置由ICAP讀寫控制模塊通過ICAP端口完成。本系統(tǒng)的待測模塊可由網(wǎng)表輸入,也可由HDL代碼或原理圖輸入。本文以RS編碼器為例,分別將經(jīng)過局部三模冗余,分布式三模冗余和全局三模冗余加固的RS編碼器網(wǎng)表文件輸入動態(tài)區(qū),對三種加固措施的可靠性進行測試。
?
激勵產(chǎn)生和數(shù)據(jù)收集模塊根據(jù)待測模塊變化需要做出相應(yīng)調(diào)整,這兩個模塊協(xié)同工作完成待測模塊真實工作情況的模擬。數(shù)據(jù)收集模塊將待測模塊產(chǎn)生的數(shù)據(jù)送往Micro Blaze,然后通過TCP數(shù)據(jù)包發(fā)送到上位機進行分析。本文測試中用到的為255-243 RS編碼器,即輸入243字節(jié),輸出243字節(jié)后帶12字節(jié)的RS糾錯碼。測試系統(tǒng)對RS編碼器的激勵為累加數(shù)且保持每次循環(huán)都一致,輸出的255字節(jié)編碼結(jié)果作為輸出采樣數(shù)據(jù)送到上位機軟件平臺做自動比對。
?
ICAP讀寫控制模塊即為配置信息讀寫模塊,其結(jié)構(gòu)如圖3.3所示,通過產(chǎn)生ICAP讀寫控制時序和指令序列,該模塊在系統(tǒng)首次完整配置完成后通過Readback Frame模塊將待測模塊配置信息回讀至Block RAM。此回讀數(shù)據(jù)將作為以后錯誤注入時配置信息的基礎(chǔ)。在以后的注錯過程中,Write Frame模塊將配置信息讀出,根據(jù)Micro Blaze模塊提供的注錯位置,對配置信息加錯,并寫入到ICAP端口中。
主控模塊對系統(tǒng)測試的步驟進行控制和跟蹤,接收來自Micro Blaze模塊的指令脈沖。Micro Blaze模塊發(fā)出的指令脈沖是將TCP數(shù)據(jù)包中的指令譯碼得到的。Micro Blaze模塊還將上位機發(fā)出的隨機位置數(shù)據(jù)發(fā)送至ICAP讀寫模塊,由后者經(jīng)位置譯碼后產(chǎn)生隨機bit翻轉(zhuǎn)寫入配置信息。Micro Blaze模塊中TCP/IP協(xié)議棧的建立則是基于開源代碼lwIP。
?
主控模塊狀態(tài)轉(zhuǎn)移如圖3.4所示。對FPGA的完整配置結(jié)束、復(fù)位釋放后,首先進行配置信息的回讀。此回讀操作是針對動態(tài)區(qū),也就是待測模塊的。將待測模塊配置信息回讀后,數(shù)據(jù)將被存入片內(nèi)存儲器Block RAM中。以上操作完成后即進入等待指令狀態(tài),在此狀態(tài)下Micro Blaze處理器將接收來自上位機的TCP連接建立請求,當(dāng)TCP連接建立后,即可接收來自上位機的TCP指令/數(shù)據(jù)包。上位機將產(chǎn)生的隨機數(shù)據(jù)打包成TCP數(shù)據(jù)包,F(xiàn)PGA接收到以后將動態(tài)區(qū)配置信息更改,達到設(shè)定的需要翻轉(zhuǎn)bit位后上位機將發(fā)送激勵產(chǎn)生指令,主控模塊收到后將激勵產(chǎn)生模塊使能打開,動態(tài)區(qū)開始工作,數(shù)據(jù)采集模塊開始對待測系統(tǒng)的輸出采樣,達到設(shè)定容量后這些采樣數(shù)據(jù)將被發(fā)回到上位機。FPGA模塊由此進入下一次指令等待狀態(tài)。
?
4.系統(tǒng)測試及結(jié)果分析
本文將RS編碼器的作為待測目標(biāo)系統(tǒng),對其進行可靠性評估,同時對該評估系統(tǒng)進行功能驗證。
測試系統(tǒng)組成如圖4.1所示,包括運行軟件部分的上位機和實現(xiàn)硬件的XUP5VLX110T開發(fā)板,二者之間通過JTAG下載線、串口線和網(wǎng)線相連。JTAG下載線用于完整比特流的配置,串口線用于調(diào)試信息打印和Micro Blaze系統(tǒng)跟蹤,網(wǎng)線用于上位機和硬件平臺的通信。關(guān)于XUP5VLX110T開發(fā)板[上以太網(wǎng)硬件環(huán)境本文不做贅述,感興趣讀者可參見Xilinx公司的相關(guān)文檔。
?
4.1 系統(tǒng)資源占用情況
系統(tǒng)邏輯部分采用Verilog語言描述,在Xilinx大學(xué)計劃XUP5VLX110T開發(fā)板上得以實現(xiàn)。系統(tǒng)開發(fā)環(huán)境采用Xilinx公司的ISE14.3集成軟件開發(fā)環(huán)境。系統(tǒng)實現(xiàn)的資源占用情況如表4.1所示。
由上表可見,該系統(tǒng)本身占用資源少于40%,適合規(guī)模在資源占用率60%以下的待測系統(tǒng)進行可靠性測試。
4.2 系統(tǒng)測試數(shù)據(jù)
為了分析RS編碼器的可靠性,分別將RS編碼器、加入局部三模保護的RS編碼器、加入分布式三模保護的RS編碼器和加入全局三模保護的RS編碼器作為待測模塊,對各自的配置信息注入隨機的定量錯誤,收集編碼結(jié)果,并與正確的RS編碼器結(jié)果進行比較,給出可靠性報告。
測試系統(tǒng)對待測模塊進行三種類型的TMR加固保護,對包含無加固保護在內(nèi)的四種目標(biāo)系統(tǒng)分別執(zhí)行了20000次錯誤注入實驗。三種TMR類型分別是局部三模冗余、分布式三模冗余和全局三模冗余。
局部三模冗余(LTMR)是指將設(shè)計中的時序邏輯(包括觸發(fā)器、移位寄存器、塊RAM等)復(fù)制三份,并加入多數(shù)表決器來決定正確的輸出。如圖4.2所示。局部三模冗余中,三份觸發(fā)器共享輸入數(shù)據(jù)、控制信號和時鐘。
?
分布式三模冗余(DTMR)是指將設(shè)計中的時序邏輯、組合邏輯和表決器均復(fù)制三份,表決器位于時序邏輯之后,如圖4.3所示。但是,分布式三模冗余不對全局布線和I/O進行處理。
?
全局式三模冗余(GTMR)是指在分布式三模冗余的基礎(chǔ)上對時鐘布線以及全局寄存器進行三模處理,如圖4.4所示。
?
由于局部三模冗余僅對時序邏輯做三模處理,一旦組合邏輯的配置信息被打翻,僅靠觸發(fā)器等的復(fù)制無法保證電路功能的正確性。因此,較之于其余兩種三模冗余方法,局部三模冗余的保護力度略弱一些。其余兩種冗余措施組合邏輯和觸發(fā)器等均做了復(fù)制,那么無論三路電路中的任意一路中的組合邏輯出錯還是時序邏輯出錯,均可由表決器得到正確的結(jié)果,因此,分布式三模冗余和全局三模冗余的保護力度較大,全局三模冗余略勝一籌。
添加三模冗余加固依靠Mentor Graphics 公司的Precision(2011a,update2.76)工具,它是為現(xiàn)有可編程器件(CPLD和FPGA)以及下一代大規(guī)??删幊唐舷到y(tǒng)(FPSoC)設(shè)計的專用綜合工具。支持RTL級的邏輯綜合,可實現(xiàn)基于約束的優(yōu)化,并可給出時序分析,同時還可實現(xiàn)布局布線。其自動添加三模冗余的功能被業(yè)界普遍采用。實驗采用Precision 套件的Hi-Re版本對RS編碼器分別進行局部三模保護、分布式三模保護以及全局三模保護。占用資源情況如表4.2所示。其中可用一列顯示當(dāng)前設(shè)定的動態(tài)區(qū)中可用的資源情況。由資源占用情況可見,全局三模冗余的資源占用比例最大。
實驗中選取對上述四種待測模塊進行大量測試,針對每種待測模塊,設(shè)定循環(huán)次數(shù)為2000次,每次隨機注入N(N取1到10)比特翻轉(zhuǎn)信息,并對單次測試結(jié)果進行統(tǒng)計,并給出測試報告。表4.3為由測試報告中獲取的編碼故障率(編碼正確的次數(shù)/2000次)信息。
?
4.3 系統(tǒng)測試結(jié)果分析
通過分析表4.3可以得到以下結(jié)論:
(1) 與加入冗余保護的RS編碼器相比,未加冗余保護的RS編碼器可靠性較差,因此三模冗余可有效提高編碼器的可靠性;
(2) 分布式三模冗余與全局三模冗余的保護效果較好,全局三模冗余的可靠性略高一些,局部三模冗余的保護效果較差,這與三模冗余采用面積換取可靠性的原理相符;
(3) 每種保護措施下,隨著單次翻轉(zhuǎn)信息量的增加,正確率下降。
上述實驗結(jié)果與實際情況相符,充分說明了該平臺功能正確,且該平臺具有評估系統(tǒng)可靠性的能力,可應(yīng)用于實際任務(wù)中。
評論