本發(fā)明涉及一種應(yīng)用于FPGA數(shù)字電路的冗余容錯(cuò)技術(shù),能有效減弱短溝道效應(yīng)的影響,特別適用于FPGA數(shù)字電路的邏輯電路部分動(dòng)態(tài)可重構(gòu)技術(shù)。
背景技術(shù):
由于太空環(huán)境中存在大量復(fù)雜的高能粒子,它們做無規(guī)則的隨機(jī)運(yùn)行,難免會(huì)與宇航設(shè)備中的半導(dǎo)體器件發(fā)生碰撞。當(dāng)這些高能粒子撞擊到器件中的敏感區(qū)域時(shí),容易引起短溝道效應(yīng),從而改變器件的功能。SRAM型FPGA中的邏輯資源配置存儲(chǔ)單元對(duì)短溝道效應(yīng)十分敏感,極易發(fā)生配置位流信息的變化,而FPGA的配置存儲(chǔ)器中的內(nèi)容決定了FPGA的頂層電路結(jié)構(gòu),與FPGA的功能息息相關(guān)。當(dāng)這些配置位發(fā)生改變時(shí),重則使FPGA功能紊亂,引發(fā)整個(gè)系統(tǒng)的失效。而SRAM型FPGA的這種短溝道效應(yīng)屬于軟錯(cuò)誤故障,用戶可以采取一定的措施對(duì)其進(jìn)行修復(fù)。目前,配置位流信息故障的容錯(cuò)技術(shù)是國(guó)內(nèi)外研究的熱點(diǎn)。
太空的輻射環(huán)境中存在各種各樣的高能粒子,例如,太陽活動(dòng)過程中產(chǎn)生的中子,包裝和加工材料過程中產(chǎn)生的α粒子等等。當(dāng)這些高能粒子撞擊到電子器件時(shí),這些粒子所帶的能量能夠把足夠的電荷移入或移出電路節(jié)點(diǎn),形成短溝道效應(yīng),從而改變電路節(jié)點(diǎn)的狀態(tài)。
當(dāng)一個(gè)高能粒子與微電子器件中p-n結(jié)的敏感區(qū)發(fā)生碰撞時(shí),在高能粒子運(yùn)動(dòng)軌跡的周圍會(huì)電離出足夠多的電子-空穴對(duì),這些電子-空穴對(duì)在電場(chǎng)力和濃度差的作用下,會(huì)發(fā)生定向的漂移運(yùn)動(dòng)和擴(kuò)散運(yùn)動(dòng),當(dāng)漂移運(yùn)動(dòng)大于擴(kuò)散運(yùn)動(dòng),或者當(dāng)擴(kuò)散運(yùn)動(dòng)大于漂移運(yùn)動(dòng)時(shí),瞬間會(huì)使p-n結(jié)誘發(fā)出一個(gè)納秒級(jí)的電流脈沖,瞬態(tài)電流脈沖會(huì)改變電路節(jié)點(diǎn)的電勢(shì),當(dāng)電勢(shì)達(dá)到一定程度時(shí),會(huì)使導(dǎo)通管截止或者截止管導(dǎo)通,引發(fā)電子器件邏輯狀態(tài)的翻轉(zhuǎn)。
FPGA的存儲(chǔ)單元占整個(gè)FPGA存儲(chǔ)容量的97.4%以上,而這些存儲(chǔ)單元,都是基于CMOS工藝的SRAM存儲(chǔ)單元,極易受到器件尺寸和空間輻射 的影響,發(fā)生短溝道效應(yīng)。而這些配置存儲(chǔ)器單元中,存儲(chǔ)了大量用于決定各個(gè)邏輯模塊功能和各邏輯單元之間互連線連接方式的配置信息。也就是說,F(xiàn)PGA所執(zhí)行的一系列操作,主要依據(jù)存放于配置存儲(chǔ)器中的配置數(shù)據(jù)。
如果配置數(shù)據(jù)有一位發(fā)生變化,即由“0”狀態(tài)變?yōu)椤?”狀態(tài),或者由“1”狀態(tài)變?yōu)椤?”狀態(tài),那么相應(yīng)的電路就會(huì)改變?cè)嫉男袨?,?zhí)行非用戶設(shè)定的操作,這種影響最終會(huì)傳輸?shù)皆O(shè)備的輸出端,使用戶得到非預(yù)期的結(jié)果,或者得到錯(cuò)誤的數(shù)據(jù)信息,引發(fā)系統(tǒng)的失效。只有把用戶設(shè)計(jì)綜合產(chǎn)生的配置數(shù)據(jù)重新加載到FPGA邏輯資源的配置存儲(chǔ)器中后,數(shù)字電路才能按照用戶的設(shè)計(jì)正常運(yùn)行,并獲得可靠的輸出信息。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有問題,本發(fā)明提出了一種應(yīng)用于FPGA數(shù)字電路的冗余容錯(cuò)技術(shù)。
本發(fā)明所采取的技術(shù)方案:在FPGA邏輯模塊資源中,利用未使用的數(shù)字電路模塊冗余邏輯資源進(jìn)行部分動(dòng)態(tài)可重構(gòu)。將可重構(gòu)技術(shù)的思想用在FPGA中電路故障的容錯(cuò)上,來提高系統(tǒng)運(yùn)行的可靠性。由于動(dòng)態(tài)部分重構(gòu)技術(shù)與動(dòng)態(tài)全部重構(gòu)技術(shù)相比,大大減小了重構(gòu)范圍,重構(gòu)時(shí),只對(duì)系統(tǒng)中的一部分電路進(jìn)行了修改,縮短了重配置的時(shí)間。如果采用這種思想對(duì)FPGA實(shí)現(xiàn)容錯(cuò),能夠降低系統(tǒng)的故障修復(fù)時(shí)間,提高系統(tǒng)的運(yùn)行效率。動(dòng)態(tài)部分重構(gòu)技術(shù)用在FPGA中電路故障修復(fù)問題中,降低整體硬件規(guī)模。動(dòng)態(tài)部分重構(gòu)是指對(duì)FPGA系統(tǒng)的一部分進(jìn)行重新構(gòu)造,而其余部分仍處于工作狀態(tài)??芍貥?gòu)區(qū)域A實(shí)現(xiàn)邏輯功能的切換通過動(dòng)態(tài)的加載位流數(shù)據(jù)配置文件A1.bit或者A2.bit來實(shí)現(xiàn)。
附圖說明
圖1為本發(fā)明的FPGA底層結(jié)構(gòu)圖。
圖2為本發(fā)明的微處理器的不同使用方法圖。
圖3為本發(fā)明的數(shù)字電路動(dòng)態(tài)可重構(gòu)原理圖。
圖4為本發(fā)明的數(shù)字電路動(dòng)態(tài)可重構(gòu)區(qū)域劃分圖。
圖5為本發(fā)明的冗余容錯(cuò)故障修復(fù)原理圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
圖1所示為SRAM型FPGA最底層的結(jié)構(gòu)。圖中最左側(cè)的虛線框?yàn)镃LB可編程邏輯塊,對(duì)于Virtex-5系列FPGA,每個(gè)CLB由兩個(gè)Slice組成,每個(gè)Slice中包含4個(gè)LUT和4個(gè)觸發(fā)器??筛鶕?jù)用戶的設(shè)計(jì),將CLB配置成為相應(yīng)的組合邏輯或者時(shí)序邏輯,也可以將其配置為分布式RAM或者分布式ROM來使用,其中CLB中的LUT主要用于實(shí)現(xiàn)組合邏輯,觸發(fā)器主要用于實(shí)現(xiàn)時(shí)序邏輯和存儲(chǔ)電路運(yùn)行的中間結(jié)果。BRAM為片上存儲(chǔ)資源,用于實(shí)現(xiàn)各種存儲(chǔ)功能,可提高FPGA的整體運(yùn)行效率。M為配置存儲(chǔ)器單元,用于存儲(chǔ)FPGA的配置數(shù)據(jù),這些配置數(shù)據(jù)對(duì)電路中的開關(guān)和互聯(lián)線等進(jìn)行控制,綜合實(shí)現(xiàn)FPGA的功能。
圖2所示為微處理器的不同使用方法。R1、R2、R3分別為三個(gè)D觸發(fā)器,C1、C2、C3分別為一個(gè)時(shí)鐘周期的三個(gè)不同時(shí)刻,圖2(a)所示為使用一個(gè)多數(shù)選擇器的方法,考慮到微處理器也會(huì)受到時(shí)鐘頻率的影響,有人提出了使用三個(gè)微處理器并行工作的方法,如圖2(b)所示,每個(gè)D觸發(fā)器的輸出端都輸入到三個(gè)微處理器中,這樣,當(dāng)一個(gè)微處理器發(fā)生故障時(shí),電路仍能正常運(yùn)行。
圖3所示為FPGA動(dòng)態(tài)部分重構(gòu)的原理圖。用戶可以根據(jù)需求對(duì)FPGA的內(nèi)部邏輯資源模塊進(jìn)行劃分,使每個(gè)區(qū)域成為一個(gè)可重構(gòu)區(qū)域,在每個(gè)可重構(gòu)區(qū)域中可以有多個(gè)可重構(gòu)模塊,這些可重構(gòu)模塊之間可以進(jìn)行相互轉(zhuǎn)換,但是在某一時(shí)刻,每個(gè)可重構(gòu)區(qū)域中僅有一個(gè)可重構(gòu)模塊處于運(yùn)行狀態(tài)。模塊之間的轉(zhuǎn)換可以通過調(diào)用不同的位流數(shù)據(jù)配置文件來實(shí)現(xiàn),由于配置文件中有該可重構(gòu)模塊的地址,因此動(dòng)態(tài)的加載部分配置文件,就可以改變對(duì)應(yīng)可重構(gòu)區(qū)域的邏輯功能。動(dòng)態(tài)部分重構(gòu)技術(shù)與動(dòng)態(tài)全部重構(gòu)技術(shù)相比,重構(gòu)的區(qū)域和單元數(shù)目有了大幅度的縮減,從而降低了重構(gòu)的速度,提高了系統(tǒng)的運(yùn)行效率。
圖4所示為本發(fā)明的數(shù)字電路動(dòng)態(tài)可重構(gòu)區(qū)域劃分圖。對(duì)邏輯電路進(jìn)行部分可重構(gòu),在系統(tǒng)功能設(shè)計(jì)時(shí)就要對(duì)各個(gè)模塊進(jìn)行劃分,首先設(shè)計(jì)頂層模塊,也 就是主模塊,主模塊主要是將各個(gè)靜態(tài)子模塊和動(dòng)態(tài)子模塊進(jìn)行連接,其中的子模塊以黑盒子的形式存在。靜態(tài)子模塊是系統(tǒng)中不可重構(gòu)的模塊,動(dòng)態(tài)子模塊是用于重構(gòu)的模塊,其中每個(gè)動(dòng)態(tài)可重構(gòu)區(qū)域中的動(dòng)態(tài)子模塊的模塊名要相同,這樣,在動(dòng)態(tài)部分重構(gòu)的過程中,才能保持與其他模塊之間的電氣連接關(guān)系。圖4中的可重構(gòu)模塊A1和A2是動(dòng)態(tài)可重構(gòu)區(qū)域A的兩個(gè)子模塊,可重構(gòu)模塊B1和B2是動(dòng)態(tài)可重構(gòu)區(qū)域B的兩個(gè)子模塊,在某一時(shí)刻,僅有A1模塊在運(yùn)行,而A1和A2模塊不能同時(shí)處于運(yùn)行狀態(tài)??芍貥?gòu)區(qū)域A實(shí)現(xiàn)邏輯功能的切換通過動(dòng)態(tài)的加載配置文件A1.bit或者A2.bit來實(shí)現(xiàn)。
圖5所示為本發(fā)明的數(shù)字電路冗余故障修復(fù)原理圖。首先要對(duì)系統(tǒng)進(jìn)行可重構(gòu)區(qū)域設(shè)計(jì),但是與動(dòng)態(tài)可重構(gòu)技術(shù)不同的是,每個(gè)動(dòng)態(tài)可重構(gòu)區(qū)域中僅有一個(gè)動(dòng)態(tài)可重構(gòu)模塊,當(dāng)系統(tǒng)檢測(cè)到故障時(shí),要對(duì)故障進(jìn)行定位,查找是哪個(gè)可重構(gòu)區(qū)域發(fā)生了故障,然后對(duì)故障的區(qū)域進(jìn)行配置信息的重新加載。如果故障發(fā)生在可重構(gòu)區(qū)域A中,就將A對(duì)應(yīng)的配置文件A.bit動(dòng)態(tài)的重新加載到FPGA中,如果故障發(fā)生在可重構(gòu)區(qū)域B中,就將B對(duì)應(yīng)的配置文件B.bit動(dòng)態(tài)的重新加載到FPGA中,此種方法為動(dòng)態(tài)部分重構(gòu)。但是如果故障發(fā)生在動(dòng)態(tài)可重構(gòu)區(qū)域A和B之外,那么就將整個(gè)器件的配置信息重新加載到FPGA中,即動(dòng)態(tài)全部重構(gòu)。圖5只設(shè)計(jì)了兩個(gè)動(dòng)態(tài)可重構(gòu)區(qū)域,在實(shí)際系統(tǒng)設(shè)計(jì)時(shí),可以盡可能多的設(shè)計(jì)可重構(gòu)區(qū)域的個(gè)數(shù),以縮小每個(gè)可重構(gòu)區(qū)域的面積,提高數(shù)字電路故障修復(fù)率。