顧展弘,羅 晟,徐 睿
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
星載計算機是衛星控制系統的核心,它擔負著航天器的姿態及軌道控制、數據處理與傳輸、控制各種操作的執行,航天任務能否順利完成很大程度上取決于星載計算機的工作情況。其中的靜態存儲器作為星載計算機的重要組成部分,直接影響整機的可靠性,因此必須采用各種手段來提高其可靠性。
漢明碼是由R.Hamming在1950年提出的一種線性分組碼[1],由于其簡單高效的特性,目前仍被廣泛應用[2]。漢明碼是一種可以糾正單個錯誤的常用校驗碼[3],其實現原理是在傳輸的數據源碼中加入一些冗余碼,使這些數據源碼與冗余碼之間根據某種規則建立一定的關系,一旦合法數據編碼出現某些錯誤時,數據源碼與檢驗碼之間的關系被破壞,就形成非法編碼,而接收端可以通過檢測編碼的合法性來發現錯誤直至糾正錯誤[4]。
本電路中采用的糾錯編碼是[12,8]漢明碼,源碼8位,冗余碼4位,能夠實現檢測并糾正任意一位錯誤的功能。
[12,8]漢明碼的編碼算法主要由異或邏輯構成,令c為編碼后的碼字,m為編碼前的信息位,則編碼邏輯為:

[12,8]漢明碼的解碼邏輯包括計算伴隨式s,查找錯誤圖樣e和糾錯三個步驟。其中,計算伴隨式s的主要邏輯為:

伴隨式s計算完成后,錯誤圖樣e根據表1查找得到。在邏輯實現時,錯誤圖樣e采用譯碼實現,糾錯步驟采用異或操作進行。
該電路的主要功能是完成CPU對外部SRAM的數據存取和SEU的檢測及糾錯,同時還負責實現對接口信號的產生。電路采用EDAC技術可以簡單有效地提高系統的容錯能力,無需軟件初始化,具有實時性和自動完成的特點。

表1 伴隨式與錯誤圖樣的關系
該電路的核心部分即為EDAC(Error Detection and Correction錯誤檢測與糾正)編解碼模塊,實現糾正SRAM存儲數據發生的單粒子翻轉錯誤,圖1為該模塊功能框圖。

圖1 編解碼模塊功能框圖
總體設計思想是當CPU向SRAM寫入數據時,數據位DB經過ASIC生成校驗位CB,數據位與校驗位同時寫入靜態存儲器SRAM中。當CPU從SRAM中讀取數據時,數據位和校驗位均讀到EDAC中,使用剛剛讀入的數據位重新生成校驗位,新生成的校驗位與原來寫入時的校驗位做異或運算,其結果就是校驗子。由生成的校驗子控制糾錯單元,哪一位出錯就將相應位的數據取反,實現糾錯。
該電路采用半定制標準單元正向設計,包括系統設計、邏輯設計、布局布線、版圖提取與驗證、后仿真等工作。前端網表綜合使用Design Compiler,功能仿真使用NCSim,后端布局布線使用Silicon Ensemble,時序驗證使用PrimeTime,后仿真使用Hsim,參數提取和版圖驗證使用Dracula。
該電路電源電壓5V,最高工作頻率33MHz,芯片面積9.5mm×9.5mm,CPGA181封裝,采用0.5μm單多晶三鋁N阱CMOS工藝制造,經電路測試及系統試用,各項性能指標達到設計要求。
本文介紹了一種糾錯編解碼電路的設計,該電路可在空間輻射條件下有效完成CPU對外部SRAM的數據存取和SEU的檢測及糾錯,可應用于星載計算機的數據管理系統。
[1] 王新梅.糾錯碼——原理與方法[M].西安:西安電子科技大學出版社,2001. 30-36.
[2] 曹雪虹,張宗橙.信息論與編碼[M].北京:清華大學出版社,2004. 60-65.
[3] 王海波,等.糾錯編碼技術在俄羅斯深空測控通信系統中的應用和發展[J].遙測遙控,2009, 30(4):6-10.
[4] 劉淑芬,崔星.計算機RAM檢錯糾錯電路的設計與實現[J].航天控制,2003(4): 59-67.