《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種基于FPGA的航空總線容錯(cuò)機(jī)制設(shè)計(jì)
一種基于FPGA的航空總線容錯(cuò)機(jī)制設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第10期
丁志平
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
摘要: 航天應(yīng)用中,單粒子翻轉(zhuǎn)引發(fā)SRAM型FPGA的錯(cuò)誤最多,而EDAC設(shè)計(jì)在糾錯(cuò)模塊中有著廣泛的應(yīng)用。將依據(jù)擴(kuò)展海明碼設(shè)計(jì)的[40,32]EDAC模塊嵌入到ARINC 659的雙口數(shù)據(jù)DPRAM和指令SRAM中,提高了總線控制器的容錯(cuò)處理能力。
Abstract:
Key words :

  摘  要: 航天應(yīng)用中,單粒子翻轉(zhuǎn)引發(fā)SRAM型FPGA的錯(cuò)誤最多,而EDAC設(shè)計(jì)在糾錯(cuò)模塊中有著廣泛的應(yīng)用。將依據(jù)擴(kuò)展海明碼設(shè)計(jì)的[40,32]EDAC模塊嵌入到ARINC 659的雙口數(shù)據(jù)DPRAM和指令SRAM中,提高了總線控制器的容錯(cuò)處理能力。

  關(guān)鍵詞: ARINC 659;單粒子翻轉(zhuǎn);錯(cuò)誤檢測(cè)與糾正;海明碼

0 引言

  集成電路的應(yīng)用領(lǐng)域在不斷深入擴(kuò)大,航空航天方面要求系統(tǒng)能長(zhǎng)期可靠地運(yùn)行,其運(yùn)行的環(huán)境輻射比地面輻射嚴(yán)重,集成電路很容易受到干擾,導(dǎo)致設(shè)備不能正常工作。單粒子翻轉(zhuǎn)是指高能粒子射入集成電路的PN結(jié),會(huì)發(fā)生PN結(jié)電離、電荷積累、能量轉(zhuǎn)移等。存儲(chǔ)器件某一位數(shù)據(jù)會(huì)從一個(gè)穩(wěn)態(tài)轉(zhuǎn)變?yōu)榱硗庖粋€(gè)穩(wěn)態(tài),是引發(fā)航天器故障的主要因數(shù)。

  為了最大限度地減少單粒子效應(yīng)對(duì)FPGA的影響,通常采用三模冗余的加固結(jié)構(gòu),盡管三模冗余結(jié)構(gòu)可以將錯(cuò)誤暫時(shí)隔離,但是在長(zhǎng)期工作的情況下冗余單元也可能繼續(xù)發(fā)生錯(cuò)誤。近年來(lái)國(guó)內(nèi)外采用EDAC電路來(lái)減少或避免錯(cuò)誤的發(fā)生。常見(jiàn)的EDAC電路都是采用專用芯片配上時(shí)序來(lái)工作的,這不利于系統(tǒng)的集成小型化和低功耗。本文基于ARINC 659控制器的設(shè)計(jì),利用Verilog HDL實(shí)現(xiàn)EDAC的功能,使設(shè)計(jì)朝著高集成、低功耗的方向發(fā)展[1]。

1 ARINC 659總線技術(shù)簡(jiǎn)介

  ARINC 659[2]是一種航空電子模塊化設(shè)計(jì)的背板總線標(biāo)準(zhǔn),有魯棒分區(qū),具有確定的時(shí)間和空間性?;裟犴f爾公司根據(jù)ARINC 659標(biāo)準(zhǔn)設(shè)計(jì)的SAFEbus用于波音777的飛機(jī)信息管理系統(tǒng)中,從1993年被采納成為行業(yè)標(biāo)準(zhǔn)至今已經(jīng)穩(wěn)定運(yùn)行30多年。它能夠應(yīng)用于大型客機(jī)的電子系統(tǒng),表明ARINC 659是一種較為可靠的內(nèi)總線,適用于航天系統(tǒng)的綜合電子平臺(tái)。

  在ARINC 659標(biāo)準(zhǔn)中,每一個(gè)可插拔的子板被稱作在線可更換模塊(Line Replaceable Module,LRM)。每個(gè)LRM有兩個(gè)總線接口(Bus Interface Unit,BIU)。在該標(biāo)準(zhǔn)中,一條659總線上最多允許連接32個(gè)LRM。ARINC 659使用時(shí)間觸發(fā)的調(diào)度方式稱為表驅(qū)動(dòng)比例訪問(wèn)協(xié)議(Table Driven Proportional Access,TDPA),并將決定總線時(shí)分復(fù)用特性的調(diào)度表保存在每個(gè)BIU中,維護(hù)協(xié)議的數(shù)據(jù)開(kāi)銷(xiāo)非常小。ARINC 659的4線交叉校驗(yàn)機(jī)制可以對(duì)每一位進(jìn)行校驗(yàn)。

  ARINC 659假設(shè)每個(gè)BIU使用獨(dú)立的時(shí)鐘,儲(chǔ)存相同的TDPA表,因此在總線工作時(shí)是沒(méi)有中心控制的分布式系統(tǒng)的。同時(shí),ARINC 659也支持LRM的冗余,協(xié)議中最多允許某項(xiàng)功能有4個(gè)LRM做備份。

  目前見(jiàn)到的航空總線標(biāo)準(zhǔn)中,ARINC 659總線的實(shí)時(shí)性、可靠性和冗余度是最高的,但霍尼韋爾公司只提供整機(jī)解決方案,不提供芯片,因此研究該總線能為我國(guó)航空電子系統(tǒng)開(kāi)發(fā)與應(yīng)用提供幫助。

