專(zhuān)利名稱(chēng):實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一糾錯(cuò)編碼芯片,尤其涉及一種應(yīng)用于單粒子翻轉(zhuǎn)的環(huán)境下的電子計(jì)算機(jī)中的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片。
背景技術(shù):
在一些電磁環(huán)境比較惡劣的情況下,一些大規(guī)模集成電路常常會(huì)受到干擾,導(dǎo)致不能正常工作。特別是像RAM這種利用雙穩(wěn)態(tài)進(jìn)行存儲(chǔ)的器件,往往會(huì)在強(qiáng)干擾下發(fā)生翻轉(zhuǎn),使原來(lái)存儲(chǔ)的″0″變?yōu)椤?″,或者″1″變?yōu)椤?″,造成的后果往往是很?chē)?yán)重的,導(dǎo)致一些控制程序跑飛,存儲(chǔ)的關(guān)鍵數(shù)據(jù)出錯(cuò)等等。特別是空間高能粒子輻射導(dǎo)致的單粒子翻轉(zhuǎn)效應(yīng)SEU(Single EventUpset),使得航天計(jì)算機(jī)上的靜態(tài)存儲(chǔ)器SRAM中的數(shù)據(jù)會(huì)出現(xiàn)小概率錯(cuò)誤,這種錯(cuò)誤若不及時(shí)進(jìn)行糾正將會(huì)影響計(jì)算機(jī)系統(tǒng)的正常運(yùn)行和關(guān)鍵數(shù)據(jù)錯(cuò)誤,而星載計(jì)算機(jī)要求高可靠性,一旦發(fā)生故障后果將不堪設(shè)想。單粒子事件可發(fā)生在各種軌道高度的空間飛行器上,而且發(fā)生率較高。
國(guó)內(nèi)外解決單粒子翻轉(zhuǎn)效應(yīng)造成存儲(chǔ)器中的數(shù)據(jù)錯(cuò)誤的方法主要分為軟件和硬件加固技術(shù)。采用軟件解決單粒子翻轉(zhuǎn)而造成的存儲(chǔ)器數(shù)據(jù)錯(cuò)誤所需要的硬件簡(jiǎn)單,易于實(shí)現(xiàn),缺點(diǎn)是實(shí)時(shí)性差,實(shí)現(xiàn)速度慢;目前星載計(jì)算機(jī)采取的抗輻射加固技術(shù)主要采用專(zhuān)用糾錯(cuò)檢錯(cuò)芯片和時(shí)序控制電路聯(lián)和完成檢錯(cuò)糾錯(cuò)功能,以Harris公司生產(chǎn)的檢錯(cuò)糾錯(cuò)54HC630芯片為例,它采用漢明糾錯(cuò)編碼原理從16位數(shù)據(jù)中產(chǎn)生6位的校驗(yàn)位,16位數(shù)據(jù)及6位校驗(yàn)位中的一位錯(cuò)誤將被標(biāo)志并校正,二位錯(cuò)誤將標(biāo)志但不校正,檢錯(cuò)糾錯(cuò)控制功能由二個(gè)控制信號(hào)S0和S1控制;而且該芯片的操作為字操作,要保證CPU對(duì)SRAM既可進(jìn)行字操作,又可進(jìn)行字節(jié)操作,必須增加額外的控制、鎖存電路。在滿(mǎn)足檢錯(cuò)糾錯(cuò)的同時(shí)又要保證CPU對(duì)SRAM的操作功能,這使得時(shí)序控制電路變得相當(dāng)復(fù)雜。
目前的星載計(jì)算機(jī)采用通用的中小規(guī)模集成電路加上54HC630芯片來(lái)完成檢錯(cuò)糾錯(cuò)功能。主要由54HC630芯片、產(chǎn)生S1、S0的時(shí)序控制電路、字節(jié)操作及字操作控制電路和數(shù)據(jù)鎖存電路四部分組成。整個(gè)電路由54HC630、54HC244、54HC373、54HC74、54HC112等近20個(gè)芯片組成,在板上占用了很大的空間。
在現(xiàn)有硬件加固技術(shù)中,實(shí)現(xiàn)檢錯(cuò)糾錯(cuò)功能的電路復(fù)雜、元器件數(shù)量多,體積大,集成度低,不能充分滿(mǎn)足未來(lái)空間計(jì)算機(jī)小型化的要求,同時(shí)成本較高。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,提高檢錯(cuò)與糾錯(cuò)電路的集成度,縮小電路體積,從而簡(jiǎn)化電路設(shè)計(jì),降低成本,提高可靠性。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供一種實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,包括一檢錯(cuò)與糾錯(cuò)單元,其特征在于還包括一編碼單元、二選一數(shù)據(jù)選擇單元、第一控制單元、第二控制單元及時(shí)序控制單元,片選信號(hào)有效時(shí),數(shù)據(jù)由中央處理單元讀入,通過(guò)數(shù)據(jù)總線(xiàn)經(jīng)過(guò)第一控制單元、編碼單元、二選一數(shù)據(jù)選擇單元和第二控制單元,輸出給靜態(tài)隨機(jī)存儲(chǔ)器;數(shù)據(jù)由靜態(tài)隨機(jī)存儲(chǔ)器讀入時(shí),經(jīng)過(guò)第二控制單元,輸入檢錯(cuò)與糾錯(cuò)單元中,進(jìn)行數(shù)據(jù)檢錯(cuò),如果數(shù)據(jù)正確,則通過(guò)第一控制單元輸出給中央處理單元,如果數(shù)據(jù)一位錯(cuò)誤,則在所述的檢錯(cuò)與糾錯(cuò)單元中糾正后將正確數(shù)據(jù)分兩路傳輸,一路通過(guò)第一控制單元輸出給中央處理單元,一路通過(guò)二選一數(shù)據(jù)選擇單元和第二控制單元輸出給靜態(tài)隨機(jī)存儲(chǔ)器,覆蓋原來(lái)的錯(cuò)誤數(shù)據(jù),其中所述編碼單元在接收從中央處理單元輸入的數(shù)據(jù)后,生成校驗(yàn)位;所述二選一數(shù)據(jù)選擇單元由中央處理單元的讀寫(xiě)控制信號(hào)w_r的高低控制選擇數(shù)據(jù)的傳輸流向;所述第一控制單元由中央處理單元的讀寫(xiě)控制信號(hào)w_r的高低控制數(shù)據(jù)輸入和輸出通路的開(kāi)關(guān);所述第二控制單元由中央處理單元的讀寫(xiě)控制信號(hào)w_r的高低和所述檢錯(cuò)與糾錯(cuò)單元發(fā)出的錯(cuò)誤標(biāo)志信號(hào)fault的高低來(lái)控制數(shù)據(jù)輸入和輸出通路的開(kāi)關(guān);
所述檢錯(cuò)與糾錯(cuò)單元由所述時(shí)序控制單元發(fā)出的控制脈沖信號(hào)flagoe的高低來(lái)控制開(kāi)關(guān),所述檢錯(cuò)與糾錯(cuò)單元打開(kāi)時(shí),檢測(cè)輸入數(shù)據(jù)是否發(fā)生錯(cuò)誤,發(fā)生錯(cuò)誤的數(shù)據(jù)被糾正后輸出,同時(shí)產(chǎn)生錯(cuò)誤標(biāo)志信號(hào)fault;所述時(shí)序控制單元在每次中央處理單元讀取靜態(tài)隨機(jī)存儲(chǔ)器中的數(shù)據(jù)時(shí),開(kāi)始計(jì)數(shù),配合時(shí)鐘脈沖信號(hào)clk2和clk2的二分頻時(shí)鐘脈沖信號(hào)clkout來(lái)完成提取脈沖的功能,提供所述檢錯(cuò)與糾錯(cuò)單元開(kāi)關(guān)的控制脈沖信號(hào)flagoe。
在上述方案中,所述編碼單元在接收中央處理單元輸入的8位數(shù)據(jù)后,生成4位校驗(yàn)位,輸出12位數(shù)據(jù)。
在上述方案中,所述二選一數(shù)據(jù)選擇單元在所述讀寫(xiě)控制信號(hào)w_r為高時(shí),中央處理單元向靜態(tài)隨機(jī)存儲(chǔ)器中寫(xiě)數(shù)據(jù),所述二選一數(shù)據(jù)選擇單元選擇經(jīng)由所述編碼單元輸出的數(shù)據(jù);所述讀寫(xiě)控制信號(hào)w_r為低時(shí),中央處理單元讀取靜態(tài)隨機(jī)存儲(chǔ)器中的數(shù)據(jù),所述二選一數(shù)據(jù)選擇單元選擇經(jīng)由檢錯(cuò)與糾錯(cuò)單元輸出的數(shù)據(jù)。
在上述方案中,所述第一控制單元在所述讀寫(xiě)控制信號(hào)w_r為高時(shí),打開(kāi)數(shù)據(jù)輸入通路,w_r為低時(shí),打開(kāi)數(shù)據(jù)輸出通路。
在上述方案中,所述第二控制單元在所述讀寫(xiě)控制信號(hào)w_r為高時(shí),打開(kāi)數(shù)據(jù)輸出通路,w_r為低時(shí),打開(kāi)數(shù)據(jù)輸入通路,此時(shí),所述錯(cuò)誤標(biāo)志信號(hào)fault為高,打開(kāi)數(shù)據(jù)輸出通路,所述錯(cuò)誤標(biāo)志信號(hào)為低,數(shù)據(jù)輸出通路關(guān)閉。
在上述方案中,所述檢錯(cuò)與糾錯(cuò)單元根據(jù)漢明碼糾錯(cuò)原理,從靜態(tài)隨機(jī)存儲(chǔ)器中讀入8位數(shù)據(jù)位和4位校驗(yàn)位,在所述檢錯(cuò)與糾錯(cuò)單元中根據(jù)讀入12位數(shù)據(jù)中的8位數(shù)據(jù)位再產(chǎn)生4位校驗(yàn)位,與讀入的4位校驗(yàn)位異或運(yùn)算產(chǎn)生4位校驗(yàn)子,所述校驗(yàn)子4位均為0,則讀入數(shù)據(jù)未發(fā)生錯(cuò)誤,否則,哪位出錯(cuò)就相應(yīng)取反糾正,同時(shí)發(fā)出錯(cuò)誤標(biāo)志信號(hào)fault。
在上述方案中,所述錯(cuò)誤標(biāo)志信號(hào)fault為高時(shí),將糾正后的正確數(shù)據(jù)輸出,一路輸出給所述第一控制單元,另一路輸出給所述二選一數(shù)據(jù)選擇單元,如果數(shù)據(jù)未發(fā)生錯(cuò)誤,則數(shù)據(jù)輸出給所述第一控制單元。
在上述方案中,所述時(shí)序控制單元輸出的所述控制脈沖信號(hào)flagoe為高的時(shí)間內(nèi)檢錯(cuò)與糾錯(cuò)功能打開(kāi),否則,檢錯(cuò)與糾錯(cuò)單元輸出的所述錯(cuò)誤標(biāo)志信號(hào)fault為低。
在上述方案中,所述第二控制單元與所述檢錯(cuò)與糾錯(cuò)單元之間有一鎖存單元,將從靜態(tài)隨機(jī)存儲(chǔ)器中讀取的數(shù)據(jù)鎖存起來(lái),在整個(gè)數(shù)據(jù)讀取過(guò)程中鎖存單元中的數(shù)據(jù)不抖動(dòng)。
在上述方案中,所述時(shí)序控制單元產(chǎn)生鎖存脈沖信號(hào)flaglat,在所述鎖存脈沖信號(hào)flaglat輸出為高的時(shí)間內(nèi),所述鎖存單元鎖存數(shù)據(jù)。
在上述方案中,所述片選信號(hào)無(wú)效時(shí),所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片未被選中,所述第一控制單元和所述第二控制單元均輸出高阻,不影響所述數(shù)據(jù)總線(xiàn)工作。
在上述方案中,所述數(shù)據(jù)總線(xiàn)分為高8位數(shù)據(jù)總線(xiàn)和低8位數(shù)據(jù)總線(xiàn),在所述中央處理單元發(fā)出的高字節(jié)使能信號(hào)有效時(shí),高8位數(shù)據(jù)總線(xiàn)有效,所述中央處理單元發(fā)出的低字節(jié)使能信號(hào)有效時(shí),低8位數(shù)據(jù)總線(xiàn)有效,在進(jìn)行字操作時(shí),所述高字節(jié)使能信號(hào)和所述低字節(jié)使能信號(hào)均有效。
在上述方案中,在中央處理單元時(shí)鐘信號(hào)clk2的不同時(shí)鐘頻率下,所述時(shí)序控制單元均有效。
在上述方案中,所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片采用VHDL語(yǔ)言,通過(guò)現(xiàn)場(chǎng)可編程門(mén)陣列一次下載形成。
由上可知,本發(fā)明所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片采用[12,8]漢明糾錯(cuò)編碼,利用VHDL語(yǔ)言編程,通過(guò)現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)將檢錯(cuò)糾錯(cuò)電路和時(shí)序邏輯控制電路兩部分集成為一整體,在解決存儲(chǔ)器中的數(shù)據(jù)檢錯(cuò)糾錯(cuò)的同時(shí),芯片集成度提高,體積和重量減小,成本降低,檢錯(cuò)糾錯(cuò)的可靠性提高。
此外,本發(fā)明所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,可適應(yīng)中央處理單元中的不同時(shí)鐘頻率。
圖1為本發(fā)明實(shí)施例中實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片的功能原理圖;圖2為本發(fā)明實(shí)施例中實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片的時(shí)序控制單元生成信號(hào)波形圖。
具體實(shí)施例方式
實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路采用“數(shù)據(jù)流直通”的方式,也就是說(shuō)實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路處于CPU和SRAM之間,對(duì)于CPU來(lái)說(shuō),SRAM是透明的,實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路將CPU和SRAM隔離起來(lái)。
當(dāng)中央處理單元(CPU)向靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)寫(xiě)入數(shù)據(jù)時(shí),數(shù)據(jù)位DB7~DB0生成校驗(yàn)位CB3~CB0,數(shù)據(jù)位與校驗(yàn)位同時(shí)寫(xiě)入靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)中;當(dāng)CPU從SRAM中讀取數(shù)據(jù)時(shí),數(shù)據(jù)位和校驗(yàn)位均讀到實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片中,使用剛剛讀入的數(shù)據(jù)位重新生成校驗(yàn)位,新生成的校驗(yàn)位與原來(lái)寫(xiě)入時(shí)的校驗(yàn)位做異或運(yùn)算,其結(jié)果就是校驗(yàn)子。由生成的校驗(yàn)子控制糾錯(cuò)單元,哪一位出錯(cuò)就將相應(yīng)位的數(shù)據(jù)取反,實(shí)現(xiàn)糾錯(cuò)。
下面結(jié)合附圖詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。
圖1中示出了實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路中的輸入和輸出信號(hào),現(xiàn)詳細(xì)說(shuō)明如下輸入信號(hào)ccs0為CPU片選信號(hào);ads為CPU的地址選通信號(hào);clk2為CPU的時(shí)鐘脈沖;clkout是clk2的二分頻時(shí)鐘脈沖信號(hào);cdbh是CPU的高八位數(shù)據(jù)總線(xiàn)信號(hào);cbhe是CPU高字節(jié)使能信號(hào);wr是CPU寫(xiě)信號(hào);w_r是CPU讀寫(xiě)控制信號(hào)。
輸出信號(hào)實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片向SRAM輸出數(shù)據(jù)信號(hào)srmdb,以及向SRAM輸出控制信號(hào),如SRAM片選信號(hào)srmcsh、使能信號(hào)srmoe、寫(xiě)信號(hào)srmwe。
如圖1所示,實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片由以下功能單元組成編碼單元11、二選一數(shù)據(jù)選擇單元12、第一控制單元13、第二控制單元14、鎖存單元15、檢錯(cuò)與糾錯(cuò)單元16及時(shí)序控制單元17,其中編碼單元11在中央處理單元(CPU)向靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)中寫(xiě)入數(shù)據(jù)時(shí),CPU發(fā)出的8位數(shù)據(jù)經(jīng)過(guò)編碼單元11生成4位校驗(yàn)位,并且連同8位數(shù)據(jù)(共12位)一起存入SRAM中;二選一數(shù)據(jù)選擇單元12由CPU的讀寫(xiě)控制信號(hào)w_r控制選擇哪一路數(shù)據(jù)。當(dāng)w_r為1時(shí)說(shuō)明CPU向SRAM中寫(xiě)數(shù)據(jù),選擇經(jīng)由編碼單元11輸出的數(shù)據(jù);當(dāng)w_r為0時(shí)說(shuō)明CPU讀取SRAM中數(shù)據(jù),選擇經(jīng)由檢錯(cuò)與糾錯(cuò)單元16輸出的數(shù)據(jù)。
控制單元在實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片中,包含兩個(gè)控制單元,連接CPU端的第一控制單元13和連接SRAM端的第二控制單元14。當(dāng)片選信號(hào)ccs0為1,即片選信號(hào)ccs0無(wú)效時(shí),兩個(gè)控制單元均輸出高阻,此時(shí)在整個(gè)386EXCPU系統(tǒng)中,實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片未被選中,但不影響數(shù)據(jù)總線(xiàn)的工作,換句話(huà)說(shuō),當(dāng)CPU不對(duì)SRAM進(jìn)行讀寫(xiě)操作時(shí),實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路端片選信號(hào)無(wú)效,實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路的數(shù)據(jù)總線(xiàn)被驅(qū)動(dòng)為高阻。
第一控制單元13的工作過(guò)程是,當(dāng)讀寫(xiě)控制信號(hào)w_r為1時(shí),CPU向SRAM中寫(xiě)入數(shù)據(jù),第一控制單元13輸入通路打開(kāi),從CPU中輸入數(shù)據(jù);當(dāng)w_r為0時(shí),CPU從SRAM中讀入數(shù)據(jù),第一控制單元13的輸出通路打開(kāi)輸出數(shù)據(jù)給CPU。
第二控制單元14的工作過(guò)程是,在w_r為1時(shí),CPU向SRAM中寫(xiě)入數(shù)據(jù),此時(shí)第二控制單元輸出通路打開(kāi)輸出數(shù)據(jù)(8位數(shù)據(jù)位和4位校驗(yàn)位)給SRAM;當(dāng)w_r為0時(shí),CPU從SRAM中讀入數(shù)據(jù),但是此時(shí)還需要根據(jù)SRAM中的數(shù)據(jù)是否發(fā)生錯(cuò)誤來(lái)處理,當(dāng)SRAM中的數(shù)據(jù)無(wú)錯(cuò)時(shí),第二控制單元14保持輸入狀態(tài),當(dāng)SRAM中的數(shù)據(jù)發(fā)生錯(cuò)誤時(shí),錯(cuò)誤標(biāo)志fault輸出高脈沖,第二控制單元14的輸出通路打開(kāi)輸出糾正后的數(shù)據(jù)給SRAM。
檢錯(cuò)與糾錯(cuò)單元16在CPU從SRAM中讀入數(shù)據(jù)時(shí),檢查SRAM中的數(shù)據(jù)是否發(fā)生錯(cuò)誤,若發(fā)生錯(cuò)誤則糾正。時(shí)序控制單元17輸出的脈沖信號(hào)flagoe來(lái)控制檢錯(cuò)與糾錯(cuò)單元的開(kāi)關(guān),當(dāng)flagoe輸出為1,即時(shí)序控制單元輸出為高脈沖時(shí),檢錯(cuò)與糾錯(cuò)單元開(kāi),若讀取SRAM中的數(shù)據(jù)發(fā)生了錯(cuò)誤,則fault輸出為1,反之輸出為0;當(dāng)flagoe輸出為0時(shí),檢錯(cuò)與糾錯(cuò)單元關(guān),fault輸出亦為0。
鎖存單元15保證在CPU讀取SRAM中數(shù)據(jù)的整個(gè)過(guò)程中,鎖存單元中的數(shù)據(jù)穩(wěn)定不發(fā)生抖動(dòng)。這就需要在特定時(shí)刻將數(shù)據(jù)鎖存起來(lái),這一時(shí)刻由時(shí)序控制單元17生成的鎖存脈沖信號(hào)flaglat來(lái)控制,flaglat信號(hào)輸出為1,則數(shù)據(jù)鎖存,flaglat信號(hào)輸出為0,則數(shù)據(jù)不鎖存。
時(shí)序控制單元17每次CPU讀取SRAM中的數(shù)據(jù)時(shí),時(shí)鐘開(kāi)始計(jì)數(shù),時(shí)鐘的清零端由CPU的ads信號(hào)控制,配合clk2信號(hào)和clkout信號(hào)來(lái)完成提取特定脈沖的功能,提供給鎖存單元鎖存脈沖flaglat信號(hào),以及提供給檢錯(cuò)與糾錯(cuò)單元16輸出錯(cuò)誤標(biāo)志信號(hào)fault的脈沖控制信號(hào)flagoe。
實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片適應(yīng)CPU的不同時(shí)鐘頻率與上電復(fù)位時(shí)向?qū)崟r(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片內(nèi)寫(xiě)入選擇時(shí)鐘頻率的數(shù)據(jù)有關(guān)。本發(fā)明實(shí)施例能夠適應(yīng)CPU時(shí)鐘信號(hào)clk2的不同時(shí)鐘頻率,如66MHz、50MHz、40MHz、33MHz,因此時(shí)序控制單元內(nèi)部生成四組計(jì)數(shù)信號(hào)(flagoe、flaglat、flagwe),根據(jù)不同的時(shí)鐘頻率來(lái)選擇相應(yīng)的一組輸出信號(hào)。具體實(shí)現(xiàn)方法是使用CPU的地址線(xiàn)在實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片內(nèi)部生成地址譯碼器,選擇CPU某個(gè)片選信號(hào)作為地址譯碼器的選通信號(hào),通過(guò)CPU地址線(xiàn)和片選信號(hào)配合使其中的特定寄存器有效,由cdbh的第一位和第零位寫(xiě)入實(shí)時(shí)檢錯(cuò)與糾錯(cuò)芯片中的相應(yīng)寄存器的數(shù)值來(lái)確定時(shí)鐘頻率。具體說(shuō)當(dāng)cdbh寫(xiě)入11時(shí)表明CPU時(shí)鐘信號(hào)clk2頻率為66MHz,寫(xiě)入10表明時(shí)鐘頻率是50MHz,寫(xiě)入01時(shí)表明鐘頻率為40MHz,寫(xiě)入00時(shí)表明時(shí)鐘頻率為33MHz(默認(rèn)值)。
clk2為66MHz、50MHz和33MHz的情況下CPU完成讀SRAM中數(shù)據(jù)所需時(shí)間為120ns,在40MHz的情況下完成這一過(guò)程需要的時(shí)間為150ns。當(dāng)clk2頻率為66MHz時(shí),時(shí)序控制單元輸出波形圖如圖2所示。
具體的說(shuō),實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路的工作過(guò)程是(片選信號(hào)有效前提下)1)CPU向SRAM中寫(xiě)入數(shù)據(jù)CPU向SRAM中寫(xiě)數(shù)據(jù)時(shí),CPU讀寫(xiě)控制信號(hào)w_r為1,第一控制單元13輸入通路打開(kāi),CPU發(fā)出的數(shù)據(jù)通過(guò)第一控制單元13經(jīng)由編碼單元11生成校驗(yàn)位(8位數(shù)據(jù)位生成4位校驗(yàn)位),此時(shí)二選一數(shù)據(jù)選擇單元12選擇編碼單元11通路,同時(shí)w_r控制的第二控制單元14輸出通路打開(kāi),數(shù)據(jù)位連同校驗(yàn)位(12位)一起寫(xiě)入SRAM中。
2)CPU從SRAM中讀取數(shù)據(jù)CPU從SRAM中讀取數(shù)據(jù)時(shí),CPU讀寫(xiě)控制信號(hào)w_r為0,第二控制單元14輸入通路打開(kāi),SRAM中的數(shù)據(jù)(8位數(shù)據(jù)位+4位校驗(yàn)位共12位)通過(guò)第二控制單元14傳向鎖存單元15(時(shí)序控制單元發(fā)出的鎖存脈沖信號(hào)flaglat在給定時(shí)刻將鎖存單元中的數(shù)據(jù)鎖存),之后數(shù)據(jù)在檢錯(cuò)與糾錯(cuò)單元16中開(kāi)始進(jìn)行檢錯(cuò)與糾錯(cuò)。
在檢錯(cuò)與糾錯(cuò)單元16中,使用剛剛讀入的12位數(shù)據(jù)中的8位數(shù)據(jù)位重新生成校驗(yàn)位,新生成的校驗(yàn)位與原來(lái)寫(xiě)入的校驗(yàn)位做異或運(yùn)算,其結(jié)果為校驗(yàn)子;由生成的校驗(yàn)子控制數(shù)據(jù)位糾錯(cuò),根據(jù)漢明碼糾錯(cuò)原理,如果校驗(yàn)子四位均為0,則從SRAM中讀入的數(shù)據(jù)正確,否則說(shuō)明數(shù)據(jù)位發(fā)生錯(cuò)誤,哪一位數(shù)據(jù)出錯(cuò),就將其取反。
如果從SRAM中讀取的數(shù)據(jù)一位發(fā)生錯(cuò)誤,那么經(jīng)檢錯(cuò)與糾錯(cuò)單元16糾錯(cuò)后的正確數(shù)據(jù)分為兩路傳輸,一路正確數(shù)據(jù)傳給第一控制單元13,經(jīng)由第一控制單元13傳給CPU,完成讀取數(shù)據(jù)過(guò)程。一路數(shù)據(jù)傳給二選一數(shù)據(jù)選擇單元12,到達(dá)第二控制單元14,檢錯(cuò)與糾錯(cuò)單元16在發(fā)現(xiàn)數(shù)據(jù)位出錯(cuò)后,發(fā)出信號(hào)fault給第二控制單元14,fault信號(hào)在時(shí)序控制單元17發(fā)出的脈沖flagoe為高時(shí)刻內(nèi)置為1,那么第二控制單元14的輸出通路打開(kāi),從檢錯(cuò)與糾錯(cuò)單元16傳出的糾正后的正確數(shù)據(jù)傳回SRAM,將其中的錯(cuò)誤數(shù)據(jù)覆蓋后糾正過(guò)來(lái);如果從SRAM中讀取的數(shù)據(jù)沒(méi)有發(fā)生錯(cuò)誤,那么在檢錯(cuò)與糾錯(cuò)單元16中發(fā)出的fault信號(hào)置為0,第二控制單元14的輸出通路關(guān)閉,從檢錯(cuò)與檢錯(cuò)單元16中輸出的數(shù)據(jù)不會(huì)傳給SRAM,只會(huì)通過(guò)第一控制單元13向CPU輸出數(shù)據(jù),完成CPU對(duì)SRAM中數(shù)據(jù)的讀取,從而也就降低了器件的功耗。
實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片采用[12,8]漢明糾錯(cuò)編碼原理,采用VHDL語(yǔ)言實(shí)現(xiàn)實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路,使用現(xiàn)場(chǎng)可編程門(mén)陣列芯片實(shí)現(xiàn)。其能夠適應(yīng)CPU時(shí)鐘信號(hào)clk2的不同頻率,如66MHz、50MHz、40MHz、33MHz。實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片使用的現(xiàn)場(chǎng)可編程門(mén)陣列芯片選用ACTEL公司的A54SX32芯片,其封裝為PQFP208。其基于反熔絲技術(shù),只允許對(duì)器件編程一次,編程后不能修改。采用此芯片的優(yōu)點(diǎn)是集成度高,工作頻率和可靠性都很高,適用于電磁輻射干擾較強(qiáng)的惡劣環(huán)境。且把現(xiàn)有技術(shù)中的邏輯電路和檢錯(cuò)糾錯(cuò)芯片集成在一塊芯片中,提高了整個(gè)芯片的集成度和可靠性,并可以減輕整個(gè)星載計(jì)算機(jī)系統(tǒng)的重量,縮小其體積并提高整個(gè)系統(tǒng)的可靠性。
實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片是基于386EX CPU系統(tǒng)設(shè)計(jì)的,解決了由于單粒子翻轉(zhuǎn)而造成的SRAM中存儲(chǔ)的數(shù)據(jù)發(fā)生小概率錯(cuò)誤的問(wèn)題,實(shí)現(xiàn)了實(shí)時(shí)糾正SRAM中數(shù)據(jù)錯(cuò)誤的目的??梢詰?yīng)用于我國(guó)載人航天、空間探測(cè)、衛(wèi)星組網(wǎng)等任務(wù)中去,提高了我國(guó)航天計(jì)算機(jī)的抗輻射、可靠性的能力,對(duì)推動(dòng)我國(guó)空間科學(xué)技術(shù)的發(fā)展有很大的意義。
此外,本發(fā)明實(shí)施例中以CPU讀寫(xiě)SRAM的高字節(jié)為例來(lái)說(shuō)明實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路。如果處理低八位數(shù)據(jù),實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片電路只需把cbhe換成cble(圖中未示出),把cdbh換成cdbl(圖中未示出)即可,其中,cble為CPU低字節(jié)使能信號(hào),cdbl為CPU低八位數(shù)據(jù)總線(xiàn)信號(hào)。
此外,本發(fā)明能夠糾正一個(gè)字節(jié)內(nèi)的單個(gè)錯(cuò)誤,同時(shí)也適用于字的讀寫(xiě)操作中。當(dāng)進(jìn)行字節(jié)的讀寫(xiě)操作時(shí),根據(jù)cbhe(CPU高字節(jié)使能信號(hào))或cble(CPU低字節(jié)使能信號(hào))哪一個(gè)有效來(lái)控制是高字節(jié)讀寫(xiě)還是低字節(jié)讀寫(xiě)。當(dāng)進(jìn)行字的讀寫(xiě)操作時(shí),cbhe和cble均有效。在16位字的讀寫(xiě)操作中,實(shí)時(shí)檢錯(cuò)與糾錯(cuò)芯片要實(shí)現(xiàn)字的讀寫(xiě)檢錯(cuò)與糾錯(cuò),需將兩個(gè)本發(fā)明實(shí)施例中描述的實(shí)時(shí)檢錯(cuò)與糾錯(cuò)芯片集成在一片現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)芯片中,再由片選信號(hào)選擇是高、低字節(jié)讀寫(xiě)操作還是字的讀、寫(xiě)操作。字的讀寫(xiě)過(guò)程與上述高8位數(shù)據(jù)的讀寫(xiě)操作過(guò)程相同。
此外,本發(fā)明可以通過(guò)軟件控制使實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片中的檢錯(cuò)與糾錯(cuò)功能關(guān)閉和開(kāi)啟。當(dāng)實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片關(guān)閉時(shí),實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片不再具有檢錯(cuò)與糾錯(cuò)功能,此時(shí)CPU可以正常的向SRAM中寫(xiě)入數(shù)據(jù),但是當(dāng)CPU從SRAM中讀取數(shù)據(jù)時(shí),讀出的數(shù)據(jù)將不再進(jìn)行檢錯(cuò)和糾錯(cuò),直接讀入CPU中,當(dāng)然也不存在糾正SRAM中錯(cuò)誤數(shù)據(jù)的功能。具體實(shí)現(xiàn)方法如前所述還是使用由CPU的地址線(xiàn)在實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片內(nèi)部生成地址譯碼器,通過(guò)CPU地址線(xiàn)和片選信號(hào)配合使其中的另一個(gè)特定寄存器有效,由cdbh的第零位寫(xiě)入實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片中相應(yīng)寄存器的數(shù)值來(lái)確定實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片功能的關(guān)閉和開(kāi)啟,當(dāng)寫(xiě)入值為1時(shí)檢錯(cuò)與糾錯(cuò)功能開(kāi)啟(默認(rèn)值),反之檢錯(cuò)與糾錯(cuò)功能關(guān)閉。
此外,本發(fā)明雖然是基于386EX CPU系統(tǒng),利用VHDL語(yǔ)言編程,采用FPGA實(shí)現(xiàn),但是對(duì)于其它時(shí)序和速度滿(mǎn)足要求的系統(tǒng)同樣適用,只需對(duì)實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片中的時(shí)序控制單元模塊進(jìn)行修改。
權(quán)利要求
1.一種實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,包括一檢錯(cuò)與糾錯(cuò)單元,其特征在于還包括一編碼單元、二選一數(shù)據(jù)選擇單元、第一控制單元、第二控制單元及時(shí)序控制單元,片選信號(hào)有效時(shí),數(shù)據(jù)由中央處理單元讀入,通過(guò)數(shù)據(jù)總線(xiàn)經(jīng)過(guò)第一控制單元、編碼單元、二選一數(shù)據(jù)選擇單元和第二控制單元,輸出給靜態(tài)隨機(jī)存儲(chǔ)器;數(shù)據(jù)由靜態(tài)隨機(jī)存儲(chǔ)器讀入時(shí),經(jīng)過(guò)第二控制單元,輸入檢錯(cuò)與糾錯(cuò)單元中,進(jìn)行數(shù)據(jù)檢錯(cuò),如果數(shù)據(jù)正確,則通過(guò)第一控制單元輸出給中央處理單元,如果數(shù)據(jù)一位錯(cuò)誤,則在所述的檢錯(cuò)與糾錯(cuò)單元中糾正后將正確數(shù)據(jù)分兩路傳輸,一路通過(guò)第一控制單元輸出給中央處理單元,一路通過(guò)二選一數(shù)據(jù)選擇單元和第二控制單元輸出給靜態(tài)隨機(jī)存儲(chǔ)器,覆蓋原來(lái)的錯(cuò)誤數(shù)據(jù),其中所述編碼單元在接收從中央處理單元輸入的數(shù)據(jù)后,生成校驗(yàn)位;所述二選一數(shù)據(jù)選擇單元由中央處理單元的讀寫(xiě)控制信號(hào)w_r的高低控制選擇數(shù)據(jù)的傳輸流向;所述第一控制單元由中央處理單元的讀寫(xiě)控制信號(hào)w_r的高低控制數(shù)據(jù)輸入和輸出通路的開(kāi)關(guān);所述第二控制單元由中央處理單元的讀寫(xiě)控制信號(hào)w_r的高低和所述檢錯(cuò)與糾錯(cuò)單元發(fā)出的錯(cuò)誤標(biāo)志信號(hào)fault的高低來(lái)控制數(shù)據(jù)輸入和輸出通路的開(kāi)關(guān);所述檢錯(cuò)與糾錯(cuò)單元由所述時(shí)序控制單元發(fā)出的控制脈沖信號(hào)flagoe的高低來(lái)控制開(kāi)關(guān),所述檢錯(cuò)與糾錯(cuò)單元打開(kāi)時(shí),檢測(cè)輸入數(shù)據(jù)是否發(fā)生錯(cuò)誤,發(fā)生錯(cuò)誤的數(shù)據(jù)被糾正后輸出,同時(shí)產(chǎn)生錯(cuò)誤標(biāo)志信號(hào)fault;所述時(shí)序控制單元在每次中央處理單元讀取靜態(tài)隨機(jī)存儲(chǔ)器中的數(shù)據(jù)時(shí),開(kāi)始計(jì)數(shù),配合時(shí)鐘脈沖信號(hào)clk2和clk2的二分頻時(shí)鐘脈沖信號(hào)clkout來(lái)完成提取脈沖的功能,提供所述檢錯(cuò)與糾錯(cuò)單元開(kāi)關(guān)的控制脈沖信號(hào)flagoe。
2.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述編碼單元在接收中央處理單元輸入的8位數(shù)據(jù)后,生成4位校驗(yàn)位,輸出12位數(shù)據(jù)。
3.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述二選一數(shù)據(jù)選擇單元在所述讀寫(xiě)控制信號(hào)w_r為高時(shí),中央處理單元向靜態(tài)隨機(jī)存儲(chǔ)器中寫(xiě)數(shù)據(jù),所述二選一數(shù)據(jù)選擇單元選擇經(jīng)由所述編碼單元輸出的數(shù)據(jù);所述讀寫(xiě)控制信號(hào)w_r為低時(shí),中央處理單元讀取靜態(tài)隨機(jī)存儲(chǔ)器中的數(shù)據(jù),所述二選一數(shù)據(jù)選擇單元選擇經(jīng)由檢錯(cuò)與糾錯(cuò)單元輸出的數(shù)據(jù)。
4.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述第一控制單元在所述讀寫(xiě)控制信號(hào)w_r為高時(shí),打開(kāi)數(shù)據(jù)輸入通路,w_r為低時(shí),打開(kāi)數(shù)據(jù)輸出通路。
5.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述第二控制單元在所述讀寫(xiě)控制信號(hào)w_r為高時(shí),打開(kāi)數(shù)據(jù)輸出通路,w_r為低時(shí),打開(kāi)數(shù)據(jù)輸入通路,此時(shí),所述錯(cuò)誤標(biāo)志信號(hào)fault為高,打開(kāi)數(shù)據(jù)輸出通路,所述錯(cuò)誤標(biāo)志信號(hào)為低,數(shù)據(jù)輸出通路關(guān)閉。
6.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述檢錯(cuò)與糾錯(cuò)單元根據(jù)漢明碼糾錯(cuò)原理,從靜態(tài)隨機(jī)存儲(chǔ)器中讀入8位數(shù)據(jù)位和4位校驗(yàn)位,在所述檢錯(cuò)與糾錯(cuò)單元中根據(jù)讀入12位數(shù)據(jù)中的8位數(shù)據(jù)位再產(chǎn)生4位校驗(yàn)位,與讀入的4位校驗(yàn)位異或運(yùn)算產(chǎn)生4位校驗(yàn)子,所述校驗(yàn)子4位均為0,則讀入數(shù)據(jù)未發(fā)生錯(cuò)誤,否則,哪位出錯(cuò)就相應(yīng)取反糾正,同時(shí)發(fā)出錯(cuò)誤標(biāo)志信號(hào)fault。
7.如權(quán)利要求6所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述錯(cuò)誤標(biāo)志信號(hào)fault為高時(shí),將糾正后的正確數(shù)據(jù)輸出,一路輸出給所述第一控制單元,另一路輸出給所述二選一數(shù)據(jù)選擇單元,如果數(shù)據(jù)未發(fā)生錯(cuò)誤,則數(shù)據(jù)輸出給所述第一控制單元。
8.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述時(shí)序控制單元輸出的所述控制脈沖信號(hào)flagoe為高的時(shí)間內(nèi)檢錯(cuò)與糾錯(cuò)功能打開(kāi),否則,檢錯(cuò)與糾錯(cuò)單元輸出的所述錯(cuò)誤標(biāo)志信號(hào)fault為低。
9.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述第二控制單元與所述檢錯(cuò)與糾錯(cuò)單元之間有一鎖存單元,將從靜態(tài)隨機(jī)存儲(chǔ)器中讀取的數(shù)據(jù)鎖存起來(lái),在整個(gè)數(shù)據(jù)讀取過(guò)程中鎖存單元中的數(shù)據(jù)不抖動(dòng)。
10.如權(quán)利要求1和9所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述時(shí)序控制單元產(chǎn)生鎖存脈沖信號(hào)flaglat,在所述鎖存脈沖信號(hào)flaglat輸出為高的時(shí)間內(nèi),所述鎖存單元鎖存數(shù)據(jù)。
11.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述片選信號(hào)無(wú)效時(shí),所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片未被選中,所述第一控制單元和所述第二控制單元均輸出高阻,不影響所述數(shù)據(jù)總線(xiàn)工作。
12.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述數(shù)據(jù)總線(xiàn)分為高8位數(shù)據(jù)總線(xiàn)和低8位數(shù)據(jù)總線(xiàn),在所述中央處理單元發(fā)出的高字節(jié)使能信號(hào)有效時(shí),高8位數(shù)據(jù)總線(xiàn)有效,所述中央處理單元發(fā)出的低字節(jié)使能信號(hào)有效時(shí),低8位數(shù)據(jù)總線(xiàn)有效,在進(jìn)行字操作時(shí),所述高字節(jié)使能信號(hào)和所述低字節(jié)使能信號(hào)均有效。
13.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,在中央處理單元時(shí)鐘信號(hào)clk2的不同時(shí)鐘頻率下,所述時(shí)序控制單元均有效。
14.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片采用VHDL語(yǔ)言,通過(guò)現(xiàn)場(chǎng)可編程門(mén)陣列一次下載形成。
15.如權(quán)利要求1所述的實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其特征在于,使用由中央處理單元的地址線(xiàn)在所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片內(nèi)部生成地址譯碼器,通過(guò)中央處理單元地址線(xiàn)和所述片選信號(hào)配合使其中的另一個(gè)特定寄存器有效,由所述數(shù)據(jù)總線(xiàn)第零位寫(xiě)入所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片中相應(yīng)寄存器的數(shù)值來(lái)確定所述實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片功能的關(guān)閉和開(kāi)啟。
全文摘要
本發(fā)明涉及一種實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片,其包括一編碼單元、二選一數(shù)據(jù)選擇單元、第一控制單元、第二控制單元、鎖存單元、檢錯(cuò)與糾錯(cuò)單元及時(shí)序控制單元,數(shù)據(jù)由CPU讀入,經(jīng)過(guò)第一控制單元、編碼單元、二選一數(shù)據(jù)選擇單元和第二控制單元,輸出給SRAM;數(shù)據(jù)由SRAM讀入,經(jīng)過(guò)第二控制單元、鎖存單元,輸入檢錯(cuò)與糾錯(cuò)單元中,如數(shù)據(jù)正確,則通過(guò)第一控制單元輸出給CPU;如果數(shù)據(jù)一位錯(cuò)誤,則在檢錯(cuò)與糾錯(cuò)單元中糾正后將正確數(shù)據(jù)分兩路傳輸,一路通過(guò)第一控制單元輸出給CPU,一路通過(guò)二選一數(shù)據(jù)選擇單元和第二控制單元輸出給SRAM,覆蓋原錯(cuò)誤數(shù)據(jù)。該實(shí)時(shí)差錯(cuò)檢測(cè)與糾錯(cuò)芯片將邏輯電路與糾錯(cuò)芯片集成在一塊芯片,提高芯片集成度和可靠性,節(jié)省成本,減小芯片體積和重量。
文檔編號(hào)G06F11/07GK1635477SQ20031011606
公開(kāi)日2005年7月6日 申請(qǐng)日期2003年12月30日 優(yōu)先權(quán)日2003年12月30日
發(fā)明者周盛雨, 陳小敏, 安軍社, 孫輝先 申請(qǐng)人:中國(guó)科學(xué)院空間科學(xué)與應(yīng)用研究中心