基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)-設(shè)計(jì)應(yīng)用_第1頁(yè)
基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)-設(shè)計(jì)應(yīng)用_第2頁(yè)
基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)-設(shè)計(jì)應(yīng)用_第3頁(yè)
基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)-設(shè)計(jì)應(yīng)用_第4頁(yè)
基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)-設(shè)計(jì)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)-設(shè)計(jì)應(yīng)用摘要:為了消除空間環(huán)境中單粒子翻轉(zhuǎn)(SEU)的影響,目前星載計(jì)算機(jī)中均對(duì)RAM存儲(chǔ)單元采用檢錯(cuò)糾錯(cuò)(EDAC)設(shè)計(jì)。隨著FPGA在航天領(lǐng)域的廣泛應(yīng)用,FPGA已成為EDAC功能實(shí)現(xiàn)的硬件手段。本文介紹了EDAC的編碼和實(shí)現(xiàn),提出一種功能完善的、具有自檢、自糾錯(cuò)功能的EDAC電路設(shè)計(jì),并采用仿真工具對(duì)該EDAC電路的功能進(jìn)行了驗(yàn)證。

1引言

隨著人類(lèi)對(duì)空間探索的深入,空間環(huán)境對(duì)空間飛行器的電子設(shè)備和器件的影響逐漸顯現(xiàn)出來(lái)。空間輻射效應(yīng),特別是單粒子效應(yīng),對(duì)空間任務(wù)的完成具有潛在的巨大危害。星載計(jì)算機(jī)是衛(wèi)星的部件,在空間輻照環(huán)境下,必須充分考慮單粒子翻轉(zhuǎn)現(xiàn)象對(duì)星載計(jì)算機(jī)程控功能的破壞或影響。針對(duì)該問(wèn)題,目前普遍采用糾錯(cuò)檢錯(cuò)(EDAC)設(shè)計(jì)對(duì)星載計(jì)算機(jī)的RAM存儲(chǔ)單元進(jìn)行糾錯(cuò)檢錯(cuò)處理來(lái)消除SEU故障。

EDAC功能可采用硬件和軟件兩種手段來(lái)實(shí)現(xiàn)。采用軟件手段實(shí)現(xiàn),需要在讀寫(xiě)RAM存儲(chǔ)單元時(shí),對(duì)存儲(chǔ)數(shù)據(jù)和冗余信息進(jìn)行計(jì)算,因而要占用大量的CPU時(shí)間。對(duì)于星載計(jì)算機(jī)而言,由于CPU器件選型的局限,限制了CPU的性能,使CPU資源非常寶貴,因此目前普遍采用的是硬件手段來(lái)實(shí)現(xiàn)EDAC功能。隨著FPGA在通信信息特別是在航天領(lǐng)域的廣泛應(yīng)用,F(xiàn)PGA已成為EDAC功能實(shí)現(xiàn)的硬件手段。從目前可獲得的資料看,近些年歐美發(fā)射的衛(wèi)星均采用了FPGA作為星載計(jì)算機(jī)的器件。

2基于漢明碼的傳統(tǒng)EDAC設(shè)計(jì)

2.1漢明編碼

目前有許多編碼可以用來(lái)作為抗SEU的糾錯(cuò)碼使用,漢明編碼是常用的EDAC編碼,由Hamming于1950年構(gòu)造。這種編碼可以進(jìn)行檢錯(cuò)和糾錯(cuò),可以檢測(cè)1比特和2比特錯(cuò)誤,只能糾正1比特錯(cuò)誤,因此適用于單組數(shù)據(jù)中出現(xiàn)多個(gè)錯(cuò)誤位概率較低的情況,這恰與SEU經(jīng)常會(huì)修改星上RAM存儲(chǔ)單元1比特信息的情況相符。

漢明編碼的實(shí)現(xiàn)增加的硬件資源主要是存儲(chǔ)器單元,用來(lái)存儲(chǔ)冗余數(shù)據(jù),另外還增加了編碼和解碼電路,參加編碼和解碼的異或門(mén)電路隨著原始數(shù)據(jù)位數(shù)的增加而線性增加。在處理性能方面,編碼和解碼造成一定的延時(shí),增加了存儲(chǔ)器的讀寫(xiě)時(shí)間。

2.2傳統(tǒng)的EDAC電路設(shè)計(jì)

