龔 健,楊孟飛
(1.北京控制工程研究所,北京100190;2.空間智能控制技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100190;3.中國(guó)空間技術(shù)研究院,北京100094)
技術(shù)交流
一種基于FPGA位流回讀與重配置的空間硬件容錯(cuò)方法
龔 健1,2,楊孟飛3
(1.北京控制工程研究所,北京100190;2.空間智能控制技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100190;3.中國(guó)空間技術(shù)研究院,北京100094)
分析FPGA的配置數(shù)據(jù)幀格式以及整個(gè)器件中配置數(shù)據(jù)幀的類型和分布,在此基礎(chǔ)上給出具體的位流回讀故障檢測(cè)方法和重配置容錯(cuò)方法,最后給出了實(shí)現(xiàn)該容錯(cuò)方法的一個(gè)實(shí)例.論文研究可為星上擬采用基于SRAM的FPGA的各分系統(tǒng)電路容錯(cuò)設(shè)計(jì)所借鑒.
容錯(cuò);基于SRAM的FPGA;空間應(yīng)用;位流回讀;重配置
現(xiàn)場(chǎng)可編程門陣列(FPGA,field programmable gate array)因其邏輯集成度高,使用方便,開發(fā)成本低,不但廣泛用于民用和工業(yè)領(lǐng)域,而且越來(lái)越多地應(yīng)用到空間領(lǐng)域,目前在衛(wèi)星控制計(jì)算機(jī)、執(zhí)行機(jī)構(gòu)、敏感器,以及載荷的電子線路中都有相當(dāng)數(shù)量的應(yīng)用.基于靜態(tài)隨機(jī)存儲(chǔ)器(SRAM,static random accessmemory)的FPGA是FPGA中最為常用的一種,與基于反熔絲的FPGA相比其工藝先進(jìn),能被多次重復(fù)編程,因此使用更為方便,但由于這類器件中的SRAM對(duì)空間單粒子效應(yīng)較為敏感,在空間環(huán)境中的可靠性問(wèn)題一直是影響該類器件廣泛應(yīng)用的關(guān)鍵問(wèn)題.因此,解決基于SRAM的FPGA的空間容錯(cuò)問(wèn)題,能夠極大促進(jìn)其在空間領(lǐng)域的應(yīng)用,提高空間硬件系統(tǒng)的設(shè)計(jì)水平.
目前,針對(duì)FPGA的容錯(cuò)方法大致可以分成3類,第一類沿襲以多模冗余方式為主的傳統(tǒng)容錯(cuò)設(shè)計(jì)方法,例如文獻(xiàn)[1]采用3片F(xiàn)PGA實(shí)現(xiàn)TMR容錯(cuò)系統(tǒng),并能夠在一模發(fā)生故障的情況下進(jìn)行離線故障檢測(cè);文獻(xiàn)[2]實(shí)現(xiàn)了容錯(cuò)處理器LEON,采用奇偶校驗(yàn)、三模冗余(TMR,triple modular re-dundancy)、片上檢錯(cuò)糾錯(cuò)等多種容錯(cuò)方法.第二類利用FPGA可重配置功能進(jìn)行動(dòng)態(tài)故障檢測(cè)和故障修復(fù),實(shí)現(xiàn)系統(tǒng)動(dòng)態(tài)重組,例如采用內(nèi)建自測(cè)試方法在FPGA內(nèi)生成一小塊滾動(dòng)區(qū)域,對(duì)其進(jìn)行離線測(cè)試,而其他區(qū)域正常工作,當(dāng)該區(qū)域測(cè)試完成,通過(guò)部分在線重配置把該區(qū)域移動(dòng)到一個(gè)新的區(qū)域[3-4];文獻(xiàn)[5]把 FPGA分成小塊,檢測(cè)出故障后利用重配置功能隔離故障塊,用其他塊替代故障塊從而實(shí)現(xiàn)容錯(cuò).此外還有上述兩類方法的混合使用,例如文獻(xiàn)[6]在FPGA上實(shí)現(xiàn)可重配置容錯(cuò)處理器,系統(tǒng)采用三模微處理器表決機(jī)制,而整個(gè)FPGA可以實(shí)現(xiàn)重新配置.第三類是把進(jìn)化思想與FPGA可重配置功能相結(jié)合的進(jìn)化容錯(cuò)方法,這類方法不用預(yù)先設(shè)計(jì)容錯(cuò)策略,而是利用進(jìn)化算法在線動(dòng)態(tài)改變電路結(jié)構(gòu)或功能,具有自修復(fù)和自適應(yīng)的智能特性,在這類方法的研究中多采用Xilinx公司的Virtex系列FPGA[7-9].在上述3類方法中,第二類和第三類都利用FPGA的可重配置功能,是頗具前景的容錯(cuò)方法.
本論文面向空間應(yīng)用環(huán)境,針對(duì)基于SRAM的FPGA,并以Xilinx公司的Virtex系列FPGA作為代表,在詳細(xì)分析FPGA配置命令和配置數(shù)據(jù)幀格式的基礎(chǔ)上,給出了在線位流回讀的故障檢測(cè)方法以及在線重配置的容錯(cuò)方法,為星上采用FPGA設(shè)計(jì)的硬件電路提供一種容錯(cuò)方法.
在位流回讀與重配置的容錯(cuò)方法中,配置位流回讀通過(guò)配置命令發(fā)起,回讀的配置數(shù)據(jù)以數(shù)據(jù)幀的形式返回,重配置通過(guò)配置命令和配置數(shù)據(jù)幀結(jié)合的形式實(shí)現(xiàn),因此配置命令和配置數(shù)據(jù)幀是實(shí)現(xiàn)容錯(cuò)方法的關(guān)鍵手段.
1.1 配置命令
位流數(shù)據(jù)的回讀和重配置都是由配置命令和配置數(shù)據(jù)幀共同完成.配置命令是由Xilinx公司定義的一系列二進(jìn)制代碼,通過(guò)把一系列配置命令寫入FPGA的內(nèi)部配置寄存器來(lái)啟動(dòng)配置數(shù)據(jù)的回讀.FPGA的內(nèi)部配置寄存器名稱及地址如表1所示,配置命令的名稱和命令碼如表2所示.在對(duì)配置數(shù)據(jù)進(jìn)行回讀或是寫入時(shí),需要按照一定順序把配置命令和配置數(shù)據(jù)寫入到制定的配置寄存器.
表1 內(nèi)部配置寄存器Tab.1 Inside configuration register
表2 配置寄存器命令Tab.2 Configuration register command
1.2 配置數(shù)據(jù)幀
FPGA的配置數(shù)據(jù)需要以幀格式進(jìn)行回讀和寫入.Virtex系列FPGA配置數(shù)據(jù)幀的基本結(jié)構(gòu)由3部分組成:①CLB,②IOB,③Block SelectRAM.為了方便描述,定義表3所示變量.整個(gè)Virtex系列FPGA結(jié)構(gòu)以CLB陣列為主,其陣列的組成元素是CLB,規(guī)模是Chip-Rows×Chip-Cols.每列CLB的頂端有兩個(gè)IOB,底端有兩個(gè)IOB.CLB陣列兩側(cè)是兩列Block SelectRAM,每列Block SelectRAM的行數(shù)RAM -Rows=Chip-Rows/4,對(duì)于Virtex系列Chip-Rows都是4的整數(shù)倍.Block SelectRAM的兩側(cè)是兩列IOB,每行CLB的左右兩側(cè)各對(duì)應(yīng)3個(gè)IOB,因此兩列IOB的行數(shù)IOB-Rows=Chip-Rows×3.以XCV1000為例,其CLB結(jié)構(gòu)是Chip-Rows×Chip-Cols=64× 96,Block SelectRAM的行數(shù)為RAM-Rows=Chip-Rows/4=16,CLB頂端IOB的總數(shù)為Chip-Cols×2 =192,底端的IOB總數(shù)也是192,兩側(cè)IOB的行數(shù)為IOB-Rows=Chip-Rows×3=192.
Virtex系列FPGA的配置數(shù)據(jù)呈現(xiàn)位陣列的結(jié)構(gòu).位陣列分成垂直的幀(frame),每個(gè)幀具有1位寬,長(zhǎng)度從陣列的頂端到底端,跨越整個(gè)CLB列或Block SelectRAM列.幀是配置位陣列的基本組成單位,也是從配置存儲(chǔ)器中讀寫的最小單位.多個(gè)幀組成列(column).Virtex系列FPGA配置幀的組成如表4所示,Center列包括4個(gè)全局時(shí)鐘的配置;兩個(gè)IOB列包括器件左右兩列IOB的配置信息;主要的列是CLB列,每個(gè)CLB列包括一列CLB的配置信息及該列CLB頂端兩個(gè)IOB和底端兩個(gè)IOB的配置信息.也就是說(shuō),IOB分成兩類,一類是位于器件頂端和底端的兩行IOB,屬于CLB幀;另一類是器件左右兩側(cè)的兩列IOB,形成IOB列.其余兩類列與Block SelectRAM相關(guān),Block SelectRAM Content列包括Block SelectRAM的內(nèi)容信息,Block SelectRAM Interconnect列包括Block SelectRAM的互聯(lián)信息.
表3 Virtex系列FPGA組成結(jié)構(gòu)變量Tab.3 Variables relating to Virtex FPGA architecture
表4 Virtex系列FPGA配置數(shù)據(jù)幀的組成Tab.4 Organization of Virtex FPGA configuration frames
配置數(shù)據(jù)幀的地址空間分成兩種塊(block)類型地址:CLB類型和RAM類型.RAM塊類型只包括所有Block SelectRAM Content列,而不包括Block SelectRAM Interconnect列;其余的列屬于CLB塊類型.CLB塊類型的所有幀數(shù)按照公式(1)計(jì)算,RAM塊類型的所有幀數(shù)按照公式(2)計(jì)算.以XCV1000為例,其CLB塊類型幀數(shù)=8+48×96+54×2+ 27×2=4778幀.
CLB塊類型和RAM塊類型的地址空間都分成主(major)地址和次(minor)地址.每一列在CLB塊或RAM塊中具有唯一的主地址,而每一幀在列中具有唯一的次地址.這樣,每一幀位置可由3層地址確定:塊類型、主地址(即列地址)和次地址(即幀地址).對(duì)于CLB塊類型,主地址以Center列為“0”開始,左右交替遞增,偶數(shù)地址在左側(cè),奇數(shù)地址在右側(cè),Center列后是CLB列,其次是IOB列,最后是Block SelectRAM Interconnect列.對(duì)于RAM塊類型,左側(cè)Block SelectRAM Content列的主地址是“0”,右側(cè)列的主地址是“1”.以XCV1000為例,配置數(shù)據(jù)幀組成結(jié)構(gòu)和主幀地址如圖1所示.
圖1 Virtex系列XCV1000的幀結(jié)構(gòu)和主地址Fig.1 Frame structure and major address of XCV1000(Virtex Serial)
幀的大小取決于器件CLB的行數(shù)Chip-Rows, CLB列幀的有效長(zhǎng)度根據(jù)公式(3)進(jìn)行計(jì)算,其中每行CLB占用每個(gè)CLB列幀中的18位,每個(gè)CLB列頂端兩個(gè)IOB和底端兩個(gè)IOB的配置信息共占用兩個(gè)18位.幀的實(shí)際長(zhǎng)度是在有效幀長(zhǎng)度后補(bǔ)“0”使幀長(zhǎng)成為32的整數(shù)倍,最后再加上32位填充數(shù)據(jù).以XCV1000為例,有效幀長(zhǎng)為18×(Chip-Rows+2)=18×(64+2)=1188位,補(bǔ)“0”使幀長(zhǎng)成為32的整數(shù)倍,即幀長(zhǎng)38字,再加上一個(gè)填充字,最后幀長(zhǎng)為39字,占用39×32=1248位.
根據(jù)式(3),每個(gè)CLB在CLB列幀中占18位,每個(gè)CLB列包含48幀,因此對(duì)于每個(gè)CLB,其配置占用=48×18=864位,這些配置信息主要包括LUT中的配置數(shù)據(jù)、選擇開關(guān)配置數(shù)據(jù)和通用布線矩陣配置數(shù)據(jù).其中LUT的配置區(qū)域稱為L(zhǎng)UT SelectRAM,每個(gè)LUT有4輸入1輸出和16位配置數(shù)據(jù),分布在連續(xù)的16位次地址中,且只占用每個(gè)幀中的1位.LUT SelectRAM中配置數(shù)據(jù)按照反碼存放,以一個(gè)4輸入與非門為例,其LUT配置數(shù)據(jù)應(yīng)該為1000000000000000,但LUT SelectRAM中存放的數(shù)據(jù)是0111111111111111.
位流回讀與重配置的容錯(cuò)方法包括兩個(gè)部分,即位流回讀故障檢測(cè)方法和重配置容錯(cuò)方法.在空間環(huán)境中,衛(wèi)星電子器件受到輻射的影響主要產(chǎn)生總劑量效應(yīng)和單粒子效應(yīng),這兩種影響都會(huì)引起器件的故障甚至失效,對(duì)于總劑量效應(yīng)主要從器件工藝方面進(jìn)行解決,而對(duì)于單粒子效應(yīng)則主要采用容錯(cuò)方法.在基于SRAM的FPGA中,配置存儲(chǔ)器采用SRAM工藝實(shí)現(xiàn),是對(duì)單粒子翻轉(zhuǎn)最為敏感的部分,而配置位流回讀和重配置都是針對(duì)配置存儲(chǔ)器SRAM實(shí)施的方法,因此位流回讀與重配置的容錯(cuò)方法可以較好解決空間單粒子翻轉(zhuǎn)對(duì)FPGA的影響.
配置命令和配置數(shù)據(jù)幀都通過(guò)selectMAP接口與FPGA內(nèi)部配置寄存器進(jìn)行通信,這種方式能在不打斷FPGA工作的情況下對(duì)配置存儲(chǔ)器進(jìn)行訪問(wèn).重配置和配置回讀的電路組成及selectMAP接口回讀配置位流需要信號(hào)如圖2所示,圖中重配置和配置回讀控制邏輯的功能是產(chǎn)生滿足重配置和配置回讀的時(shí)序,發(fā)送配置命令幀,以及把回讀的配置數(shù)據(jù)寫入到存儲(chǔ)器SRAM中.存儲(chǔ)器SRAM用于保存二進(jìn)制配置文件(.bit)、二進(jìn)制回讀文件(.rbb)、掩碼文件(.msk)和回讀的配置數(shù)據(jù);故障檢測(cè)電路用于比較原始配置數(shù)據(jù)與回讀的配置數(shù)據(jù),記錄故障信息.
圖2 Virtex系列FPGA重配置和位流回讀電路連接Fig.2 Virtex FPGA reconfiguration and bitstream readback circuit
2.1 基于位流回讀的故障檢測(cè)方法
Virtex系列FPGA配置位流回讀有兩種方式:回讀驗(yàn)證(readback verification)和回讀捕獲(readback capture).回讀捕獲是獲取FPGA內(nèi)部觸發(fā)器的狀態(tài),用于進(jìn)一步了解FPGA的工作狀態(tài).回讀驗(yàn)證能夠在不中斷FPGA工作的情況下,獲取配置存儲(chǔ)器中數(shù)據(jù),判斷配置數(shù)據(jù)是否發(fā)生故障.采用回讀驗(yàn)證方式的配置回讀實(shí)現(xiàn)故障定位有3個(gè)主要步驟.
(1)用ISE軟件生成位流回讀相關(guān)文件
配置位流回讀需要借助Xilinx公司提供的ISE軟件.對(duì)于用戶設(shè)計(jì),如果需要啟動(dòng)回讀功能,則在ISE軟件生成配置位流文件時(shí)需要設(shè)置的開關(guān)主要有(這些開關(guān)也可以通過(guò)圖形界面的選項(xiàng)設(shè)置):
-m表示生成一個(gè)掩碼文件(.msk)
-g readback表示生成回讀比特文件(.rbb)
-g persist:X8表示使selectMAP接口在FPGA完成配置后仍保持有效
例如:bitgen-m-g readback-g persist:X8…
中國(guó)是人口大國(guó),水資源含量相對(duì)較少,目前面臨著嚴(yán)重的水資源危機(jī)。在農(nóng)業(yè)中,農(nóng)田灌溉屬于一項(xiàng)用水量較大的項(xiàng)目,在農(nóng)田灌溉過(guò)程中可合理的優(yōu)化農(nóng)田灌溉技術(shù),在節(jié)約水資源的基礎(chǔ)上達(dá)到對(duì)農(nóng)田的灌溉。隨著科技的不斷創(chuàng)新,相關(guān)技術(shù)與節(jié)水相互促進(jìn)與發(fā)展,能有效的保障水資源的合理配置。在農(nóng)田水利當(dāng)中,應(yīng)該運(yùn)用科學(xué)的灌溉制度,并在節(jié)約水資源的基礎(chǔ)上,提升農(nóng)田的生產(chǎn)效率,有效實(shí)現(xiàn)水利工程的可持續(xù)進(jìn)步與發(fā)展,一方面能夠?qū)λY源配置進(jìn)行合理的優(yōu)化和管理,另外也能有效的促進(jìn)農(nóng)業(yè)經(jīng)濟(jì)的可持續(xù)進(jìn)步與發(fā)展[2]。
開關(guān)設(shè)置后再生成下載的配置位流文件,就可以同時(shí)產(chǎn)生配置回讀所需要的二進(jìn)制回讀文件(. rbb)和掩碼文件(.msk).
(2)啟動(dòng)配置回讀及配置數(shù)據(jù)存儲(chǔ)
Virtex系列FPGA配置數(shù)據(jù)幀的讀寫采用命令方式,最小數(shù)量是1幀,最大數(shù)量是所有的CLB塊類型幀或一個(gè)Block SelectRAM Content列所包含的幀.CLB塊類型幀和RAM塊類型幀需要分開讀取,而且RAM塊類型幀中每個(gè)Block SelectRAM Content列所包含的幀需要分開讀取.因此,整個(gè)FPGA配置位流數(shù)據(jù)的讀出需要3個(gè)時(shí)序:一個(gè)用于CLB塊類型幀,兩個(gè)用于RAM塊類型幀.
RAM塊類型幀包含的是用戶設(shè)計(jì)信息,而CLB塊類型幀包含所有的配置信息,因此只需回讀CLB塊類型幀.在采用圖3結(jié)構(gòu)實(shí)現(xiàn)的電路中,配置位流回讀的流程如下:
1)使片選信號(hào)*CS和寫信號(hào)*WRITE有效,載入一系列回讀命令,如圖3所示.回讀命令也可從二進(jìn)制回讀文件(.rbb)、ASCII碼回讀文件(.rba)或掩碼文件(.msk)的文件頭中獲取.
2)使片選信號(hào)*CS和寫信號(hào)*WRITE無(wú)效,使配置數(shù)據(jù)信號(hào)D7到D0空閑,不被其他信號(hào)驅(qū)動(dòng).
3)使片選信號(hào)*CS有效,使寫信號(hào)*WRITE保持高電平,這樣回讀的配置位流數(shù)據(jù)就在配置時(shí)鐘信號(hào)CCLK的每個(gè)上升沿由D7到D0輸出.
圖3 配置回讀的命令Fig.3 Configuration readback commands
(3)回讀后配置數(shù)據(jù)比較
對(duì)配置存儲(chǔ)器SRAM中的故障定位采用配置位流比較方法,即把回讀的配置數(shù)據(jù)幀與二進(jìn)制回讀文件(.rbb)中原始配置數(shù)據(jù)進(jìn)行比較.在所有回讀數(shù)據(jù)(包括回讀驗(yàn)證和回讀捕獲)中,有3種數(shù)據(jù)不參加比較:
①填充數(shù)據(jù):用于分隔數(shù)據(jù)幀;
②RAM數(shù)據(jù):是基于LUT的RAM及BRAM中的數(shù)據(jù),這些數(shù)據(jù)隨用戶設(shè)計(jì)而改變;
③捕獲數(shù)據(jù):是內(nèi)部寄存器狀態(tài)數(shù)據(jù).
其中,填充數(shù)據(jù)的位置可以根據(jù)配置數(shù)據(jù)幀的格式來(lái)計(jì)算和確定,RAM數(shù)據(jù)和捕獲數(shù)據(jù)通過(guò)掩碼文件(.msk)進(jìn)行過(guò)濾.
故障檢測(cè)過(guò)程是根據(jù)掩碼文件對(duì)讀回的配置數(shù)據(jù)和原始配置數(shù)據(jù)按位比較,其中掩碼文件中為0的數(shù)據(jù)位參加比較,掩碼文件中為1的數(shù)據(jù)位不參加比較.在掩碼文件中為0的數(shù)據(jù)位的位置,如果讀回的配置數(shù)據(jù)和原始配置數(shù)據(jù)一致,則配置存儲(chǔ)器SRAM中的相應(yīng)位置沒(méi)有發(fā)生故障;否則,配置存儲(chǔ)器SRAM中相應(yīng)位的配置數(shù)據(jù)發(fā)生了翻轉(zhuǎn),形成stuck-at故障,需記錄故障位置.
2.2 基于重配置的容錯(cuò)方法
利用FPGA的重配置實(shí)現(xiàn)故障修復(fù)(即容錯(cuò))主要有3類方法:①全局重配置,是對(duì)FPGA配置存儲(chǔ)器SRAM全部重寫,重配置完成后需要重新啟動(dòng)FPGA,一般可以解決整個(gè)器件的單粒子翻轉(zhuǎn)故障;②部分重配置,是對(duì)FPGA一部分進(jìn)行重寫,不影響其他部分正常工作,需要首先采用總線宏對(duì)各模塊功能進(jìn)行劃分,實(shí)現(xiàn)技術(shù)比較復(fù)雜;③刷新方法(即scrubbing),是在FPGA工作間隙重新裝入整個(gè)配置,其裝入過(guò)程是分多個(gè)周期,每個(gè)周期裝入一幀配置.本論文采用全局重配置方式實(shí)現(xiàn)容錯(cuò),其優(yōu)點(diǎn)是實(shí)現(xiàn)較為簡(jiǎn)單可靠,且可以修復(fù)整個(gè)FPGA中的非永久性單粒子翻轉(zhuǎn)故障,該方法分兩個(gè)步驟:1)用ISE軟件生成用于重配置的位流文件;2)配置位流的寫入.
(1)用ISE軟件生成用于重配置的位流文件
重配置的實(shí)現(xiàn)需要借助Xilinx公司提供的ISE軟件.用ISE軟件對(duì)電路設(shè)計(jì)進(jìn)行綜合、布局布線,最后生成的二進(jìn)制配置文件(.bit)即可用于實(shí)現(xiàn)重配置,該文件中包括需要下載的配置位流數(shù)據(jù),而且配置位流數(shù)據(jù)還形成了配置數(shù)據(jù)幀的格式,此外該文件中還包括配置命令.
(2)配置位流的寫入
在檢測(cè)到SRAM中出現(xiàn)故障的情況下,重配置容錯(cuò)電路啟動(dòng)重配置控制邏輯對(duì)FPGA進(jìn)行重新配置,即在一定時(shí)序邏輯的配置下通過(guò)SelectMAP接口把二進(jìn)制配置文件(.bit)寫入FPGA,具體的時(shí)序配合和配置寫入流程如圖4所示.
圖4 重配置的流程Fig.4 Reconfiguration flowchart
配置數(shù)據(jù)的寫入(寄存器命令寫入和幀數(shù)據(jù)寫入)被封裝成數(shù)據(jù)包,有兩種數(shù)據(jù)包:1型數(shù)據(jù)包和2型數(shù)據(jù)包.1型數(shù)據(jù)包用于寄存器命令寫入,1型和2型數(shù)據(jù)包組合用于幀數(shù)據(jù)寫入.每型數(shù)據(jù)包都分為包頭和數(shù)據(jù)兩個(gè)部分.1型和2型數(shù)據(jù)包的包頭結(jié)構(gòu)如圖5所示.1型數(shù)據(jù)包最多包括數(shù)據(jù)長(zhǎng)度為0到(211-1)為2047字(32位),2型數(shù)據(jù)包最多包括數(shù)據(jù)長(zhǎng)度為0到(220-1)為1,048,575字(32位).
圖5 1型和2型配置數(shù)據(jù)包的結(jié)構(gòu)Fig.5 Structures of typeⅠand typeⅡconfiguration packages
在對(duì)FPGA的配置寫入時(shí),寫入的配置命令和配置數(shù)據(jù)幀的順序如表5所示,全部配置數(shù)據(jù)寫入FPGA后,FPGA重新啟動(dòng),進(jìn)入正常工作狀態(tài).
表5 數(shù)據(jù)寫入順序表Tab.5 Data writing sequence table
圖6是位流回讀和重配置硬件容錯(cuò)方法實(shí)現(xiàn)的一個(gè)實(shí)例,整個(gè)電路由3部分組成:1)監(jiān)控計(jì)算機(jī);2)位流回讀和重配置電路;3)目標(biāo)電路.
1)監(jiān)控計(jì)算機(jī)通過(guò)串口與位流回讀和重配置電路連接,運(yùn)行基于Windows的應(yīng)用軟件,能夠采用命令方式啟動(dòng)或停止對(duì)目標(biāo)電路的位流回讀和重配置,并能夠監(jiān)控和存儲(chǔ)位流回讀和重配置電路的工作狀態(tài);
圖6 位流回讀和重配置硬件容錯(cuò)方法的實(shí)現(xiàn)Fig.6 Implementation of bitstream readback and reconfiguration hardware fault tolerance method
2)位流回讀和重配置電路接收監(jiān)控計(jì)算機(jī)的命令,執(zhí)行對(duì)目標(biāo)電路的故障檢測(cè)和重配置容錯(cuò),主要由3個(gè)部分組成:LEON3處理器IP核、“重配置與位流回讀控制邏輯”,以及存儲(chǔ)回讀位流和配置位流的SRAM.LEON3處理器IP和“重配置與位流回讀控制邏輯”綜合在一片Virtex公司的Spartan 3系列FPGA(XC3S1000)中實(shí)現(xiàn),其中“重配置與位流回讀控制邏輯”用于和目標(biāo)電路接口,提供對(duì)目標(biāo)電路位流回讀和重配置需要的邏輯功能,LEON3處理器上運(yùn)行故障檢測(cè)和重配置控制軟件,接收監(jiān)控計(jì)算機(jī)發(fā)出的命令,控制位流的回讀和比較來(lái)檢測(cè)故障,控制重配置過(guò)程實(shí)現(xiàn)容錯(cuò).
3)目標(biāo)電路是故障檢測(cè)和容錯(cuò)的對(duì)象,是用戶邏輯的載體,采用Xilinx公司的Virtex系列FPGA (XCV1000)實(shí)現(xiàn).FPGA工作于SelectMAP配置模式,位流的配置和回讀接口以8位形式與位流回讀和重配置電路連接.
面向空間應(yīng)用領(lǐng)域,論文針對(duì)基于 SRAM的FPGA研究了通過(guò)位流回讀和重配置實(shí)現(xiàn)硬件容錯(cuò)的一種方法.配置數(shù)據(jù)幀包含回讀與重配置的全部位流數(shù)據(jù),是實(shí)現(xiàn)位流回讀與重配置的關(guān)鍵,因此論文對(duì)配置數(shù)據(jù)幀格式進(jìn)行了詳細(xì)分析,并給出其大小和地址計(jì)算方法.在此基礎(chǔ)上,給出采用位流回讀和重配置實(shí)現(xiàn)的硬件容錯(cuò)的電路結(jié)構(gòu)以及實(shí)現(xiàn)中關(guān)鍵信號(hào)的時(shí)序關(guān)系,給出故障檢測(cè)和重配置故障修復(fù)方法的詳細(xì)流程和步驟.最后,提出一種在Virtex系列FPGA上實(shí)現(xiàn)位流回讀和重配置容錯(cuò)設(shè)計(jì)的具體實(shí)現(xiàn)方案.
[1] D’Angelo S,Metra C,Pastore S,et al.Fault-tolerant voting mechanism and recovery scheme for TMR FPGA-based systems[C].IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems,M ilano, Italy,Nov.2-4,1998
[2] Gaisler J.A portable and fault-tolerant microprocessor based on the SPARC V8 architecture[C].IEEE International Conference on Dependable Systems and Networks,Noorwijk,Netherlands,June 23-26,2002
[3] AbramoviciM,Stroud C.BIST-based detection and diagnosis ofmultiple faults in FPGAs[C].IEEE International Test Conference,Murray Hill,NJ,USA,Oct 3-5, 2000
[4] Stroud C,Matthew L,Nall J,et al.On-line BIST and diagnosis of FPGA interconnect using roving STARs[C].IEEE 7thInternational On-Line Testing Workshop,Charlotte,NC,USA,July 9-11,2001
[5] Lach J,Mangione-Smith W H,Potkonjak M.Enhanced FPGA reliability through efficient run-time fault reconfiguration[J].IEEE Transactions on Reliability,2000, 49(3):296-304
[6] Rong Y.Triplemodular redundancy(TMR)in a configurable fault-tolerant processor(CFTP)for space applications[D].California:Department of Electrical and Computer Engineering,Naval Postgraduate School,2003
[7] Tyrrell A M,Hollingworth G,Smith S L.Evolutionary strategies and intrinsic fault tolerance[C].IEEE 3rdNASA/DoD Workshop on Evolvable Hardware,York Univ.,UK,July 2001
[8] Lohn J,Larchev G,DeMara R.Evolutionary fault recovery in a Virtex FPGA using a representation that incorporates routing[C].IEEE International Parallel and Distributed Processing Symposium,Moffett Field,CA, USA,April 22-26,2003
[9] Upegui A,Sanchez E.Evolving hardware with selfreconfigurable connectivity in Xilinx FPGAs[C].IEEE 1stNASA/ESA Conference on Adaptive Hardware and Systems,Switzerland,June 15-18,2006
An FPGA Bit-Stream Read Back and Reconfiguration Based Hardware Fault Tolerance M ethod for Space App lications
GONG Jian1,3,YANG Mengfei2
(1.Beijing Institute of Control Engineering,Beijing 100190,China;2.Science and Technology on Space Intelligent Control Laboratory,Beijing 100190,China;3.China Academy of Space Technology,Beijing 100094,China)
In this paper,the FPGA configuration frame format and configuration frame type and distribution in the whole device is analyzed.Based on the analysis,the detail of bit-stream read back fault detection method and reconfiguration fault tolerance method is presented.Finally,a circuit implementation with this paper’s fault tolerance method is illustrated.The research contributes to the circuit fault tolerance design method of all satellite subsystems that use SRAM-based FPGAs.
fault-tolerance;SRAM-based FPGA;space application;bit-stream read-back;reconfiguration
TV211
A
1674-1579(2012)01-0034-06
龔 健(1975-),男,工程師,研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù)和空間容錯(cuò)技術(shù);楊孟飛(1962-),男,研究員,研究方向?yàn)榭臻g控制計(jì)算機(jī)系統(tǒng)和航天器控制系統(tǒng).
2011-08-02
DO I:10.3969/j.issn.1674-1579.2012.01.006