《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于SRAM型FPGA的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)設(shè)計(jì)方法
基于SRAM型FPGA的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)設(shè)計(jì)方法
2019年電子技術(shù)應(yīng)用第7期
徐偉杰1,謝永樂(lè)2,彭禮彪2,沈北辰3
1.長(zhǎng)安大學(xué) 信息工程學(xué)院,陜西 西安710064; 2.電子科技大學(xué) 自動(dòng)化工程學(xué)院,四川 成都611731;3.四川大學(xué) 軟件學(xué)院,四川 成都610207
摘要: 為提高輻射環(huán)境中電子系統(tǒng)的可靠性,提出了一種基于SRAM型FPGA的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)結(jié)構(gòu)和設(shè)計(jì)方法。該設(shè)計(jì)方法采用粗粒度三模冗余結(jié)構(gòu)和細(xì)粒度三模冗余結(jié)構(gòu)對(duì)系統(tǒng)功能模塊進(jìn)行容錯(cuò)設(shè)計(jì);將一種細(xì)粒度的故障檢測(cè)單元嵌入到各冗余模塊中對(duì)各冗余模塊進(jìn)行故障檢測(cè);結(jié)合動(dòng)態(tài)部分重構(gòu)技術(shù)可在不影響系統(tǒng)正常工作的前提下實(shí)現(xiàn)故障模塊的在線(xiàn)修復(fù)。該設(shè)計(jì)結(jié)構(gòu)于Xilinx Virtex-6 FPGA中進(jìn)行了設(shè)計(jì)實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果表明系統(tǒng)故障修復(fù)時(shí)間和可靠性得到顯著提高。
中圖分類(lèi)號(hào): TN710
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190480
中文引用格式: 徐偉杰,謝永樂(lè),彭禮彪,等. 基于SRAM型FPGA的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)設(shè)計(jì)方法[J].電子技術(shù)應(yīng)用,2019,45(7):50-55.
英文引用格式: Xu Weijie,Xie Yongle,Peng Libiao,et al. SRAM based FPGA system capable of runtime fault tolerance and recovery[J]. Application of Electronic Technique,2019,45(7):50-55.
SRAM based FPGA system capable of runtime fault tolerance and recovery
Xu Weijie1,Xie Yongle2,Peng Libiao2,Shen Beichen3
1.School of Information Engineering,Chang′an University,Xi′an 710064,China; 2.School of Automation Engineering,University of Electronic Science and Technology of China,Chengdu 611731,China; 3.College of Software Engineering,Sichuan University,Chengdu 610207,China
Abstract: In order to enhance the reliability of electronic system working in radiation environment, a reliability enhanced SRAM based FPGA system with runtime fault recovery is presented in this work. Coarse-grained TMR architecture and fine-grained TMR architecture are proposed to achieve the ability of fault tolerance. Fine-grained fault detection units are inserted in each redundancy module to mask the faulty module. The technique of partial dynamic reconfiguration is used to repair the faulty module without interrupting other parts of the system。The scheme is implemented in Xilinx Virtex-6 FPGA, and the results show that the improvements in recovery time and reliability are achieved by the proposed technique.
Key words : reliability;fault tolerance;fault recovery;TMR;dynamic reconfiguration

