基于CPLD的容錯存儲器的設計實現(xiàn)
隨著各種電路和芯片的性能(速度、集成度等)不斷提高,尤其是在軍事、航空航天等用途中對可靠性的要求往往是第一位的,人們對于系統(tǒng)的可靠性方面的要求日益增加,這對電路系統(tǒng)的設計和制造都提出了嚴格的目標要求。
本文引用地址:http://m.butianyuan.cn/article/21136.htm存儲器是電路系統(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ā)生翻轉從而產(chǎn)生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ī)則分別為:
譯碼時把數(shù)據(jù)再次編碼所得到的新校驗位與原校驗位模2加,便得到伴隨式s,由其可判別錯誤類型:1)若s=0,則認為沒有錯誤;
(2)若s≠0,且s含有奇數(shù)個1,則認為產(chǎn)生了單位錯;若s≠0,且s含有偶數(shù)個1,則認為產(chǎn)生了2位錯。
2 存儲器容錯芯片設計實現(xiàn)
2.1 存儲器設計實現(xiàn)方案
(1)備份行(或列)方案
這種方案是在存儲芯片的設計與制造過程中增加若干備份的行(或列)。在芯片測試時,若發(fā)現(xiàn)失效的行(或列),則通過激光(或電學)的處理,用備份行(或列)去代替。此方法的優(yōu)點是設計簡單,管芯面積增加較少,電路速度沒有損失。但是,他需要增加某些測試與修正實效行(或列)的工藝環(huán)節(jié),更重要的弱點是這種方案僅適用于ram,不能用于rom。
(2)糾錯編碼方案
這種方案是在存儲芯片內(nèi)部采用糾錯編碼,自動檢測并糾正錯誤。此方案不需要額外的測試和糾正錯誤等工藝環(huán)節(jié),除提高成品率外,還對可靠性有明顯改進。這種方案最突出的優(yōu)點是特別適合rom;在對速度要求不高的情況下也可用于ram。他的主要缺點在于要占用額外的芯片面積,同時因編譯碼而影響芯片整個的工作速度。將用于存儲器系統(tǒng)級的糾錯編碼等容錯技術引入存儲器芯片內(nèi)部,是提高存儲芯片成品率和可靠性的有效措施。例如服務器中使用的ecc內(nèi)存就采用了此技術。
本文的容錯存儲器采用糾錯碼方案,其實現(xiàn)框圖如圖1所示。
2.2 糾檢錯電路設計糾檢錯電路必須配合cpu的讀寫時序進行工作,可以將cpu的時序分為讀周期和寫周期。在寫周期時,總線通過糾錯電路直接將數(shù)據(jù)寫入到存儲器,同時數(shù)據(jù)通過糾錯電路產(chǎn)生5 b校驗碼寫入到冗余存儲器。讀周期時分成2步,第1步從存儲器和冗余存儲器分別讀取數(shù)據(jù)和校驗位數(shù)據(jù)送入糾錯電路鎖存;第2步進行檢錯,如果沒有錯誤直接將數(shù)據(jù)送出到數(shù)據(jù)總線,有2位錯產(chǎn)生中斷進行處理,有1位錯對數(shù)據(jù)進行糾錯并送入數(shù)據(jù)總線。因需要的是正確數(shù)據(jù),如果是校驗位出錯則不進行任何處理,直接輸出正確數(shù)據(jù)。
2.3 電路輸入輸出設計
rd,wr,clk為cpu輸入到糾檢錯信號,通過控制電路產(chǎn)生芯片內(nèi)控制信號。在寫信號時,db[7..0]從數(shù)據(jù)總線輸入,通過鎖存以后經(jīng)過三態(tài)控制(santai模塊)寫入到存儲器,同時數(shù)據(jù)通過校驗碼產(chǎn)生模塊(paritygen)產(chǎn)生5 b校驗碼,通過三態(tài)控制寫入冗余存儲器。讀信號時,存儲器數(shù)據(jù)讀入糾檢錯電路經(jīng)過鎖存后產(chǎn)生5 b校驗碼,同時與從冗余存儲器讀入的5 b檢驗碼一起通過錯誤圖樣模塊(errorsample),產(chǎn)生錯誤圖樣。通過錯誤圖樣檢測錯誤,當數(shù)據(jù)產(chǎn)生錯誤時通過糾錯模塊(errorcorrect)糾錯后將正確數(shù)據(jù)輸出到數(shù)據(jù)總線。errordetec為錯誤狀態(tài)模塊,sef,def為錯誤狀態(tài)信號。0,0時無錯,1,0時1位錯,1,1時2位錯。電路實現(xiàn)的各部分功能模塊如圖2所示。
3 仿真及其波形本文采用altera公司的cpld器件epm7128作為設計環(huán)境 [5] ,圖3是糾檢錯電路仿真圖形,用cpld實現(xiàn)糾檢錯電路仿真,圖中118~205 ns時從數(shù)據(jù)線上寫入數(shù)據(jù)aa,359~443 ns時仿真了讀數(shù)據(jù)時產(chǎn)生1位錯情況,601~692 ns時仿真了產(chǎn)生2位錯情況,此時檢測到了2位錯,但是不能糾正。781~863 ns時仿真了校驗位產(chǎn)生1位錯時的情況。
4 分析與結論本文利用最佳奇權碼的基本原理設計的糾錯碼電路可以校正單位錯,檢出2位錯,存儲器不因單位錯而中斷工作,故其平均無故障時間mtbf增大,提高了可靠性。但是糾一檢二碼的新增器材又使mtbf有所下降。
在效率上,設在時間t內(nèi),發(fā)生1位錯的次數(shù)為n 1 ,發(fā)生2位及多位錯的次數(shù)為n 2 ,采用糾錯碼時,平均無故障時間為t 1 =t/(n 1 +n 2 ),采用最佳奇權碼后,1位錯是可糾的,僅2位及多位錯是不可糾的,作為出錯處理。設由于采用糾錯碼而增加器材δ%,因而采用最佳奇權碼后的平均無故障時間為:
據(jù)資料估計,對于1位錯占整個錯誤的比例 增益g=4.6~9.3。通過cpld來實現(xiàn)存儲器的容錯,大大縮短了設計開發(fā)周期,降低了成本,同時提高了系統(tǒng)的可靠性。
評論