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