隨著各種電路和芯片的性能(速度、集成度等)不斷提高,尤其是在軍事、航空航天等用途中對可靠性的要求往往是第一位的,人們對于系統(tǒng)的可靠性方面的要求日益增加,這對電路系統(tǒng)的設計和制造都提出了嚴格的目標要求。
存儲器是電路系統(tǒng)中最常用的器件之一,采用大規(guī)模集成電路存儲芯片構成。實際統(tǒng)計表明,存儲器在太空應用中的主要錯誤是由瞬態(tài)錯誤(也叫單個事件擾動,SEU)所引起的一位錯[1]或者相關多位錯,而隨機獨立的多位錯誤極少。半導體存儲器的錯誤大體上分為硬錯誤和軟錯誤,其中主要為軟錯誤。硬錯誤所表現(xiàn)的現(xiàn)象是在某個或某些位置上,存取數(shù)據(jù)重復地出現(xiàn)錯誤。出現(xiàn)這種現(xiàn)象的原因是一個或幾個存儲單元出現(xiàn)故障。軟錯誤主要是由α粒子引起的。存儲器芯片的材料中含有微量放射性元素,他們會間斷地釋放α粒子。這些粒子以相當大的能量沖擊存儲電容,改變其電荷,從而引起存儲數(shù)據(jù)的錯誤。引起軟錯誤的另一原因是噪聲干擾。同時在太空環(huán)境下,在帶電粒子足夠能量撞擊下,存儲器的存儲單元中的位發(fā)生翻轉從而產生SEU錯誤 [2] 。本文設計實現(xiàn)了用CPLD技術和糾檢錯芯片對存儲器進行容錯,大大提高了系統(tǒng)的可靠性。下面是具體容錯存儲器和門警電路的設計。
1 檢錯與糾錯原理
常用的能檢測2位錯同時能糾正1位錯(簡稱糾一檢二,SEC-DED [3、4] )的糾錯碼有擴展?jié)h明碼(Extended Hamming Code)和最佳奇權碼(Optimal 他們的最小碼距都為4,兩者有相似之處,如冗余度一樣,對于數(shù)據(jù)位數(shù)k,校驗位數(shù)r應滿足2 r-1 ≥k+r。當k=16時,r=6,數(shù)據(jù)位長增加1倍,校驗位數(shù)只需增加1位,編碼效率較高。另外從來源上講,兩者分別是漢明碼的擴展碼和截短碼,也有資料稱最佳奇權碼為修正漢明碼(Modified Hamming Code)。文獻[4]介紹了SEC-DED和SEC-AUED)碼的編解碼理論。從性能上看最佳奇權碼比擴展?jié)h明碼更為優(yōu)越,前者在糾檢錯能力方面也優(yōu)于后者,他的3位錯誤的誤糾概率低于后者,而4位錯誤的檢測概率高于后者,最重要的是他便于硬件實現(xiàn),故應用的最多,本文采用最佳奇權碼。
首先構造最佳奇權碼的校驗矩陣即H矩陣,最佳奇權碼的H矩陣應滿足:
(1)每列含有奇數(shù)個1,且無相同列。
(2)總的1的個數(shù)少,所以校驗位、伴隨式生成表達式中的半加項數(shù)少,從而生成邏輯所需的半加器少,可以節(jié)約器材、降低成本和提高可靠性。
(3)每行中1的個數(shù)盡量相等或接近某個平均值,這種決定生成邏輯及其級數(shù)的一致性,不僅譯碼速度快,同時線路勻稱。
應用中采用(13,8,4)最佳奇權碼,數(shù)據(jù)碼為(d7 d6 d5 d4 d3 d2 d1 d0),校驗碼為(c4 c3 c2 c1 c0),P矩陣和編碼規(guī)則分別為:
(2)若S≠0,且S含有奇數(shù)個1,則認為產生了單位錯;若S≠0,且S含有偶數(shù)個1,則認為產生了2位錯。
2 存儲器容錯芯片設計實現(xiàn)
2.1 存儲器設計實現(xiàn)方案
(1)備份行(或列)方案
這種方案是在存儲芯片的設計與制造過程中增加若干備份的行(或列)。在芯片測試時,若發(fā)現(xiàn)失效的行(或列),則通過激光(或電學)的處理,用備份行(或列)去代替。此方法的優(yōu)點是設計簡單,管芯面積增加較少,電路速度沒有損失。但是,他需要增加某些測試與修正實效行(或列)的工藝環(huán)節(jié),更重要的弱點是這種方案僅適用于RAM,不能用于ROM。
(2)糾錯編碼方案
這種方案是在存儲芯片內部采用糾錯編碼,自動檢測并糾正錯誤。此方案不需要額外的測試和糾正錯誤等工藝環(huán)節(jié),除提高成品率外,還對可靠性有明顯改進。這種方案最突出的優(yōu)點是特別適合ROM;在對速度要求不高的情況下也可用于RAM。他的主要缺點在于要占用額外的芯片面積,同時因編譯碼而影響芯片整個的工作速度。將用于存儲器系統(tǒng)級的糾錯編碼等容錯技術引入存儲器芯片內部,是提高存儲芯片成品率和可靠性的有效措施。例如服務器中使用的ECC內存就采用了此技術。
本文的容錯存儲器采用糾錯碼方案,其實現(xiàn)框圖如圖1所示。
糾檢錯電路必須配合CPU的讀寫時序進行工作,可以將CPU的時序分為讀周期和寫周期。在寫周期時,總線通過糾錯電路直接將數(shù)據(jù)寫入到存儲器,同時數(shù)據(jù)通過糾錯電路產生5 b校驗碼寫入到冗余存儲器。讀周期時分成2步,第1步從存儲器和冗余存儲器分別讀取數(shù)據(jù)和校驗位數(shù)據(jù)送入糾錯電路鎖存;第2步進行檢錯,如果沒有錯誤直接將數(shù)據(jù)送出到數(shù)據(jù)總線,有2位錯產生中斷進行處理,有1位錯對數(shù)據(jù)進行糾錯并送入數(shù)據(jù)總線。因需要的是正確數(shù)據(jù),如果是校驗位出錯則不進行任何處理,直接輸出正確數(shù)據(jù)。
2.3 電路輸入輸出設計
RD,WR,CLK為CPU輸入到糾檢錯信號,通過控制電路產生芯片內控制信號。在寫信號時,DB[7..0]從數(shù)據(jù)總線輸入,通過鎖存以后經過三態(tài)控制(Santai模塊)寫入到存儲器,同時數(shù)據(jù)通過校驗碼產生模塊(Paritygen)產生5 b校驗碼,通過三態(tài)控制寫入冗余存儲器。讀信號時,存儲器數(shù)據(jù)讀入糾檢錯電路經過鎖存后產生5 b校驗碼,同時與從冗余存儲器讀入的5 b檢驗碼一起通過錯誤圖樣模塊(Errorsample),產生錯誤圖樣。通過錯誤圖樣檢測錯誤,當數(shù)據(jù)產生錯誤時通過糾錯模塊(Errorcorrect)糾錯后將正確數(shù)據(jù)輸出到數(shù)據(jù)總線。Errordetec為錯誤狀態(tài)模塊,SEF,DEF為錯誤狀態(tài)信號。0,0時無錯,1,0時1位錯,1,1時2位錯。電路實現(xiàn)的各部分功能模塊如圖2所示?!?
本文采用Altera公司的CPLD器件EPM7128作為設計環(huán)境 [5] ,圖3是糾檢錯電路仿真圖形,用CPLD實現(xiàn)糾檢錯電路仿真,圖中118~205 ns時從數(shù)據(jù)線上寫入數(shù)據(jù)AA,359~443 ns時仿真了讀數(shù)據(jù)時產生1位錯情況,601~692 ns時仿真了產生2位錯情況,此時檢測到了2位錯,但是不能糾正。781~863 ns時仿真了校驗位產生1位錯時的情況。
本文利用最佳奇權碼的基本原理設計的糾錯碼電路可以校正單位錯,檢出2位錯,存儲器不因單位錯而中斷工作,故其平均無故障時間MTBF增大,提高了可靠性。但是糾一檢二碼的新增器材又使MTBF有所下降。
在效率上,設在時間T內,發(fā)生1位錯的次數(shù)為n 1 ,發(fā)生2位及多位錯的次數(shù)為n 2 ,采用糾錯碼時,平均無故障時間為T 1 =T/(n 1 +n 2 ),采用最佳奇權碼后,1位錯是可糾的,僅2位及多位錯是不可糾的,作為出錯處理。設由于采用糾錯碼而增加器材δ%,因而采用最佳奇權碼后的平均無故障時間為: