專利名稱:皮衛(wèi)星基于fpga的存儲模塊的容錯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及皮衛(wèi)星星載計算機(jī)技術(shù)領(lǐng)域,尤其涉及皮衛(wèi)星星載計算機(jī) 存儲模塊數(shù)據(jù)可靠性的改進(jìn)。
背景技術(shù):
空間單粒子效應(yīng)對星載計算機(jī)系統(tǒng)的影響是不可忽視的,即使一個微
小的邏輯錯誤都有可能使星載計算機(jī)癱瘓并造成衛(wèi)星失控。 一般情況下可 以通過避錯設(shè)計和容錯設(shè)計提高計算機(jī)系統(tǒng)的可靠性。對于公斤級的皮衛(wèi) 星來說,其特點(diǎn)是重量輕、體積小、成本低、研制周期短。而且航天級電 子器件的需求量相對較小,使抗輻射器件的成本很高,價格非常昂貴,在 實(shí)際開發(fā)過程中大量采用市場上容易取得的商業(yè)級電子器件。這些器件通 常沒有經(jīng)過嚴(yán)格的抗輻射測試,也沒有采用完善的抗輻射工藝。因而對于 星載計算機(jī)可靠性設(shè)計主要是通過容錯設(shè)計實(shí)現(xiàn)的。容錯設(shè)計是利用外加 資源的冗余技術(shù)屏蔽故障的影響,使局部的故障不會擴(kuò)散到全局。對星載 計算機(jī)存儲模塊采用靜態(tài)三模冗余、糾錯檢錯編碼、數(shù)據(jù)備份等方法利用 硬件冗余和信息冗余來應(yīng)對單粒子翻轉(zhuǎn)現(xiàn)象。
但現(xiàn)有技術(shù)中糾錯檢錯編碼(EDAC)執(zhí)行過程中產(chǎn)生的校驗(yàn)碼并沒 有采取安全手段防止校驗(yàn)碼發(fā)生錯誤,而若是校驗(yàn)碼發(fā)生翻轉(zhuǎn)等錯誤,即 使原始數(shù)據(jù)正確也會被認(rèn)為"錯誤",那也將是很致命的問題。另外一個 問題,現(xiàn)階段衛(wèi)星上使用的糾錯檢錯編碼(EDAC)芯片需要較復(fù)雜的外 圍電路,對功耗、體積等方面都會增加不少。而為了能夠在皮衛(wèi)星上使用, 必然需要精簡結(jié)構(gòu)、減少功耗,所以基于FPGA基礎(chǔ)上實(shí)現(xiàn)糾錯檢錯編碼 (EDAC)的方法是當(dāng)前急待解決的問題。
發(fā)明內(nèi)容
本發(fā)明提供一種基于FPGA釆用靜態(tài)三模冗余(TMR)、糾錯檢錯編 碼(EDAC)相結(jié)合的方法,對于皮衛(wèi)星這種超微小型衛(wèi)星的星載計算機(jī) 的存儲模塊進(jìn)行了可靠性方面的容錯設(shè)計。
一種皮衛(wèi)星基于FPGA的存儲模塊的容錯方法,包括中央處理器向靜 態(tài)存儲器的寫數(shù)據(jù)、讀數(shù)據(jù)操作,
所述的中央處理器向靜態(tài)存儲器進(jìn)行寫數(shù)據(jù)操作時-
(1) 數(shù)據(jù)總線根據(jù)需要寫入的數(shù)據(jù)的位數(shù),將需要寫入的數(shù)據(jù)分為 高位數(shù)據(jù)和低位數(shù)據(jù)兩部分,分別傳送到兩個漢明編碼模塊;
(2) 兩個漢明編碼模塊分別對高位數(shù)據(jù)和低位數(shù)據(jù)處理對應(yīng)生成漢 明糾錯碼所需的高位冗余數(shù)據(jù)k和低位冗余數(shù)據(jù)k,;
例如需要寫入的數(shù)據(jù)為32位,可將該32位數(shù)據(jù)分為高16位數(shù)據(jù)和 低16位數(shù)據(jù),高16位數(shù)據(jù)傳送到第一漢明編碼模塊,低16位數(shù)據(jù)傳送 到第二漢明編碼模塊。
當(dāng)然數(shù)據(jù)的位數(shù)也可以是其他位數(shù),高位數(shù)據(jù)和低位數(shù)據(jù)的位數(shù)也可 以不相同。
冗余數(shù)據(jù)的生成是利用了漢明編碼模塊中的糾錯碼生成器得到的,所 述的漢明編碼模塊及其糾錯碼生成器以及冗余數(shù)據(jù)的生成均可以采用現(xiàn) 有技術(shù)(可參見張鈺等的"皮衛(wèi)星星載計算機(jī)存儲模塊的容錯結(jié)構(gòu)設(shè)計" 《宇航學(xué)報》,2008.11, P2057 2061)。
本發(fā)明中,作為優(yōu)選當(dāng)需要寫入的數(shù)據(jù)為32位時,將需要寫入的數(shù) 據(jù)分為高16位數(shù)據(jù)和低16位數(shù)據(jù),通過第一漢明編碼模塊及第二漢明編 碼模塊處理后,產(chǎn)生的高位冗余數(shù)據(jù)k和低位冗余數(shù)據(jù)k'均為6位。
(3) 將高位數(shù)據(jù)和高位冗余數(shù)據(jù)k分別存入不同的靜態(tài)存儲器中的 三個扇區(qū);即每個靜態(tài)存儲器中有三個分割相同的扇區(qū),每個扇區(qū)都將高 位數(shù)據(jù)和高位冗余數(shù)據(jù)k各存一遍。
同樣,將低位數(shù)據(jù)和低位冗余數(shù)據(jù)k'分別存入不同的靜態(tài)存儲器中 的三個扇區(qū);即每個靜態(tài)存儲器中有三個分割相同的扇區(qū),每個扇區(qū)都將低位數(shù)據(jù)和低位冗余數(shù)據(jù)k'各存一遍。
這里要說明的是,用于存儲高位數(shù)據(jù)的靜態(tài)存儲器與用于存儲低位數(shù) 據(jù)的靜態(tài)存儲器是各自獨(dú)立的兩個靜態(tài)存儲器,而用于存儲高位冗余數(shù)據(jù) k與用于存儲低位冗余數(shù)據(jù)k'的靜態(tài)存儲器可以是同一個靜態(tài)存儲器。
例如,在實(shí)踐中將高位數(shù)據(jù)存入第一靜態(tài)存儲器,將低位數(shù)據(jù)存入第 二靜態(tài)存儲器,將高位冗余數(shù)據(jù)k和低位冗余數(shù)據(jù)k,均存入第三靜態(tài)存 儲器。
每一靜態(tài)存儲器對其內(nèi)的數(shù)據(jù)通過三個分割相同的扇區(qū)存儲了三遍。
所述的中央處理器向靜態(tài)存儲器進(jìn)行讀數(shù)據(jù)操作時
(1) 將同一靜態(tài)存儲器中不同扇區(qū)的數(shù)據(jù)讀出,按位做"三取二" 的比較操作,得到讀出的高位數(shù)據(jù)、高位冗余數(shù)據(jù)k、低位數(shù)據(jù)和低位冗 余數(shù)據(jù)k',并將讀出的高位數(shù)據(jù)、高位冗余數(shù)據(jù)k、低位數(shù)據(jù)和低位冗余 數(shù)據(jù)k'傳送至對應(yīng)的漢明編碼模塊;
(2) 兩個漢明編碼模塊分別對數(shù)據(jù)(高位數(shù)據(jù)或低位數(shù)據(jù))及該數(shù) 據(jù)對應(yīng)的冗余數(shù)據(jù)(高位冗余數(shù)據(jù)k或低位冗余數(shù)據(jù)k')進(jìn)行比較并將錯 誤信息反饋給中央處理器,利用冗余數(shù)據(jù)(高位冗余數(shù)據(jù)k或低位冗余數(shù) 據(jù)k')校正對應(yīng)的數(shù)據(jù)(高位數(shù)據(jù)或低位數(shù)據(jù))得到校正后的數(shù)據(jù)輸出到 數(shù)據(jù),將校正后的數(shù)據(jù)通過總線輸出到中央處理器。
兩個漢明編碼模塊分別對數(shù)據(jù)(高位數(shù)據(jù)或低位數(shù)據(jù))及該數(shù)據(jù)對應(yīng) 的冗余數(shù)據(jù)(高位冗余數(shù)據(jù)k或低位冗余數(shù)據(jù)k')進(jìn)行比較是通過漢明編 碼模塊中的譯碼器實(shí)現(xiàn),利用冗余數(shù)據(jù)(高位冗余數(shù)據(jù)k或低位冗余數(shù)據(jù) k')校正對應(yīng)的數(shù)據(jù)(高位數(shù)據(jù)或低位數(shù)據(jù))是通過漢明編碼模塊中的校 正器實(shí)現(xiàn),所述的漢明編碼模塊及其譯碼器糾、校正器以及數(shù)據(jù)比較、數(shù) 據(jù)校正均可以釆用現(xiàn)有技術(shù)(可參見張鈺等的"皮衛(wèi)星星載計算機(jī)存儲模
塊的容錯結(jié)構(gòu)設(shè)計"《宇航學(xué)報》,2008.11, P2057 2061)。
本發(fā)明方法可以使存儲模塊做到"糾l檢2",并保證校驗(yàn)碼的正確存 儲,同時很好的適應(yīng)了其重量輕、體積小、成本低、研制周期短的重要特 性。本發(fā)明方法針對空間環(huán)境中高能粒子對星載計算機(jī)存儲模塊造成的單粒子翻轉(zhuǎn)影響,并充分考慮皮衛(wèi)星對重量、體積、功耗等因素的限制,通
過分析比較選擇了 (22、 6)漢明糾錯碼作為存儲模塊的容錯結(jié)構(gòu),可以 使存儲模塊做到"糾l檢2",并采用三模冗余判決電路TMR保證校驗(yàn)碼 的正確存儲。其優(yōu)勢在于冗余度小、解碼速度快、兼容性強(qiáng),同時很好的 適應(yīng)了其重量輕、體積小、成本低、研制周期短的重要特性,并且使星載 計算機(jī)的可靠性得到顯著提升。
圖1為本發(fā)明中漢明編解碼模塊的結(jié)構(gòu)示意圖。 圖2為實(shí)現(xiàn)本發(fā)明容錯方法的裝置示意圖。
圖3為本發(fā)明三模存儲及三模表決模塊中用于控制寫數(shù)據(jù)操作的三模 存儲模塊的結(jié)構(gòu)示意圖。
圖4為本發(fā)明三模存儲及三模表決模塊中用于控制讀數(shù)據(jù)操作的三模 表決模塊的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
在皮衛(wèi)星的存儲模塊設(shè)計時,編解碼實(shí)現(xiàn)過程中,碼字長度較小的漢 明碼檢錯糾錯速度很快,隨著碼字長度的增加,糾錯的速度會逐漸減慢, 這可能會影響到中央處理器數(shù)據(jù)總線對內(nèi)存的訪問速度。
但是根據(jù)漢明糾錯碼校驗(yàn)位的位數(shù)k與信息位的位數(shù)l及碼字長度m相 關(guān)公式
2^^ + / + 1 (1)
m = / + A: (2)
對于分組過小的冗余碼,所需要的冗余位數(shù)過長從而導(dǎo)致冗余度過 大,比如對于8位長度的數(shù)據(jù),至少需要4位校驗(yàn)碼,即(12、 4)漢明碼 的冗余度為150%,而(22、 6)漢明碼冗余度為137.5%, (40、 8)漢明 碼冗余度為125%。
綜上所述,漢明糾錯碼碼字長度的選擇需要考慮幾個方面的因素,滿
7足處理器對存儲器訪問速度的要求與滿足存儲器編碼效率的要求之間是
矛盾的。碼字長度較短時,糾錯速度快但是需要較多的冗余存儲空間;碼
字較長時,可以降低冗余存儲空間的使用,但是檢錯糾錯速度會降低。由
于皮衛(wèi)星所需處理的事務(wù)相對于傳統(tǒng)衛(wèi)星較少,對于皮衛(wèi)星中央處理器片
外32位的數(shù)據(jù)總線,其內(nèi)存的訪問速度沒有非常嚴(yán)格的要求;從冗余度、
編解碼速度及漢明編解碼模塊兼容性幾個方面考慮,最終選擇了 (22、 6) 漢明糾錯碼方案作為星載計算機(jī)存儲模塊的容錯控制策略。
結(jié)合圖2,本發(fā)明容錯方法的實(shí)施過程如下,中央處理器向靜態(tài)存儲 器進(jìn)行寫數(shù)據(jù)操作時
中央處理器的32位數(shù)據(jù)總線分為兩路16位數(shù)據(jù)總線分別接入到兩個 完全相同的漢明編解碼器;
參見圖l,漢明編解碼模塊中的CPU一DB指CPU的數(shù)據(jù)線;EDAC—DB 指EDAC糾檢錯編碼的數(shù)據(jù)線;SRAM一DB指向靜態(tài)存儲器中進(jìn)行存儲的 數(shù)據(jù)線;Error指譯碼器發(fā)現(xiàn)數(shù)據(jù)出錯時向CPU發(fā)出的錯誤計數(shù)標(biāo)志; CPU一CB指CPU控制線;SRAM—CB指靜態(tài)存儲器控制線。
糾錯碼生成器的功能是在CPU和SRAM之間讀寫數(shù)據(jù)時產(chǎn)生冗余糾錯
碼;
譯碼器的功能是從SRAM讀出的原始冗余數(shù)據(jù)和通過糾錯碼生成器 生成的冗余數(shù)據(jù)進(jìn)行比較并將錯誤信息反饋給中央處理器;
校正器的功能是校正從SRAM讀出的數(shù)據(jù),最后由校正器將數(shù)據(jù)輸出 到數(shù)據(jù)總線上;
邏輯控制器的功能是同步CPU對SRAM的讀寫邏輯的控制指令。 第一漢明編碼模塊(圖2中的編解碼器1)處理32位數(shù)據(jù)中的高16
位數(shù)據(jù),第一漢明編碼模塊的糾錯碼生成器對高16位數(shù)據(jù)處理生成漢明
糾錯碼所需的6位的高位冗余數(shù)據(jù)k;
第二漢明編碼模塊(圖2中的編解碼器2)處理32位數(shù)據(jù)中的低16
位,第二漢明編碼模塊的糾錯碼生成器對低16位數(shù)據(jù)處理生成漢明糾錯
碼所需的6位的低位冗余數(shù)據(jù)k';利用三模存儲及三模表決模塊
將高16位數(shù)據(jù)存入第一靜態(tài)存儲器(圖2中的靜態(tài)存儲器SRAM1) 中的三個扇區(qū),即每個扇區(qū)存儲三遍;
將低16位數(shù)據(jù)存入第二靜態(tài)存儲器(圖2中的靜態(tài)存儲器SRAM2) 中的三個扇區(qū),即每個扇區(qū)存儲三遍;
將6位的高位冗余數(shù)據(jù)k及6位的低位冗余數(shù)據(jù)k'(共12位)合并 存入第三靜態(tài)存儲器(圖2中的靜態(tài)存儲器SRAM3)中的三個扇區(qū),即 每個扇區(qū)存儲三遍;
中央處理器向靜態(tài)存儲器進(jìn)行讀數(shù)據(jù)操作時
三模存儲及三模表決模塊將第一靜態(tài)存儲器、第二靜態(tài)存儲器及第三 靜態(tài)存儲器中不同扇區(qū)的數(shù)據(jù)讀出,按位做"三取二"的比較操作(由于 同一數(shù)據(jù)分別在同一靜態(tài)存儲器的三個扇區(qū)存儲三遍,那么如果其中有一 個扇區(qū)上的數(shù)據(jù)的某一位發(fā)生了改變,而另兩個扇區(qū)上的數(shù)據(jù)的沒有變 化,那么這兩個數(shù)據(jù)的沒有變化的扇區(qū)會將那個數(shù)據(jù)改變的扇區(qū)上的數(shù)據(jù) 掩蔽,只讀取表達(dá)正確的數(shù)據(jù)),得到讀出的高位數(shù)據(jù)、高位冗余數(shù)據(jù)k、 低位數(shù)據(jù)和低位冗余數(shù)據(jù)k';
第一漢明編解碼模塊中的譯碼器對讀出的高位數(shù)據(jù)、高位冗余數(shù)據(jù)k 進(jìn)行比較并將錯誤信息反饋給中央處理器,同樣第二漢明編解碼模塊中的 譯碼器對讀出的低位數(shù)據(jù)和低位冗余數(shù)據(jù)k'進(jìn)行比較并將錯誤信息反饋 給中央處理器。
中央處理器根據(jù)得到的錯誤信息,通過第一漢明編解碼模塊中的校正 器利用高位冗余數(shù)據(jù)k校正高位數(shù)據(jù),得到正確的高位數(shù)據(jù)并將數(shù)據(jù)輸出 到數(shù)據(jù)總線上;同樣中央處理器根據(jù)得到的錯誤信息,通過第二漢明編解 碼模塊中的校正器利用低位冗余數(shù)據(jù)k'校正低位數(shù)據(jù),得到正確的低位數(shù) 據(jù)并將數(shù)據(jù)輸出到數(shù)據(jù)總線上
本發(fā)明所述的三模存儲及三模表決模塊是由兩部分組成,艮P:
用于控制寫數(shù)據(jù)操作的三模存儲模塊(參見圖3);
和用于控制讀數(shù)據(jù)操作的三模表決模塊(參見圖4)。三模存儲模塊和三模表決模塊中均通過各自的邏輯及時鐘控制部分 控制著輸入輸出的數(shù)據(jù)的時序以及表決時的按位"三取二"的時序,每一
位數(shù)據(jù)均有三個參考量,取值僅有"0"和"1"。
權(quán)利要求
1、一種皮衛(wèi)星基于FPGA的存儲模塊的容錯方法,包括中央處理器向靜態(tài)存儲器的寫數(shù)據(jù)、讀數(shù)據(jù)操作,其特征在于所述的中央處理器向靜態(tài)存儲器進(jìn)行寫數(shù)據(jù)操作時(1)數(shù)據(jù)總線根據(jù)需要寫入的數(shù)據(jù)的位數(shù),將需要寫入的數(shù)據(jù)分為高位數(shù)據(jù)和低位數(shù)據(jù)兩部分,分別傳送到兩個漢明編碼模塊;(2)兩個漢明編碼模塊分別對高位數(shù)據(jù)和低位數(shù)據(jù)處理對應(yīng)生成漢明糾錯碼所需的高位冗余數(shù)據(jù)k和低位冗余數(shù)據(jù)k’;(3)將高位數(shù)據(jù)和高位冗余數(shù)據(jù)k分別存入不同的靜態(tài)存儲器中的三個扇區(qū),將低位數(shù)據(jù)和低位冗余數(shù)據(jù)k’分別存入不同的靜態(tài)存儲器中的三個扇區(qū);所述的中央處理器向靜態(tài)存儲器進(jìn)行讀數(shù)據(jù)操作時(1)將同一靜態(tài)存儲器中不同扇區(qū)的數(shù)據(jù)讀出,按位做“三取二”的比較操作,得到讀出的高位數(shù)據(jù)、高位冗余數(shù)據(jù)k、低位數(shù)據(jù)和低位冗余數(shù)據(jù)k’,并將讀出的高位數(shù)據(jù)、高位冗余數(shù)據(jù)k、低位數(shù)據(jù)和低位冗余數(shù)據(jù)k’傳送至對應(yīng)的漢明編碼模塊;(2)兩個漢明編碼模塊分別對數(shù)據(jù)及該數(shù)據(jù)對應(yīng)的冗余數(shù)據(jù)進(jìn)行比較并將錯誤信息反饋給中央處理器,利用冗余數(shù)據(jù)校正對應(yīng)的數(shù)據(jù)得到校正后的數(shù)據(jù)輸出到數(shù)據(jù),將校正后的數(shù)據(jù)通過總線輸出到中央處理器。
2、 如權(quán)利要求1所述的容錯方法,其特征在于中央處理器向靜態(tài) 存儲器進(jìn)行寫數(shù)據(jù)操作時,所述的需要寫入的數(shù)據(jù)為32位,步驟(1)中將該32位數(shù)據(jù)分為高16位數(shù)據(jù)和低16位數(shù)據(jù),高16位數(shù)據(jù)傳送到第一 漢明編碼模塊,低16位數(shù)據(jù)傳送到第二漢明編碼模塊。
3、 如權(quán)利要求2所述的容錯方法,其特征在于所述的高16位數(shù)據(jù) 和低16位數(shù)據(jù)通過第一漢明編碼模塊及第二漢明編碼模塊處理后,產(chǎn)生 的高位冗余數(shù)據(jù)k和低位冗余數(shù)據(jù)k'均為6位。
4、 如權(quán)利要求1所述的容錯方法,其特征在于中央處理器向靜態(tài)存儲器進(jìn)行寫數(shù)據(jù)操作時,步驟(3)中用于存儲高位數(shù)據(jù)的靜態(tài)存儲器 與用于存儲低位數(shù)據(jù)的靜態(tài)存儲器是各自獨(dú)立的兩個靜態(tài)存儲器,而用于 存儲高位冗余數(shù)據(jù)k與用于存儲低位冗余數(shù)據(jù)k'的靜態(tài)存儲器是同一個 靜態(tài)存儲器。
全文摘要
本發(fā)明公開了一種皮衛(wèi)星基于FPGA的存儲模塊的容錯方法,數(shù)據(jù)總線將需要寫入的數(shù)據(jù)分為高位數(shù)據(jù)和低位數(shù)據(jù)兩部分,分別傳送到兩個完全相同的漢明編碼模塊對高位數(shù)據(jù)和低位數(shù)據(jù)處理對應(yīng)生成冗余數(shù)據(jù);將數(shù)據(jù)和對應(yīng)的冗余數(shù)據(jù)分別存入靜態(tài)存儲器中的三個扇區(qū),讀數(shù)據(jù)時將同一靜態(tài)存儲器中不同扇區(qū)的數(shù)據(jù)讀出,按位做“三取二”的比較操作,得到讀出數(shù)據(jù)傳送至對應(yīng)的漢明編碼模塊;兩個漢明編碼模塊分別對數(shù)據(jù)進(jìn)行比較和校正后總線輸出到中央處理器。本發(fā)明方法可以使存儲模塊做到“糾1檢2”,并保證校驗(yàn)碼的正確存儲,同時很好的適應(yīng)了其重量輕、體積小、成本低、研制周期短的重要特性。
文檔編號G06F11/10GK101615147SQ20091010115
公開日2009年12月30日 申請日期2009年7月23日 優(yōu)先權(quán)日2009年7月23日
發(fā)明者鈺 張, 鄭陽明, 金仲和 申請人:浙江大學(xué)