0 引言

    隨著航天技術(shù)的發(fā)展,空間任務(wù)日益復(fù)雜化、多樣化,未來(lái)航天系統(tǒng)對(duì)處理器的性能要求越來(lái)越高。在一些航天設(shè)備如星載ATP等系統(tǒng)的電子模塊設(shè)計(jì)中,基于SRAM的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)得到了日益廣泛的應(yīng)用。空間環(huán)境中的電子系統(tǒng)設(shè)計(jì),不僅要滿(mǎn)足高性能,而且其數(shù)據(jù)處理、傳輸和控制的準(zhǔn)確性和可靠性也必須得到保證。對(duì)于機(jī)載、星載、空間武器和其他空間應(yīng)用電子系統(tǒng),往往暴露在形形色色的電磁輻射環(huán)境中,如α粒子、宇宙射線(xiàn)、外太空強(qiáng)輻射等等惡劣環(huán)境,加之一些電子系統(tǒng)工作在地面的高電磁輻射環(huán)境中,這些輻射環(huán)境中充滿(mǎn)了各種高能粒子,高能粒子撞擊工作中的電子器件會(huì)引發(fā)輻射效應(yīng),如單粒子翻轉(zhuǎn)(SEU)等,并導(dǎo)致器件發(fā)生故障,由輻射效應(yīng)引起的軟錯(cuò)誤是導(dǎo)致空間環(huán)境中電子系統(tǒng)失效的重要原因之一[1]。

    在提高系統(tǒng)可靠性與安全性方面,避錯(cuò)與容錯(cuò)技術(shù)是常用的兩種關(guān)鍵技術(shù)。微電子抗輻射加固技術(shù)[2],通過(guò)對(duì)材料選取、工藝結(jié)構(gòu)設(shè)計(jì)等方面進(jìn)行加固設(shè)計(jì),在物理層消除導(dǎo)致?lián)p傷的各類(lèi)寄生參數(shù), 能有效提高電子器件的抗輻射能力。但是僅在物理層上對(duì)系統(tǒng)進(jìn)行故障防護(hù)不能滿(mǎn)足惡劣環(huán)境中的系統(tǒng)可靠性要求,還需要從電路設(shè)計(jì)方面對(duì)系統(tǒng)功能進(jìn)行保護(hù)。運(yùn)用錯(cuò)誤校正碼(ECC)技術(shù)[3],在數(shù)據(jù)包的后端添加額外的校驗(yàn)數(shù)據(jù)位,來(lái)實(shí)現(xiàn)讀取/寫(xiě)入數(shù)據(jù)的準(zhǔn)確性,能在一定程度上對(duì)存儲(chǔ)器進(jìn)行檢錯(cuò)和糾錯(cuò)。容錯(cuò)設(shè)計(jì)技術(shù),如采用冗余設(shè)計(jì)來(lái)“屏蔽”或“隔離”故障,如信息冗余[4]、硬件冗余[5]等,進(jìn)而在一定時(shí)期內(nèi)將故障的影響掩蓋起來(lái),使發(fā)生故障的電子系統(tǒng)在一定時(shí)期內(nèi)仍能正常工作,但這種方式并未排除故障,隨著故障的累積和疊加,系統(tǒng)仍然可能失效,所以賦予系統(tǒng)故障自修復(fù)能力能有效減少故障累積,提高系統(tǒng)的可靠性。

    本文從故障容錯(cuò)和故障自修復(fù)角度對(duì)系統(tǒng)進(jìn)行芯片級(jí)的可靠性設(shè)計(jì),提出了一種基于SRAM型FPGA的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)結(jié)構(gòu),并將該設(shè)計(jì)結(jié)構(gòu)在Xilinx Virtex-6 FPGA上進(jìn)行了設(shè)計(jì)驗(yàn)證。

1 基于動(dòng)態(tài)部分重構(gòu)的模塊修復(fù)

    FPGA的配置可分為靜態(tài)配置和動(dòng)態(tài)配置,靜態(tài)配置通常對(duì)整個(gè)FPGA模塊進(jìn)行重新配置,系統(tǒng)功能在配置過(guò)程時(shí)中斷,并在配置結(jié)束后改變系統(tǒng)功能。動(dòng)態(tài)配置,又稱(chēng)為動(dòng)態(tài)部分重構(gòu),能夠在不干擾FPGA內(nèi)部其他模塊工作的同時(shí)動(dòng)態(tài)地對(duì)部分區(qū)域的邏輯功能進(jìn)行修改。其核心思想是將FPGA內(nèi)部的邏輯資源從物理布局上劃分為靜態(tài)區(qū)域和若干個(gè)動(dòng)態(tài)區(qū)域。每個(gè)動(dòng)態(tài)區(qū)域可以對(duì)應(yīng)有多個(gè)配置文件,以實(shí)現(xiàn)不同的功能,將這些配置文件事先存放在片外存儲(chǔ)器中。在系統(tǒng)運(yùn)行的不同時(shí)刻,根據(jù)系統(tǒng)的實(shí)際需求加載不同的配置文件到同一個(gè)動(dòng)態(tài)區(qū)域來(lái)實(shí)現(xiàn)相應(yīng)的邏輯功能。在某一動(dòng)態(tài)區(qū)域進(jìn)行功能切換時(shí),不影響靜態(tài)區(qū)域和其他動(dòng)態(tài)區(qū)域的邏輯功能,系統(tǒng)依然處于連續(xù)運(yùn)行狀態(tài)。

    動(dòng)態(tài)部分重構(gòu)技術(shù)能對(duì)FPGA的部分資源實(shí)現(xiàn)分時(shí)復(fù)用,使芯片能夠在不同時(shí)刻實(shí)現(xiàn)不同的功能,提高了芯片資源的利用率,已廣泛應(yīng)用于工業(yè)系統(tǒng)設(shè)計(jì)中,如文獻(xiàn)[6]中結(jié)合動(dòng)態(tài)部分重構(gòu)技術(shù)對(duì)工業(yè)傳感器數(shù)據(jù)采集系統(tǒng)進(jìn)行設(shè)計(jì),針對(duì)不同的傳感器切換不同的功能。該技術(shù)還可應(yīng)用于可重構(gòu)計(jì)算[7]、可進(jìn)化硬件[8-9]、容錯(cuò)設(shè)計(jì)[10-14]等方面。將動(dòng)態(tài)部分重構(gòu)技術(shù)和冗余技術(shù)結(jié)合,即將冗余設(shè)計(jì)中各冗余模塊分別置于一動(dòng)態(tài)區(qū)域中,在故障發(fā)生時(shí)通過(guò)動(dòng)態(tài)重構(gòu)對(duì)故障模塊進(jìn)行修復(fù),可以避免故障的累積和疊加,在容錯(cuò)的同時(shí)賦予系統(tǒng)故障自修復(fù)能力。