2 EDAC的原理與實(shí)現(xiàn)

  2.1 海明碼的基本原理

  海明碼是一種廣泛使用的可以糾正單個(gè)錯(cuò)誤和檢測(cè)任意兩位錯(cuò)誤的線性分組碼。常見(jiàn)的海明碼應(yīng)滿足不等式2m≥n+m+1,其中n為數(shù)據(jù)碼的位數(shù),m為校驗(yàn)碼的位數(shù),如果要求既要能糾正一位錯(cuò)位又能檢測(cè)出兩位錯(cuò)位,則至少需要m+1位校驗(yàn)碼。該控制器中傳輸32 bit數(shù)據(jù),依據(jù)海明碼的原理,使用8 bit校驗(yàn)位,構(gòu)成[40,32]擴(kuò)展海明碼。依據(jù)規(guī)則,在數(shù)據(jù)位的第2k(k=0,1,2,3,4,5) bit上放置校驗(yàn)碼。

  2.2 EDAC模塊的設(shè)計(jì)與實(shí)現(xiàn)

  EDAC模塊在CPU與RAM之間[3],保護(hù)控制器RAM的數(shù)據(jù),CPU對(duì)RAM操作時(shí),EDAC模塊已經(jīng)對(duì)RAM中的數(shù)據(jù)進(jìn)行了預(yù)處理,同時(shí)EDAC模塊中也加入了使能信號(hào)。EDAC主要工作在寫(xiě)周期和讀周期,如圖1所示,EDAC主要包括發(fā)送和接收兩個(gè)部分。

001.jpg

  上面發(fā)送模塊負(fù)責(zé)海明碼編碼,用控制電路寄存器中的數(shù)據(jù)位確定校驗(yàn)位,然后依據(jù)海明碼的長(zhǎng)度和編碼方案編碼。將并行轉(zhuǎn)成串行數(shù)據(jù)發(fā)出去。接收模塊主要負(fù)責(zé)海明碼糾錯(cuò)與解碼,解碼過(guò)程就是依據(jù)已知校驗(yàn)位數(shù)確定碼字長(zhǎng)度;而糾正就是用已經(jīng)生成的校驗(yàn)碼和形成該校驗(yàn)碼的編碼方程再進(jìn)行一次異或操作,如果該等式為0,則代表沒(méi)有發(fā)生錯(cuò)誤,若等式為1,說(shuō)明有錯(cuò),可以從等式的值判斷具體的出錯(cuò)位,糾正后再?gòu)拇a字中選出數(shù)據(jù)位。

002.jpg

  EDAC模塊通過(guò)Verilog HDL在FPGA中實(shí)現(xiàn),其總體框架如圖2所示,其各變量的含義如下:

  wr:CPU讀寫(xiě)信號(hào),0和1分別表示為寫(xiě)和讀。

  c_data[7:0]:CPU的傳送和接收數(shù)據(jù)。

  mem_data[39:0]:存儲(chǔ)器數(shù)據(jù)包括32 bit數(shù)據(jù)位和8 bit校驗(yàn)位。

  er_out[1:0]:錯(cuò)誤類型,分別為無(wú)錯(cuò)誤、1 bit錯(cuò)、2 bit及2 bit以上錯(cuò)、校驗(yàn)位錯(cuò)誤。

3 EDAC模塊在ARINC 659總線控制器中的實(shí)現(xiàn)