傳統(tǒng)的EDAC電路設(shè)計(jì)僅實(shí)現(xiàn)讀寫(xiě)功能,基本原理框圖如圖1所示.寫(xiě)操作時(shí),CPU將數(shù)據(jù)送入EDAC編碼模塊中,EDAC編碼模塊根據(jù)該數(shù)據(jù)生成校驗(yàn)碼,并將原始數(shù)據(jù)和校驗(yàn)碼分別寫(xiě)入數(shù)據(jù)RAM和校驗(yàn)RAM中;讀操作時(shí),CPU將數(shù)據(jù)RAM和校驗(yàn)RAM中的數(shù)據(jù)取出,送入EDAC糾錯(cuò)模塊中,EDAC糾錯(cuò)模塊將正確的數(shù)據(jù)送至CPU。這里EDAC編碼\糾錯(cuò)模塊的硬件實(shí)現(xiàn)可以是專(zhuān)用芯片,也可以采用通用的中小規(guī)模集成電路搭建。

SEU造成的RAM單元1比特錯(cuò)誤如果不定時(shí)清除,就會(huì)產(chǎn)生累積,使計(jì)算機(jī)由此處理的結(jié)果產(chǎn)生出2比特甚至更多比特錯(cuò)誤,這種情況下將無(wú)法采用EDAC功能進(jìn)行數(shù)據(jù)糾錯(cuò),導(dǎo)致系統(tǒng)錯(cuò)誤操作甚至任務(wù)失敗。因此定時(shí)對(duì)RAM存儲(chǔ)單元進(jìn)行更新是必要的,但在傳統(tǒng)EDAC電路設(shè)計(jì)下,對(duì)RAM存儲(chǔ)單元的更新只能由計(jì)算機(jī)的CPU(單片機(jī))進(jìn)行,其操作流程如下:

(1)從存儲(chǔ)單元讀出數(shù)據(jù);

(2)將讀出數(shù)據(jù)重寫(xiě)入;

(3)重復(fù)(1)~(2),直至全部單元更新完。

以航天計(jì)算機(jī)常用的80C32單片機(jī)為例,CPU對(duì)外部存儲(chǔ)單元的讀或?qū)懖僮餍枰?個(gè)指令周期,讀完再寫(xiě)入需要4個(gè)指令周期,每個(gè)指令周期包含12個(gè)時(shí)鐘。假設(shè)CPU時(shí)鐘為20MHz,更新1M個(gè)RAM存儲(chǔ)單元需要的CPU時(shí)間為:4×12×1M20MHz=2.4s。

對(duì)于星上非常緊張的CPU資源來(lái)說(shuō),這是難以接受的,大大增加了星上CPU軟件的設(shè)計(jì)難度。這種方法的另一個(gè)大的缺點(diǎn)是無(wú)法獲得數(shù)據(jù)錯(cuò)誤信息,因?yàn)镃PU直接讀取的是糾錯(cuò)后的數(shù)據(jù),所以無(wú)法對(duì)星上SEU造成RAM單元出錯(cuò)的概率和錯(cuò)誤模式進(jìn)行統(tǒng)計(jì)。

3基于FPGA的自檢EDAC設(shè)計(jì)

3.1功能分析

由于FPGA的內(nèi)部大量的邏輯資源,使EDAC電路設(shè)計(jì)可以實(shí)現(xiàn)更加復(fù)雜的功能。在星載計(jì)算機(jī)中,為了提高效率并節(jié)省CPU資源,一個(gè)理想的EDAC電路設(shè)計(jì),應(yīng)具有以下三部分功能:

(1)數(shù)據(jù)讀寫(xiě)功能。在CPU寫(xiě)操作時(shí),對(duì)原始數(shù)據(jù)進(jìn)行編碼,生成校驗(yàn)碼,并將原始數(shù)據(jù)和校驗(yàn)碼存儲(chǔ);在CPU讀操作時(shí),從存儲(chǔ)器中取出原始數(shù)據(jù)和校驗(yàn)碼,進(jìn)行計(jì)算,如有錯(cuò)誤,將錯(cuò)誤糾正后輸出,如無(wú)錯(cuò)誤,直接將原始數(shù)據(jù)輸出。

(2)自檢、自糾錯(cuò)功能。在CPU控制要求下,可自動(dòng)對(duì)所有EDAC保護(hù)的RAM存儲(chǔ)區(qū)進(jìn)行順序讀取和校驗(yàn),檢測(cè)出錯(cuò)誤數(shù)據(jù)或校驗(yàn)碼。在自檢狀態(tài)下,如果由CPU配置為自糾錯(cuò)狀態(tài),當(dāng)某一RAM單元檢測(cè)出單比特錯(cuò)誤后,自動(dòng)將正確數(shù)據(jù)和校驗(yàn)碼重新寫(xiě)入該RAM單元。該項(xiàng)功能的實(shí)施,基本上可保證SEU對(duì)計(jì)算機(jī)RAM區(qū)造成的影響及時(shí)得到修復(fù)。