2 粗粒度和細(xì)粒度的三模冗余自修復(fù)結(jié)構(gòu)

2.1 粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)

    典型的模塊冗余技術(shù)——N模冗余設(shè)計(jì):將功能模塊復(fù)制為N份,N個(gè)模塊具有相同的輸入,N個(gè)模塊的輸出經(jīng)過(guò)多數(shù)表決器表決輸出。N模冗余系統(tǒng)在工作過(guò)程中能同時(shí)容忍不超過(guò)半數(shù)的冗余模塊發(fā)生故障而不影響最終的系統(tǒng)輸出。隨著冗余模塊的數(shù)量增加,系統(tǒng)的容錯(cuò)能力提高,但同時(shí)系統(tǒng)的硬件資源開(kāi)銷(xiāo)和功耗增大,綜合考慮容錯(cuò)能力和資源開(kāi)銷(xiāo),三模冗余(TMR)技術(shù)具有最高的性能表現(xiàn)。

    FPGA的系統(tǒng)通??梢苑譃槎鄠€(gè)功能模塊,粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)以整個(gè)功能模塊為單位進(jìn)行冗余設(shè)計(jì),如圖1所示,即將整個(gè)功能模塊作為一個(gè)冗余單位,將整個(gè)功能模塊復(fù)制三份,將每個(gè)功能單元模塊FU1~FU3配置到單獨(dú)的部分重構(gòu)模塊(PRM)中,使得每個(gè)冗余模塊都可以獨(dú)立被修復(fù)。表決器選擇多數(shù)的輸入結(jié)果進(jìn)行輸出。在粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)中,只要兩個(gè)冗余模塊的輸出結(jié)果正確,就能保證整個(gè)模塊輸出正常,當(dāng)其中任意模塊發(fā)生故障時(shí),通過(guò)系統(tǒng)的故障檢測(cè)機(jī)制可進(jìn)行故障定位,隔離故障區(qū)域并進(jìn)行自修復(fù)操作。

wdz4-t1.gif