003.jpg

  圖3是ARINC 659總線的系統(tǒng)框圖,雙口數(shù)據(jù)DPRAM使用[40,32]EDAC編碼保存數(shù)據(jù)。8051讀取數(shù)據(jù)時(shí),EDAC狀態(tài)寄存器記錄1 bit錯(cuò)或2 bit錯(cuò)。EDAC狀態(tài)寄存器有可屏蔽的EDAC中斷。依據(jù)海明編碼原理,ARINC 659總線控制器讀取數(shù)據(jù)時(shí),1 bit錯(cuò)直接糾正,2 bit以上的錯(cuò)不做處理,ARINC 659總線控制器自身能保存正常數(shù)據(jù),2 bit以上的錯(cuò)誤導(dǎo)致ARINC 659總線校驗(yàn)全部失效,將數(shù)據(jù)錯(cuò)誤通知其他LRM。

  指令SRAM也使用[40,32]EDAC編碼保存數(shù)據(jù),寫(xiě)入方法與雙端口數(shù)據(jù)DPRAM相同。正常狀態(tài)下,ARINC 659總線控制器只讀指令SRAM,指令SRAM自身也有EDAC,但隨著時(shí)間累積,單粒子翻轉(zhuǎn)可能在指令SRAM中累積,最后發(fā)生多位錯(cuò)。針對(duì)這種情況,在ARINC 659指令總線上新增EDAC刷新模塊,它每次讀取指令SRAM的一個(gè)字,再將其寫(xiě)入指令SRAM,可以避免1 bit錯(cuò)累加形成多位錯(cuò)。659總線控制器讀取指令SRAM的EDAC狀態(tài)時(shí),對(duì)1 bit錯(cuò)不做處理,對(duì)2 bit錯(cuò)659總線控制器會(huì)斷開(kāi),另一個(gè)659總線控制器依靠交叉使能不一致也會(huì)斷開(kāi)。659總線控制器遇到多位錯(cuò)將會(huì)變?yōu)槲粗獱顟B(tài),最終因?yàn)榻徊媸鼓懿灰恢乱矔?huì)斷開(kāi)。圖4是32 bit數(shù)據(jù)5A5A5A5A經(jīng)過(guò)EDAC模塊之后的狀態(tài)。

004.jpg

4 注入故障與結(jié)果分析

  通常SEU發(fā)生頻率與器件所處的軌道位置和工作時(shí)間有關(guān),每天SRAM中SEU的發(fā)生約為3×10-5位。為了加快實(shí)驗(yàn)進(jìn)度,采用與實(shí)際情況相似的硬件故障注入方式,故障注入基本頻率為10次/s。其結(jié)構(gòu)如圖5所示,包括注入機(jī)和目標(biāo)機(jī),注入機(jī)通過(guò)向FPGA發(fā)送命令的方式注入故障,實(shí)現(xiàn)故障邏輯[4]。

005.jpg

  運(yùn)行時(shí)指令SRAM和數(shù)據(jù)DPRAM會(huì)同時(shí)發(fā)生故障,導(dǎo)致主機(jī)失效。本文選用4種程序進(jìn)行試驗(yàn),分別為遞歸(Fibonacci,F(xiàn)I)、快速排序(Quick Sort,QS)、矩陣乘(Matrix Multiplication,MM)和快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)。同時(shí)向指令SRAM和數(shù)據(jù)DPRAM中注入1 480 000次故障,主機(jī)平均會(huì)有475次失效,在這些失效中平均會(huì)有452次被檢測(cè)到并處理,其可靠性相對(duì)不加EDAC時(shí)顯著提高。

5 結(jié)論

006.jpg

  本文研究了EDAC的主要原理和實(shí)現(xiàn),針對(duì)ARINC 659總線控制器的體系結(jié)構(gòu)與特點(diǎn),將[40,32]EDAC模塊嵌入數(shù)據(jù)DPRAM和指令SRAM中,用來(lái)糾正1 bit錯(cuò)位和檢驗(yàn)2 bit錯(cuò)誤。該設(shè)計(jì)嵌入在FPGA中,與傳統(tǒng)的利用糾錯(cuò)芯片硬件電路相比,簡(jiǎn)化了電路,能快速地實(shí)現(xiàn)ARINC 659總線控制器的糾錯(cuò)檢錯(cuò),有效降低了單粒子翻轉(zhuǎn)效應(yīng)對(duì)存儲(chǔ)器的影響,提升系統(tǒng)的整體性能。

  參考文獻(xiàn)

  [1] 付劍.星載計(jì)算機(jī)的硬件容錯(cuò)設(shè)計(jì)與可靠性分析[D].長(zhǎng)沙:國(guó)防科技大學(xué),2009.

  [2] 張喜民,魏婷.ARINC659容錯(cuò)數(shù)據(jù)總線測(cè)試驗(yàn)證系統(tǒng)研制[J].西安電子科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,38(6):140-145.

  [3] 劉淑芬.崔星.計(jì)算機(jī)RAM檢錯(cuò)糾錯(cuò)電路的設(shè)計(jì)與實(shí)現(xiàn)[J].航天控制,2003(4):59-67.

  [4] 賈文濤,張春元,付劍,等.一種高可靠雙機(jī)備份星載計(jì)算機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[C].第六屆中國(guó)測(cè)試會(huì)議,2010.7.


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