(3)錯(cuò)誤信息處理功能。在CPU讀操作或者自檢狀態(tài)下,通過(guò)輸出錯(cuò)誤標(biāo)志信號(hào),對(duì)CPU產(chǎn)生中斷,對(duì)產(chǎn)生的錯(cuò)誤進(jìn)行相應(yīng)處理。在CPU讀操作或者自檢狀態(tài)下,如果檢測(cè)出錯(cuò)誤,將出錯(cuò)的地址、原始數(shù)據(jù)和校驗(yàn)碼進(jìn)行暫存,可由CPU讀取,進(jìn)行相應(yīng)處理。

3.2設(shè)計(jì)與實(shí)現(xiàn)

根據(jù)以上分析,筆者設(shè)計(jì)了如圖2所示的自檢EDAC電路,EDAC的功能主要由FPGA來(lái)實(shí)現(xiàn)。到目前為止,具有航天等級(jí)的FPGA芯片已經(jīng)具有內(nèi)置的CPU硬核以及高達(dá)2.5Mbit的RAM資源,因此該設(shè)計(jì)中的CPU和RAM模塊均可以是FPGA內(nèi)部資源,當(dāng)內(nèi)部資源無(wú)法滿足設(shè)計(jì)要求時(shí),也可以采用外置CPU芯片或外置RAM芯片。

在本設(shè)計(jì)中,我們采用外置的CPU芯片和內(nèi)置的RAM單元,作為自檢EDAC電路的硬件平臺(tái)(或環(huán)境、資源)。CPU芯片在這里起到的作用是啟動(dòng)EDAC自檢,處理錯(cuò)誤中斷,向地面?zhèn)魉湾e(cuò)誤信息,并根據(jù)地面要求對(duì)錯(cuò)誤信息進(jìn)行處理。

在該設(shè)計(jì)中,檢測(cè)一個(gè)存儲(chǔ)單元地址僅需要4個(gè)時(shí)鐘周期,如果開(kāi)啟自糾錯(cuò)功能,并且檢測(cè)到單比特錯(cuò)誤,再增加2個(gè)時(shí)鐘周期用來(lái)糾錯(cuò)。因此如果時(shí)鐘為20MHz,并且錯(cuò)誤數(shù)據(jù)較少,則更新1M個(gè)RAM存儲(chǔ)單元需要的時(shí)間約為:4×1M20MHz=0.2s。

更重要的是,在這0.2s的時(shí)間里,僅在出現(xiàn)錯(cuò)誤時(shí)需要向計(jì)算機(jī)產(chǎn)生中斷,進(jìn)行相應(yīng)處理,對(duì)地面進(jìn)行錯(cuò)誤,因而CPU處理時(shí)間很短,節(jié)省了寶貴的CPU資源。

3.3仿真與驗(yàn)證

在空間環(huán)境下普遍存在的SEU,在地面環(huán)境下是很難獲得的,為了在地面對(duì)該EDAC電路設(shè)計(jì)進(jìn)行驗(yàn)證,需要采取故障注入手段。由于在本例中RAM存儲(chǔ)單元采用FPGA內(nèi)部資源,因此故障注入變得相對(duì)簡(jiǎn)單。在FPGA進(jìn)行程序綜合時(shí),可將預(yù)先編制好的RAM存儲(chǔ)單元初始化文件一起綜合。因此我們可在編制RAM存儲(chǔ)單元初始化文件時(shí),對(duì)某些比特位進(jìn)行修改,以模擬空間環(huán)境下SEU對(duì)RAM存儲(chǔ)單元的影響。

在這里采用Xilinx公司的XQRV300為硬件載體,該型號(hào)FPGA芯片在航天領(lǐng)域內(nèi)被廣泛使用。為節(jié)省仿真時(shí)間,數(shù)據(jù)RAM存儲(chǔ)單元采用256*8bit,檢驗(yàn)RAM存儲(chǔ)單元采用25*bit。在RAM存儲(chǔ)單元初始化文件中,人工加入了12個(gè)單比特錯(cuò)誤,以及1個(gè)兩比特錯(cuò)誤,如下表所示。

為仿真簡(jiǎn)便起見(jiàn),向存儲(chǔ)單元存放的正確數(shù)據(jù)與存儲(chǔ)單元地址相同。