2.2 細(xì)粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)

    采用粗粒度設(shè)計(jì)結(jié)構(gòu)能有效提高系統(tǒng)的可靠度,但其仍然存在一些不足,一是當(dāng)多數(shù)表決器出現(xiàn)故障時(shí)整個(gè)自修復(fù)結(jié)構(gòu)本身不可靠;二是由于模塊粒度較大,一些不能導(dǎo)致模塊功能失效的隱性故障持續(xù)累積,容易導(dǎo)致多個(gè)模塊同時(shí)故障,使得防護(hù)結(jié)構(gòu)失效。本文中細(xì)粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)能有效減少故障累積,該設(shè)計(jì)結(jié)構(gòu)將一功能模塊拆分為若干個(gè)獨(dú)立的時(shí)序元件和組合邏輯部分,本文將該設(shè)計(jì)結(jié)構(gòu)利用圖形化表示來(lái)說(shuō)明,將功能單元模塊中的組合邏輯表示為CG,時(shí)序元件表示為SE,則利用有向圖表示方法可以將圖2(a)電路表示為圖2(b)。

    細(xì)粒度的三模冗余容錯(cuò)自修復(fù)結(jié)構(gòu)建立在有向圖表示方法基礎(chǔ)之上,其核心思想是,將電路分割為邏輯電路和時(shí)序電路,在時(shí)序電路輸出插入多數(shù)表決器,然后再對(duì)原始電路進(jìn)行三模冗余設(shè)計(jì),使得此自修復(fù)結(jié)構(gòu)具有三個(gè)表決器,因此加強(qiáng)了此結(jié)構(gòu)的故障容錯(cuò)能力,同時(shí)減輕了時(shí)序電路引起的錯(cuò)誤累積,可以成功避免域交叉錯(cuò)誤的出現(xiàn)。圖2(a)表示的原始電路,利用有向圖表示方法將原始電路分割開(kāi)來(lái)如圖2(b)所示,利用TMR三模冗余技術(shù)將其容錯(cuò)化如圖2(c)所示。MV表示多數(shù)表決器(Multiple Voter)在電路時(shí)序元件輸出之后插入,利用其三模冗余結(jié)構(gòu),增強(qiáng)了電路容錯(cuò)能力。當(dāng)D1模塊的組合、時(shí)序電路以及表決器出現(xiàn)故障時(shí),D2模塊和D3模塊通過(guò)多數(shù)表決器可以檢測(cè)到此類(lèi)故障,并經(jīng)中斷喚醒處理器進(jìn)行部分動(dòng)態(tài)重構(gòu)處理,使得D1部分重構(gòu)區(qū)域得以自修復(fù)。

wdz4-t2.gif

    細(xì)粒度的三模冗余容錯(cuò)自修復(fù)結(jié)構(gòu)同時(shí)降低了時(shí)序電路引起的錯(cuò)誤累積的概率,可以成功避免域交叉錯(cuò)誤的產(chǎn)生。當(dāng)D1模塊的SE2電路和D3模塊的CG4電路同時(shí)出現(xiàn)故障的時(shí)候,由于在時(shí)序電路的輸出端用表決器成功地將SE2故障進(jìn)行檢測(cè)和隔離,不會(huì)傳遞積累影響下一級(jí)的CG4錯(cuò)誤,因此可以成功避免域交叉錯(cuò)誤的產(chǎn)生。

2.3 可靠度對(duì)比

    功能模塊在FPGA內(nèi)部的實(shí)現(xiàn)可以用邏輯資源來(lái)表示,如查找表(LUTs)、觸發(fā)器(Flip-Flops)、塊存儲(chǔ)器(BRAM)等。而各邏輯資源的連接和使用通過(guò)比特流文件配置來(lái)實(shí)現(xiàn)。比特流文件由若干個(gè)配置幀(frame)組成,配置幀又包含若干個(gè)表示配置信息的比特位。在輻射環(huán)境中,當(dāng)FPGA中的電路模塊發(fā)生單粒子翻轉(zhuǎn)效應(yīng)時(shí),并不是模塊任意比特位發(fā)生翻轉(zhuǎn)就會(huì)導(dǎo)致模塊功能失效,該模塊功能往往由一些關(guān)鍵比特位所決定。考慮該粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)的容錯(cuò)能力,討論馬爾科夫模型下的三模冗余結(jié)構(gòu)[15],假設(shè)功能模塊在時(shí)間t內(nèi)功能正常的可靠度隨著時(shí)間的推移呈指數(shù)遞減,其可靠度可以表示為:

    wdz4-gs1.gif

其中λm表示功能模塊m的故障率,其由比特位在單位時(shí)間內(nèi)的翻轉(zhuǎn)速率和模塊對(duì)應(yīng)的關(guān)鍵比特位數(shù)量所決定。對(duì)于一個(gè)三模冗余系統(tǒng)來(lái)說(shuō)只有當(dāng)兩個(gè)或者兩個(gè)以上的模塊發(fā)生錯(cuò)誤時(shí)系統(tǒng)防護(hù)功能才會(huì)失效,假設(shè)三模冗余系統(tǒng)表決邏輯功能正常,那么對(duì)于該粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)其可靠度可以表示為:

