一種改進(jìn)的對抗軟錯誤電路結構設計
摘要:給出了一種改進(jìn)的基于時(shí)鐘沿的自我檢測和糾正的電路結構,以糾正由單粒子翻轉(SEU)引起的數據錯誤。簡(jiǎn)單概述了已有的檢測和糾正SEU的電路結構,并在該電路的基礎上提出了改進(jìn)的電路結構.以實(shí)現對觸發(fā)器以及SRAM等存儲器的實(shí)時(shí)監控,并可以及時(shí)糾正其由于SEU引起的數據錯誤。采用內建命令進(jìn)行錯誤注入模擬單粒子翻轉對電路的影響。改進(jìn)的電路與原來(lái)的電路相比,以微小的面積和較少的資源換取更高的糾錯率。
關(guān)鍵詞:SEU;檢測和糾正;時(shí)鐘沿;FPGA;觸發(fā)器
0 引言
在一些電磁環(huán)境比較惡劣的情況下,一些大規模集成電路常常會(huì )受到干擾,導致不能正常工作,特別是儲存單元,使原來(lái)存儲的“0”變?yōu)?ldquo;1”,或者“1”變?yōu)?ldquo;0”,即單粒子翻轉效應(SEU)。隨著(zhù)集成電路的發(fā)展,超大規模集成電路(VLSI)是必然的發(fā)展趨勢。但是,單粒子翻轉效應已經(jīng)嚴重影響了VLSI的發(fā)展。
由于單粒子翻轉對電路穩定性的影響,新的電路設計結構必須減少其對電路穩定性的影響。在這些新提出的電路結構中,比較常用的檢查和糾正單粒子翻轉的方法是三模冗余(TMR)和軟件錯誤檢測和糾正電路。三模冗余是解決SEU影響的最有效方式,其設計原理是將要保護的電路復制成完全相同的三份,同時(shí)運行這三部分電路,并且對該三部分電路的運行結果進(jìn)行大數表決,表決出一個(gè)置信度高的結果輸出,同時(shí)檢測出那個(gè)冗余邏輯塊翻轉并進(jìn)行修復。但它的最大缺點(diǎn)是需要消耗大量的資源,才能實(shí)現該電路結構。軟件錯誤檢測和糾正電路的原理是根據不同的編解碼方式,實(shí)現對所存儲數據進(jìn)行檢測和糾正。最常用的海明碼方式,其設計原理是在存儲的數據源碼中加入一些冗余碼,使這些數據源碼和數據源碼之間建立一定的關(guān)系,一旦數據源碼或是冗余碼出現某種錯誤時(shí),數據碼和冗余碼之間的關(guān)系被破壞,就形成非法編碼。接收端可以通過(guò)檢測數據碼和冗余碼來(lái)檢測數據碼的正確性,并對檢測出來(lái)的錯誤數據源碼進(jìn)行修改。
近來(lái),一種基于時(shí)鐘沿來(lái)檢測和糾正單粒子翻轉的電路結構,實(shí)現了檢測單元占用更小的面積,使用更少的邏輯單元,實(shí)現相近的檢測和糾正率。本文在基于該文提出的檢測和糾錯原理的基礎上,提出了一種新的可以多次檢測和糾正單粒子翻轉的電路結構。
1 時(shí)鐘沿檢測和糾錯電路原理
1.1 時(shí)鐘沿產(chǎn)生原理
基于時(shí)鐘沿的檢測和糾正電路原理可知,對于觸發(fā)器來(lái)說(shuō),只有在時(shí)鐘上升沿的時(shí)候,輸出數據發(fā)生轉變才是有效的正確數據,而其他任何時(shí)刻的變化都是由于外界原因引起的信號錯誤(本文主要是針對SEU引起的錯誤)。該電路結構就是基于上述原理,通過(guò)對比數據與時(shí)鐘的轉變沿來(lái)對數據進(jìn)行檢測和糾正的,其過(guò)程可描述為時(shí)鐘沿經(jīng)過(guò)3個(gè)非門(mén)的延時(shí),產(chǎn)生信號not_clk,該信號和時(shí)鐘信號相與產(chǎn)生1個(gè)上升沿脈沖。
1.2 錯誤檢測和糾正電路
另外一個(gè)需要解決的重要問(wèn)題就是錯誤的檢測和糾正。首先,該文信號的錯誤檢測原理圖如圖1所示。時(shí)鐘產(chǎn)生的脈沖與數據翻轉產(chǎn)生的脈沖進(jìn)行比較。比較單元的核心部分可由如下表達式表述:
SEU_O=Data_pulse×Clk_pulse’ (1)
式中:Data_pulse是數據信號經(jīng)過(guò)沿檢測電路后的信號;Clk_pulse是時(shí)鐘信號經(jīng)過(guò)沿檢測電路后的信號。在時(shí)鐘上升沿時(shí),Clk_pulse會(huì )產(chǎn)生一個(gè)正向脈沖,如果此時(shí)數據發(fā)生翻轉,Data_pulse也會(huì )產(chǎn)生一個(gè)正相脈沖,SEU_O將保持0不變,當SEU影響,使數據發(fā)生翻轉時(shí),Data_pulse會(huì )產(chǎn)生一個(gè)脈沖,而此時(shí)由于不是在時(shí)鐘上升沿,信號Clk_pulse將保持為1,此時(shí)的輸出信號SEU_O就被置為1。由上述分析可知,當沒(méi)有SEU錯誤發(fā)生時(shí)SEU_O為0;當發(fā)生SEU錯誤時(shí)SEU_O為1;
該文的錯誤糾正電路原理如圖1所示,該部分電路的核心是運用一個(gè)多路輸出選擇器來(lái)糾正觸發(fā)器的錯誤輸出信號。多路輸出選擇器的輸入信號為SEU_O,輸出選擇信號為觸發(fā)器的輸出信號,兩個(gè)輸出信號分別連接到觸發(fā)器的復位端和清零端。
由上面的分析可知,檢測到有錯誤發(fā)生時(shí),SEU_O的值為1。此時(shí),如果Q值為1(正確值應該為0),那么就把SEU_O的值1賦給S1,觸發(fā)器被清零,Q被置為0;如果Q值為0(正確值應該為1),那么把SEU_O的值1賦給S0,觸發(fā)器被置1,Q被置為1,從而實(shí)現對Q值的糾正;如果沒(méi)有錯誤發(fā)生時(shí),SEU_O的值為0,此時(shí)不論觸發(fā)器的輸出信號Q為1或0,都不會(huì )對Q值產(chǎn)生影響。
為了避免檢測電路把糾正之后的Q值作為SEU引起的錯誤值來(lái)進(jìn)行處理和糾正,該電路添加了一個(gè)觸發(fā)器,用以鎖存以前的電路狀態(tài),如圖1所示。信號SEU_O與信號S3,S4,S5有關(guān),可以由下述表達式表示:
SEU_O=S4×S3’×S5’ (2)
由原理圖可知,每一個(gè)時(shí)鐘上升沿到來(lái)時(shí)就會(huì )對觸發(fā)器清零,電路可以對數據進(jìn)行檢測和糾正。若在一個(gè)時(shí)鐘周期內,第1次發(fā)生單粒子翻轉并被檢測到SEU_O由0變?yōu)?,同時(shí)觸發(fā)器被置1,進(jìn)而SEU_O的值又變?yōu)?,糾正后的數據產(chǎn)生數據沿脈沖不會(huì )對SEU_O的值產(chǎn)生影響,從而完成這一次的數據檢測和糾正。
DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY
評論