基于FPGA的星載計(jì)算機(jī)自檢EDAC電路設(shè)計(jì)
在本設(shè)計(jì)中,我們采用外置的CPU芯片和內(nèi)置的RAM單元,作為自檢EDAC電路的硬件平臺(tái) (或環(huán)境、資源)。CPU芯片在這里起到的作用是啟動(dòng)EDAC自檢,處理錯(cuò)誤中斷,向地面?zhèn)?送錯(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×1M 20MHz = 0.2s。
更重要的是,在這0.2s的時(shí)間里,僅在出現(xiàn)錯(cuò)誤時(shí)需要向計(jì)算機(jī)產(chǎn)生中斷,進(jìn)行相應(yīng)處 理,對(duì)地面進(jìn)行錯(cuò)誤報(bào)告,因而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);
評(píng)論