wdz4-gs2-3.gif

    將提出的細(xì)粒度的三模冗余結(jié)構(gòu)和粗粒度的三模冗余結(jié)構(gòu)的可靠度進(jìn)行比較,其可靠度示意圖如圖3所示。細(xì)粒度的三模冗余結(jié)構(gòu)容錯(cuò)可靠度相對(duì)于粗粒度的可靠度有顯著的提高,但同時(shí)細(xì)粒度的三模冗余結(jié)構(gòu)會(huì)引入額外表決器和故障檢測(cè)邏輯,導(dǎo)致額外資源開(kāi)銷(xiāo)的增加。細(xì)粒度的三模冗余結(jié)構(gòu)更適用于對(duì)故障率高的電路模塊進(jìn)行防護(hù)。

wdz4-t3.gif

3 實(shí)時(shí)故障自修復(fù)系統(tǒng)設(shè)計(jì)

3.1 實(shí)時(shí)故障自修復(fù)系統(tǒng)整體設(shè)計(jì)結(jié)構(gòu)

    圖4給出了一種基于Xilinx FPGA實(shí)現(xiàn)的故障自修復(fù)系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)方案。整個(gè)系統(tǒng)實(shí)現(xiàn)基于MicroBlaze軟核的片上微處理器系統(tǒng),主要?jiǎng)澐譃閮蓚€(gè)部分:靜態(tài)區(qū)域和動(dòng)態(tài)部分重構(gòu)區(qū)域。靜態(tài)區(qū)域主要包括:軟核MicroBlaze、串口控制器、Flash控制器等,這部分區(qū)域包括了整個(gè)關(guān)鍵處理模塊不適于動(dòng)態(tài)重構(gòu)的模塊,主要負(fù)責(zé)運(yùn)行低優(yōu)先級(jí)程序和檢測(cè)動(dòng)態(tài)重構(gòu)區(qū)域的正常運(yùn)行。動(dòng)態(tài)部分重構(gòu)區(qū)域是整個(gè)電子系統(tǒng)自修復(fù)的基礎(chǔ),所有的自修復(fù)操作都在其他模塊監(jiān)測(cè)、控制下有序地進(jìn)行,保證整個(gè)電子系統(tǒng)不間斷正常的工作,其中各個(gè)冗余模塊的標(biāo)準(zhǔn)配置文件存放于片外Flash中。當(dāng)系統(tǒng)收到重構(gòu)請(qǐng)求時(shí),由Flash控制器讀取片外存儲(chǔ)器中對(duì)應(yīng)模塊的比特流文件并通過(guò)內(nèi)部配置訪(fǎng)問(wèn)端口(ICAP)寫(xiě)入重構(gòu)區(qū)域。動(dòng)態(tài)部分重構(gòu)區(qū)域結(jié)合上文提出的容錯(cuò)方案進(jìn)行容錯(cuò)設(shè)計(jì),同時(shí)MicroBlaze負(fù)責(zé)控制和監(jiān)測(cè)每個(gè)動(dòng)態(tài)重構(gòu)單元的工作情況:比如當(dāng)設(shè)計(jì)動(dòng)態(tài)重構(gòu)單元為三模冗余故障容錯(cuò)模塊時(shí),當(dāng)此模塊內(nèi)部故障檢測(cè)單元檢測(cè)到發(fā)生故障時(shí),通過(guò)中斷的形式將信息發(fā)送到MicroBlaze中,MicroBlaze讀取此模塊的狀態(tài)寄存器以判明故障類(lèi)型和區(qū)域,根據(jù)應(yīng)用場(chǎng)合不同選擇不同的故障自修復(fù)策略將此模塊進(jìn)行有序的自重構(gòu),實(shí)現(xiàn)故障自修復(fù)的同時(shí)并不影響系統(tǒng)正常運(yùn)行。

wdz4-t4.gif

3.2 內(nèi)嵌式故障檢測(cè)結(jié)構(gòu)

    采用一內(nèi)嵌式故障檢測(cè)結(jié)構(gòu)對(duì)冗余模塊進(jìn)行故障檢測(cè),該方案將故障檢測(cè)單元嵌入到冗余模塊中。圖5(a)所示為三模冗余容錯(cuò)自修復(fù)結(jié)構(gòu)中以邏輯門(mén)描述的故障檢測(cè)單元示意圖,該故障檢測(cè)單元由多數(shù)表決器和異或非門(mén)構(gòu)成,將多數(shù)表決器的輸出和檢測(cè)的冗余模塊的輸出接到異或非門(mén)的輸入端,多數(shù)表決器的輸出作為錯(cuò)誤標(biāo)志信號(hào)FLAG。當(dāng)檢測(cè)的冗余模塊的輸出和表決器的輸出相同,則異或門(mén)輸出為邏輯1,表示該檢測(cè)的冗余模塊無(wú)故障發(fā)生,若異或門(mén)輸出邏輯為0,則表明檢測(cè)的冗余模塊發(fā)生故障或故障檢測(cè)單元自身發(fā)生故障。具有該故障檢測(cè)單元的三模冗余結(jié)構(gòu)如圖5(b)所示。