時(shí)鐘選擇為20MHz,通過(guò)采用ModelSim軟件進(jìn)行布線后仿真,我們可以得到圖3所示結(jié)果。

圖中:Clk—系統(tǒng)時(shí)鐘;

En—EDAC模塊使能控制;

Check—自檢啟動(dòng)/使能信號(hào)(信號(hào)上升沿觸發(fā)巡檢,信號(hào)為低暫停巡檢);

Rw_En—自糾錯(cuò)使能信號(hào)(為高允許糾錯(cuò));

Err—錯(cuò)誤中斷(標(biāo)志)信號(hào);

Rw—自糾錯(cuò)標(biāo)志信號(hào)(為高表示正在進(jìn)行自糾錯(cuò)操作);

MErr—多比特錯(cuò)誤中斷(標(biāo)志)信號(hào);

Checking—自檢標(biāo)志(為高表示尚未完成本次巡檢操作);

Err_Sum,Err_A,Err_D,Err_C—錯(cuò)誤計(jì)數(shù),錯(cuò)誤地址,原始數(shù)據(jù),原始校驗(yàn)碼;

D,A,Wr,Rd—單片機(jī)數(shù)據(jù)、地址、寫(xiě)操作、讀操作信號(hào);

從圖中可以看出,啟動(dòng)EDAC自檢后,EDAC開(kāi)始巡檢RAM存儲(chǔ)單元,產(chǎn)生錯(cuò)誤中斷(標(biāo)志)信號(hào),給出錯(cuò)誤信息。當(dāng)單片機(jī)需要處理中斷時(shí),將Check信號(hào)置‘0’,可暫時(shí)停止巡檢,此時(shí)單片機(jī)可對(duì)RAM存儲(chǔ)單元進(jìn)行正常讀寫(xiě)操作。等中斷處理完后,單片機(jī)將Check信號(hào)置‘1’,恢復(fù)RAM巡檢操作。

另外可通過(guò)Rw_En的置‘0’或‘1’,來(lái)控制禁止或允許進(jìn)行自糾錯(cuò)操作。

當(dāng)出現(xiàn)可識(shí)別的多位錯(cuò)誤時(shí),產(chǎn)生Err和MErr兩個(gè)錯(cuò)誤中斷(標(biāo)志)信號(hào),但由于漢明碼僅能糾正單比特錯(cuò)誤,因此不進(jìn)行自糾錯(cuò)操作。

從原注入錯(cuò)誤數(shù)據(jù)對(duì)應(yīng)的地址讀出數(shù)據(jù),仿真輸出結(jié)果如圖4所示。

可以看出除一個(gè)地址(FFH)由于兩位錯(cuò)仍輸出錯(cuò)誤外,其他地址輸出數(shù)據(jù)均與地址相同,即為正確數(shù)據(jù)。

其中,24H、3CH、60H三個(gè)地址雖然輸出正確數(shù)據(jù),但仍報(bào)錯(cuò),表明存儲(chǔ)器內(nèi)數(shù)據(jù)仍然為錯(cuò)誤數(shù)據(jù),在輸出時(shí)進(jìn)行了糾錯(cuò)。這是由于在上次巡檢到這部分地址空間時(shí),通過(guò)把Rw_En信號(hào)拉低,從而禁止了自動(dòng)糾錯(cuò),導(dǎo)致這三個(gè)地址錯(cuò)誤數(shù)據(jù)未被糾正。而在對(duì)其他地址進(jìn)行數(shù)據(jù)讀取時(shí),未產(chǎn)生錯(cuò)誤標(biāo)志,證明其他錯(cuò)誤數(shù)據(jù)已被糾錯(cuò)。

4結(jié)論

本文在采用FPGA芯片實(shí)現(xiàn)基本EDAC讀寫(xiě)功能的設(shè)計(jì)思路基礎(chǔ)上,創(chuàng)建了一種新型的可對(duì)RAM存儲(chǔ)單元進(jìn)行自檢的EDAC功能模塊。該模塊不但可以對(duì)RAM存儲(chǔ)單元進(jìn)行快速巡檢,巡檢時(shí)間僅為傳統(tǒng)EDAC方法的十二分之一,還可以自動(dòng)糾正已發(fā)現(xiàn)的錯(cuò)誤。該模塊的優(yōu)點(diǎn)在于節(jié)省了單片機(jī)資源,幾乎不需要單片機(jī)的參與即可完成所有自檢功能,從而使基于FP

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論