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

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

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

0 引言

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

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

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

  ARINC 659[2]是一種航空電子模塊化設(shè)計(jì)的背板總線標(biāo)準(zhǔn),有魯棒分區(qū),具有確定的時間和空間性?;裟犴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)的綜合電子平臺。

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

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

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

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

  2.1 海明碼的基本原理

  海明碼是一種廣泛使用的可以糾正單個錯誤和檢測任意兩位錯誤的線性分組碼。常見的海明碼應(yīng)滿足不等式2m≥n+m+1,其中n為數(shù)據(jù)碼的位數(shù),m為校驗(yàn)碼的位數(shù),如果要求既要能糾正一位錯位又能檢測出兩位錯位,則至少需要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對RAM操作時,EDAC模塊已經(jīng)對RAM中的數(shù)據(jù)進(jìn)行了預(yù)處理,同時EDAC模塊中也加入了使能信號。EDAC主要工作在寫周期和讀周期,如圖1所示,EDAC主要包括發(fā)送和接收兩個部分。

001.jpg

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

002.jpg

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

  wr:CPU讀寫信號,0和1分別表示為寫和讀。

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

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

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

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ù)時,EDAC狀態(tài)寄存器記錄1 bit錯或2 bit錯。EDAC狀態(tài)寄存器有可屏蔽的EDAC中斷。依據(jù)海明編碼原理,ARINC 659總線控制器讀取數(shù)據(jù)時,1 bit錯直接糾正,2 bit以上的錯不做處理,ARINC 659總線控制器自身能保存正常數(shù)據(jù),2 bit以上的錯誤導(dǎo)致ARINC 659總線校驗(yàn)全部失效,將數(shù)據(jù)錯誤通知其他LRM。

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

004.jpg

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

  通常SEU發(fā)生頻率與器件所處的軌道位置和工作時間有關(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ī)通過向FPGA發(fā)送命令的方式注入故障,實(shí)現(xiàn)故障邏輯[4]。

005.jpg

  運(yùn)行時指令SRAM和數(shù)據(jù)DPRAM會同時發(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)。同時向指令SRAM和數(shù)據(jù)DPRAM中注入1 480 000次故障,主機(jī)平均會有475次失效,在這些失效中平均會有452次被檢測到并處理,其可靠性相對不加EDAC時顯著提高。

5 結(jié)論

006.jpg

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

  參考文獻(xiàn)

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

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

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

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


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