wdz4-t5.gif

    功能模塊在FPGA內(nèi)部的實(shí)現(xiàn)可以用邏輯資源來(lái)表示,如查找表(LUTs)、觸發(fā)器(Flip-Flops)、塊存儲(chǔ)器(BRAM)等。而各邏輯資源的連接和使用通過(guò)比特流文件(Bitstream)配置來(lái)實(shí)現(xiàn)。比特流文件由若干個(gè)配置幀(frame)組成,功能模塊大小也可通過(guò)配置幀的數(shù)量來(lái)表示。

    該檢測(cè)單元從細(xì)粒度的角度對(duì)電路輸出的每一位進(jìn)行比較,也就是說(shuō)對(duì)于一個(gè)輸出信號(hào)為N位的功能模塊來(lái)說(shuō),采用該故障檢測(cè)單元會(huì)對(duì)每一個(gè)冗余模塊會(huì)產(chǎn)生N個(gè)故障標(biāo)志信號(hào)。然而對(duì)于一個(gè)冗余模塊來(lái)說(shuō)只需要一個(gè)標(biāo)志信號(hào)來(lái)表明該模塊是否發(fā)生故障。對(duì)此提出了一種將標(biāo)志信號(hào)進(jìn)行融合的邏輯結(jié)構(gòu),該融合邏輯結(jié)構(gòu)采用FPGA片內(nèi)進(jìn)位鏈邏輯來(lái)實(shí)現(xiàn)。如圖6所示,以4位的輸出信號(hào)為例,故障檢測(cè)單元對(duì)TR1模塊的輸出位進(jìn)行檢測(cè),將故障標(biāo)志信號(hào)分別接入進(jìn)位鏈的C0~C3端口。進(jìn)位鏈CIN端口輸入邏輯1,當(dāng)無(wú)故障發(fā)生時(shí)進(jìn)位鏈輸出邏輯1,當(dāng)其中一位或者多位錯(cuò)誤發(fā)生時(shí),進(jìn)位鏈中的二選一選擇器選擇故障標(biāo)志信號(hào)進(jìn)行傳遞,進(jìn)位鏈輸出邏輯0,表示TR1模塊發(fā)生故障。對(duì)于模塊輸出信號(hào)位數(shù)少于4位的情況,可以將進(jìn)位鏈空閑的輸入端輸入邏輯1即可。對(duì)于模塊輸出信號(hào)位數(shù)大于4位的情況,可以將前一進(jìn)位鏈的標(biāo)志輸出FLAG接入后一進(jìn)位鏈的CIN輸入端,將進(jìn)位鏈串行連接。

wdz4-t6.gif

4 實(shí)驗(yàn)設(shè)計(jì)與分析

    本節(jié)中將上文提出的故障自修系統(tǒng)在Xilinx  XC6VLX240T-1FF1156 FPGA上進(jìn)行設(shè)計(jì)實(shí)現(xiàn),實(shí)驗(yàn)中靜態(tài)區(qū)域包含了一基于MicroBlaze核的片上微處理器系統(tǒng),該微處理器系統(tǒng)主要負(fù)責(zé)與上位機(jī)進(jìn)行交互、響應(yīng)重構(gòu)請(qǐng)求、控制片外存儲(chǔ)器讀取比特文件數(shù)據(jù)和控制內(nèi)部配置訪(fǎng)問(wèn)端口(ICAP)對(duì)重構(gòu)區(qū)域進(jìn)行重配置等任務(wù)。動(dòng)態(tài)區(qū)域中將ITC99 benchmark電路中8個(gè)不同粒度的標(biāo)準(zhǔn)電路進(jìn)行冗余設(shè)計(jì),以分析不同粒度模塊的故障自修復(fù)時(shí)間。

