O 引言
隨著我國航空航天事業(yè)的迅猛發(fā)展,衛(wèi)星的應用越來越廣泛。然而,太空環(huán)境復雜多變,其中存在著各種宇宙射線與高能帶電粒子,它們對運行于其中的電子器件會產(chǎn)生各種輻射效應。輻射效應對電子器件的影響不可忽視,因為輻射會使器件的性能參數(shù)發(fā)生退化,以至失效,從而影響衛(wèi)星的可靠運行,縮短衛(wèi)星的使用壽命。輻射效應對電子器件的影響很多,其中最主要的有總劑量效應(TID)和單粒子效應(S-EE)。SEE按產(chǎn)生的影響主要包括單粒子翻轉(zhuǎn)(SEU)、單粒子閂鎖(SEL)和單粒子燒毀(SEB)等三種類型,其中以SEU最為常見。在各種輻射效應當中,存儲器對SEU最為敏感,所以,對存儲器的抗輻射設計首先要考慮的就是抗SEU設計。
事實上,不同的空間環(huán)境和應用需求,對存儲器的數(shù)量與質(zhì)量也有不同的要求。例如:在上傳指令與下載星載儀器儀表的狀態(tài)時,要求數(shù)據(jù)有很高的可靠性,此時對內(nèi)存容量則沒有特別的要求;而在處理某些用途的圖像數(shù)據(jù)時,對數(shù)據(jù)可靠性的要求則相應較低,此時則需要較大的內(nèi)存容量。所以在采用具體的抗SEU方法時,也要因其不同情況而做出適合的選擇。
本文將采用擴展?jié)h明碼編碼(Extended Hamming Code)與三模冗余(Triple Modular Redundancy,TMR)相結(jié)合的方法,并利用二者檢錯糾錯的不同特點,來對SRAM進行檢錯糾錯模式可調(diào)的抗SEU設計。這樣既可實現(xiàn)存儲器的抗SEU設計。又可滿足對存儲器使用靈活性的要求。
1 擴展?jié)h明碼與TMR檢錯糾錯原理
1.1 擴展?jié)h明碼檢錯糾錯原理
擴展?jié)h明碼是一種常用的能檢測兩位錯同時能糾正一位錯的編碼方法。它是在漢明碼的基礎上.在碼字上再加入一個對所有碼元都進行校驗的校驗位而得到的,故稱為擴展?jié)h明碼。
擴展?jié)h明碼是線性分組碼的一種,其信息位和監(jiān)督位的關聯(lián)可由一組線性代數(shù)方程組表示。(n,k)線性分組碼的編碼就是去建立由r(其中r=n-k)個生成冗余位的方程式構(gòu)成的方程組,再由此方程組轉(zhuǎn)化為kxn的生成矩陣G。編碼時,可將信息位向量(k維)乘以生成矩陣G,從而得到碼字向量(n維),如下式所示:
將式(1)表示的方程組作移位變換,可以得到式(2),通常稱H為監(jiān)督矩陣。
?
解碼時,通過監(jiān)督矩陣H與讀出的碼字向量C的乘積結(jié)果可判斷該碼字是否出錯。若讀出的碼字向量C乘上監(jiān)督矩陣H后得到一個零向量,則表示沒有出錯;否則表示碼字在存儲之后受到了單粒子效應的影響,有錯誤發(fā)生。通常將監(jiān)督矩陣與讀出的碼字向量C的乘積記作S,稱為校驗子。當碼字中某一位發(fā)生錯誤時,就會得到唯一的S向量,該向量只與碼字出錯的位置有關,而與碼字C無關。通過S向量可以定位出錯的位置,并對出錯數(shù)據(jù)進行改正。
作為線性分組碼的一種,擴展?jié)h明碼的分組編碼總長為2r位,信息位長度為2r-1-r位,即(2r,2r-l-r)擴展?jié)h明碼。本設計采用了16位RAM存儲器,所以對應使用(22,16)擴展?jié)h明碼。
1.2 TMR檢錯糾錯原理
TMR是一種常見的硬件冗余技術(shù)。它的原理是在相同的一組硬件單元上同時發(fā)生錯誤的概率要比在單一硬件單元上發(fā)生錯誤的概率小。它的基本方法是將所需容錯的硬件單元增加到三倍或更多,并將各個單元的輸出連接到一個表決器上,由表決器選擇所有硬件單元中的絕大多數(shù)輸出值作為整體的輸出值。圖1所示為三模冗余系統(tǒng)結(jié)構(gòu)圖。
?
圖1中,A1、A2、A3三個模塊同時執(zhí)行同樣的操作,并將其輸出送給表決器,然后由表決器對接收到的三路數(shù)據(jù)進行比較。如果三個模塊同時給出三個相同的輸出,則表決器輸出任何一路作為正確輸出。如果其中任一模塊出錯,其輸出不同于其它兩個模塊,則表決器依然輸出正確結(jié)果。如果有兩個模塊同時出錯,且變成相同的狀態(tài),表決器則會誤認為這是正確的結(jié)果并輸出,不過這種情況的出現(xiàn)雖然可能,但概率非常小。當然,如果這兩個模塊同時出錯,但出錯狀態(tài)不同,則表決器此時將無法做出選擇,但可以產(chǎn)生中斷。
2 內(nèi)存配置方案
通過上面對擴展?jié)h明碼與TMR兩種檢錯糾錯方式的介紹,可以發(fā)現(xiàn)其二者各有優(yōu)勢,分別適用于不同的環(huán)境條件和應用需求。但是,這兩種方案對于內(nèi)存配置的要求是不同的,所以在對整個電路的設計之前,首先要對內(nèi)存作如下配置。
本設計中使用了3片16bit的SRAM。并分別采用(22,16)漢明碼和TMR兩種檢錯糾錯方法。對于(22,16),一般采用(16+8)位的存儲器來實現(xiàn),而TMR,則采用16位的存儲器來實現(xiàn)。若要支持這兩種方法,則必須首先為存儲器設計一種特別的內(nèi)存配置方式。本設計采用如圖2所示的內(nèi)存配置方案。
?
對于圖2所示的內(nèi)存配置方案,當系統(tǒng)工作在TMR模式時,所有的片選信號都被相同的信號驅(qū)動,這樣就構(gòu)成了TMR需要的3個16位內(nèi)存空間;而當系統(tǒng)工作在漢明碼模式時,它們則ah、al、bh為一組,bl、ch、cl為另一組,并分別被相同的片選信號驅(qū)動,從而構(gòu)成了兩個獨立的(16+8)位的內(nèi)存空間。本設計采用了3片128 K×16bit的SRAM,如果設置每片SRAM的低4K×16bit空間工作在TMR模式,則從圖中可以看出,該SRAM芯片組中還有兩個124 K×(16+8) bit的空間可以工作于擴展?jié)h明碼模式。
3 電路設計
基于上述內(nèi)存配置方案,本文設計了如圖3所示的抗SEU存儲器電路。該電路包含了4個功能模塊。
?
3.1 TMR模塊
在TMR工作模式下可完成數(shù)據(jù)的寫入操作和讀取操作中的冗余判決。如果在讀取過程中發(fā)現(xiàn)有一片RAM中的數(shù)據(jù)與其它三片不同,則對該片RAM進行正確數(shù)據(jù)的回寫;如果發(fā)現(xiàn)三片RAM中的數(shù)據(jù)都不相同,則產(chǎn)生中斷信號。
3.2 擴展?jié)h明碼模塊
在擴展?jié)h明碼工作模式下,當寫入數(shù)據(jù)時,則對其進行編碼;當讀取數(shù)據(jù)時,則對其進行相應的解碼,并判斷數(shù)據(jù)是否出錯。如果一位錯則自動回寫正確值,如果兩位以上的錯誤,則產(chǎn)生中斷信號。
3.3 模式選擇模塊
在該模塊內(nèi)部設置有一個32位的模式配置寄存器。通過給模式配置寄存器的低18位進行預先置數(shù),可以設置檢錯糾錯電路的工作模式,同時也就設置了RAM的內(nèi)存配置情況。根據(jù)CPU的不同應用要求,模式控制模塊可以讓檢錯糾錯電路在擴展?jié)h明碼方式與TMR方式二者之間進行靈活的切換。
3.4 控制邏輯模塊
該電路模塊可根據(jù)電路所處的檢錯糾錯模式來控制相應的讀寫信號和內(nèi)存片選信號,以便正確訪問RAM內(nèi)容。
接下來對每個模塊在設計過程的具體考慮進行重點介紹。
4.1 TMR模塊
對于TMR模塊的設計較為簡單。需要特別指出的是,考慮到對電路有效性的驗證,在寫通道上另外添加了錯誤注入模塊。圖4所示是其設計框圖,圖中,ctrl_err為錯誤注入控制信號,當ctrl_err為0時,表示不注入錯誤;當ctrl_err為1時,表示注入錯誤。這樣可以通過對ct-rl_err信號的控制來實現(xiàn)對SEU效應的模擬。add_err[7..0]為注錯數(shù)據(jù)信號。將add_err的低四位用0000~1111表示,可用于表示給數(shù)據(jù)添加錯誤的位置,它的高四位甩XX01~XX11表示,則可分別表示要給RAM組中的某個RAM添加錯誤。
?
4.2 擴展?jié)h明碼模塊
擴展?jié)h明碼模塊的設計主要包括編碼模塊、伴隨式生成模塊以及差錯校驗模塊等。編碼模塊可使用式(1)進行編碼,可生成r個校驗位。并將它們依次添加到碼元序列的第2i-1(其中i=0,…,r-1)個位置上。伴隨式生成模塊使用式(2)進行解碼,可對應生成校驗子S。差錯控制模塊可根據(jù)生成的校驗子S來判斷數(shù)據(jù)是否出錯,以及出錯的位數(shù),并用sef與def表示。如果數(shù)據(jù)沒有出現(xiàn)錯誤,則直接送出;如果數(shù)據(jù)中有一位出現(xiàn)錯誤,則對其進行回寫,同時將修正的數(shù)據(jù)送出;如果兩位出現(xiàn)錯誤,則輸出中斷信號int。
需要注意的是,擴展?jié)h明碼模式下的地址信號需要進行額外的處理。由于本設計采用了128K×16bit的SRAM芯片,它有17位地址信號。但是,正如上面提到過的,SRAM芯片組中將有4KB的存儲空間工作于TMR模式,還有248KB的存儲空間將工作于擴展?jié)h明碼模式,而248KB的空間需要18位地址信號,這就要求有一個對地址信號進行變換的模塊。當?shù)刂沸∮?KB 時,電路工作于TMR模式下而無需對地址進行變換;當?shù)刂反笥诘扔? KB同時小于128 KB時,電路工作于擴展?jié)h明碼模式,地址信號會選中第一個124 Kx(16+8)bit的空間,此時也無需地址變換;而當?shù)刂反笥诘扔?28 KB,電路也工作于擴展?jié)h明碼模式下,此時地址信號應選中第二個124 Kx(16+81bit的空間,此時則應將地址值加上4KB,然后取新的地址的低17位加到第二個124 Kx (16+8) bit的存儲空間上即可。
在上述TMR和擴展?jié)h明碼模塊的設計中,對出錯數(shù)據(jù)的回寫是設計中的重點和難點,主要應考慮是否回寫和何時回寫兩個問題。這兩個問題可由時序控制模塊來解決。它主要根據(jù)CPU的控制信號,適時的發(fā)出錯誤標示輸出使能信號flag_oe,從而改變CPU對RAM的讀寫狀態(tài),完成
修正數(shù)據(jù)的正確回寫。
另外,電路中的錯誤標示信號對整體設計的穩(wěn)定性至關重要。為了保證錯誤標示信號的穩(wěn)定,可在雙向傳輸門B的讀入端加一個鎖存器,鎖存器的鎖存使能端也可由時序控制模塊的flag_latch來控制。
4.3 模式選擇模塊
模式選擇模塊用于接收來自CPU的配置信號config和片選信號cs_fpga,以便將32位的配置數(shù)據(jù)寫入配置寄存器。該寄存器的低18位數(shù)據(jù)為模式配置數(shù)據(jù),地址信號通過與該數(shù)據(jù)進行比較,可使小于該地址的存儲器空間工作于TMR模式,大于該地址的存儲空間工作于擴展?jié)h明碼模式。
本電路采用軟件故障注入法來進行電路的有效性驗證,所以,在電路設計中,可將模式配置寄存器的其余14位用于注入外部干擾數(shù)據(jù),并將其連接到ctrl_err與add_err信號,以用來進行軟件故障的注入,模擬SEU對電路的影響。
4.4 控制邏輯模塊
該模塊可接收模式選擇模塊的模式信號mode,以對TMR模塊和擴展?jié)h明碼模塊輸出的讀寫信號和片選信號進行選擇,然后輸出到RAM芯片的引腳上去,從而實現(xiàn)CPU對RAM的正確訪問。尤其是當電路工作于擴展?jié)h明碼模式時,還需根據(jù)地址信號判斷當前對哪個124 Kx (16+8)bit的存儲空間片選有效。其具體電路如圖5所示。
?
5 結(jié)束語
本設計中的抗SEU存儲器的設計可通過ACTEL的ProAsic系列A3P400 FPGA實現(xiàn),并可使用與其配套的Liber08.5 EDA工具進行代碼的編輯和原理圖的繪制,并進行功能仿真與電路的綜合。通過仿真可以看到,本設計可以達到預期的目的,它既可實現(xiàn)存儲器的抗SEU設計,又可以滿足對存儲器使用靈活性的要求,而且具有功能完善、適應性強、電路簡單等特點,非常適用于星載RAM的抗輻射電路設計。
評論
查看更多