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