4.1 FPGA系統(tǒng)設(shè)計(jì)流程

    實(shí)驗(yàn)中對(duì)系統(tǒng)進(jìn)行設(shè)計(jì)實(shí)現(xiàn)采用的是基于Xilinx ISE開(kāi)發(fā)工具的設(shè)計(jì)流程,設(shè)計(jì)流程如圖7所示。在ISE頂層設(shè)計(jì)規(guī)劃中對(duì)系統(tǒng)各模塊進(jìn)行劃分,定義系統(tǒng)中的各靜態(tài)模塊和動(dòng)態(tài)模塊,并對(duì)動(dòng)態(tài)模塊進(jìn)行冗余保護(hù)設(shè)計(jì)。片上微處理器系統(tǒng)在Xilinx的XPS設(shè)計(jì)工具中進(jìn)行設(shè)計(jì)搭建,并在SDK設(shè)計(jì)工具中對(duì)微處理器系統(tǒng)進(jìn)行軟件功能編譯,PlanAhead設(shè)計(jì)工具可通過(guò)圖形界面(GUI)對(duì)FPGA進(jìn)行早期分析和布局規(guī)劃功能,施加物理約束,分析布線(xiàn)和時(shí)序的結(jié)果。實(shí)驗(yàn)中各動(dòng)態(tài)模塊的區(qū)域劃分在PlanAhead中進(jìn)行設(shè)計(jì)。PlanAhead中比特流文件生成完成后,需要進(jìn)行軟硬件協(xié)同處理,即將XPS生成的塊存儲(chǔ)器映射文件(*.bmm)、SDK生成的可執(zhí)行文件(*.elf)和PlanAhead生成的全局比特流文件合為一個(gè)新的比特流文件,借助Xilinx命令行工具ISE Design Suite Command Prompt,通過(guò)命令指令合成最終的比特流文件。

wdz4-t7.gif

4.2 實(shí)驗(yàn)結(jié)果分析

    實(shí)驗(yàn)中各動(dòng)態(tài)模塊的區(qū)域劃分如圖8所示,動(dòng)態(tài)區(qū)域內(nèi)的邏輯資源能夠滿(mǎn)足各模塊功能實(shí)現(xiàn)。各動(dòng)態(tài)模塊的資源開(kāi)銷(xiāo)如表1所示,由實(shí)驗(yàn)結(jié)果可知,模塊粒度越小其冗余設(shè)計(jì)中表決器和故障檢測(cè)結(jié)構(gòu)所占的資源比例則越大,即系統(tǒng)模塊粒度劃分越小、重構(gòu)區(qū)域劃分越多,則容錯(cuò)自修復(fù)設(shè)計(jì)所帶來(lái)的額外資源開(kāi)銷(xiāo)越大。

wdz4-t8.gif

wdz4-b1.gif

    各動(dòng)態(tài)模塊重構(gòu)時(shí)間花費(fèi)表2所示。實(shí)驗(yàn)中所采取的故障注入方式同樣采取動(dòng)態(tài)重構(gòu)方式,即通過(guò)FPGA的內(nèi)部配置訪(fǎng)問(wèn)通道(ICAP)動(dòng)態(tài)地對(duì)各模塊進(jìn)行錯(cuò)誤配置來(lái)實(shí)現(xiàn)。實(shí)驗(yàn)中故障檢測(cè)方案采用上文所提出的內(nèi)嵌式故障檢測(cè)結(jié)構(gòu),其故障檢測(cè)延遲與信號(hào)在進(jìn)位鏈中的傳播延遲相關(guān),即和進(jìn)位鏈的串聯(lián)個(gè)數(shù)相關(guān),而進(jìn)位鏈中信號(hào)傳播延遲為納秒級(jí),遠(yuǎn)小于模塊重構(gòu)時(shí)間,可認(rèn)為模塊的自修復(fù)時(shí)間近似于模塊的重構(gòu)時(shí)間。由實(shí)驗(yàn)結(jié)果可看出模塊重構(gòu)時(shí)間與模塊占用資源數(shù)和模塊重構(gòu)區(qū)域大小成正比,即模塊占用資源數(shù)越多,其劃分的最小重構(gòu)區(qū)域則越大,模塊重構(gòu)時(shí)間花費(fèi)越大。而同時(shí),功能模塊劃分越小,其進(jìn)行冗余設(shè)計(jì)時(shí)所帶來(lái)的額外資源開(kāi)銷(xiāo)比例則越大。故在系統(tǒng)設(shè)計(jì)時(shí),需要綜合考慮資源分配情況和故障修復(fù)時(shí)間要求,合理地進(jìn)行模塊粒度劃分,實(shí)現(xiàn)粗粒度和細(xì)粒度的靈活組合。

wdz4-b2.gif

5 結(jié)論

    本文提出了一種基于SRAM型FPGA的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)結(jié)構(gòu)和設(shè)計(jì)方法。該設(shè)計(jì)方法將系統(tǒng)分為若干功能模塊,采用粗粒度三模冗余結(jié)構(gòu)和細(xì)粒度三模冗余結(jié)構(gòu)并結(jié)合動(dòng)態(tài)重構(gòu)對(duì)系統(tǒng)進(jìn)行容錯(cuò)自修復(fù)設(shè)計(jì),實(shí)驗(yàn)結(jié)果表明該設(shè)計(jì)結(jié)構(gòu)下故障修復(fù)時(shí)間短,系統(tǒng)的可靠性得到有效提高。在系統(tǒng)設(shè)計(jì)時(shí),可以綜合考慮資源分配情況和故障修復(fù)時(shí)間要求,合理進(jìn)行模塊粒度劃分,實(shí)現(xiàn)粗粒度和細(xì)粒度的靈活組合。 

參考文獻(xiàn)

[1] 潘雄,鄧威,苑政國(guó),等.SRAM型FPGA單粒子隨機(jī)故障注入模擬與評(píng)估[J].微電子學(xué)與計(jì)算機(jī),2018,35(7):29-33.

[2] 馮彥君,華更新,劉淑芬.航天電子抗輻射研究綜述[J].宇航學(xué)報(bào),2007,28(5):1071-1080.

[3] DEMIRCI M,REVIRIEGO P,MAESTRO J A.Implementing double error correction orthogonal latin squares codes in SRAM-based FPGAs[J].Microelectronics Reliability,2016,56:221-227.

[4] KOESTER M,LUK W,HAGEMEYER J,et al.Design optimizations for tiled partially reconfigurable systems[J].IEEE Transactions on Very Large Scale Integration Systems,2011,19(6):1048-1061.

[5] KOREN I,KRISHNA C M.Fault-tolerant systems[M].Morgan Kaufmann Publishers Inc.,2007.

[6] BAO S,YAN H,CHI Q,et al.A FPGA-Based reconfigurable data acquisition system for industrial sensors[J].IEEE Transactions on Industrial Informatics,2017,13(4):1503-1512.

[7] 鄔貴明.FPGA矩陣計(jì)算并行算法與結(jié)構(gòu)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2011.

[8] 姚睿,王友仁,于盛林,等.具有在線(xiàn)修復(fù)能力的強(qiáng)容錯(cuò)三模冗余系統(tǒng)設(shè)計(jì)及實(shí)驗(yàn)研究[J].電子學(xué)報(bào),2010,38(1):177-183.

[9] 王宏宇.基于FPGA的片上電路進(jìn)化設(shè)計(jì)研究[D].石家莊:河北師范大學(xué),2017.

[10] KONDELOVA A,CUNTALA J.Time models of dynamic and static reconfiguration in FPGAs[C].Proceedings of ELEKTRO,2014:451-454.

[11] RODRIGUES T,VESTIAS M.Using dynamic reconfiguration to reduce the area of a JPEG decoder on FPGA[C].Proceedings of 2015 Euromicro Conference on Digital System Design,2015:65-71.

[12] 張小林,丁磊,顧黎明.基于三層級(jí)低開(kāi)銷(xiāo)的FPGA多比特翻轉(zhuǎn)緩解技術(shù)[J].電子技術(shù)應(yīng)用,2018,44(4):61-64.

[13] 佟昕,于勇,趙寶珍,等.基于DMR-CED容錯(cuò)方法的多相結(jié)構(gòu)數(shù)字下變頻SEU防護(hù)設(shè)計(jì)[J].遙測(cè)遙控,2018,39(4):56-61.

[14] 王銳,段小虎.一種具備故障自恢復(fù)能力的容錯(cuò)計(jì)算機(jī)架構(gòu)設(shè)計(jì)[J].信息通信,2017(4):72-73.

[15] RUPE J W.Reliability of computer systems and networks fault tolerance,analysis,and design[M].John Wiley & Sons,Inc.,2003:586-587.



作者信息:

徐偉杰1,謝永樂(lè)2,彭禮彪2,沈北辰3

(1.長(zhǎng)安大學(xué) 信息工程學(xué)院,陜西 西安710064;

2.電子科技大學(xué) 自動(dòng)化工程學(xué)院,四川 成都611731;3.四川大學(xué) 軟件學(xué)院,四川 成都610207)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。