摘要:分析了FPGA器件發(fā)生單粒子效應的空間分布特性,設計并實現了一種面向FPGA單粒子軟錯誤的檢測電路。將該電路放置在FPCA待檢測電路的附近,利用單粒子效應的空間特性,則可以根據檢測模塊的狀態(tài)變化,獲得待檢測電路發(fā)生單粒子軟錯誤的情況。仿真實驗表明,該電路是可行、有效的檢測電路,具有很小的資源和性能損失。
航天技術大大加速了經濟建設、國防建設、科學文化和社會生活各領域的現代化進程。隨著空間技術的發(fā)展,FPGA、DSP等超大規(guī)模集成電路越來越多的被應用于星載平臺上。與之相伴的,則是宇宙空間輻照環(huán)境下,FPGA等微電子器件及其大規(guī)模集成電路無時不刻發(fā)生著對航天器通訊、測控和導航都有嚴重影響的單粒子效應,而且集成度越高,單粒子效應的影響就越顯著。各種航天器在宇宙空間運行會受到各種高能粒子和射線的輻射,可能造成星內電子系統(tǒng)的損傷,甚至使整個航天器失效。有關資料顯示,由輻射引發(fā)的衛(wèi)星等航天器微電子器件單粒子效應是航天器主要的異常和故障之一。
降低或避免輻射導致的單粒子失效故障的影響是航天工作所必須面對的問題。防錯技術和容錯技術是提高系統(tǒng)可靠性的兩種主要途徑。防錯技術注重于降低故障發(fā)生的可能
性,而容錯技術則注重于在錯誤存在的情況下仍能保持系統(tǒng)的可操作性。故障檢測/恢復技術是一種常用而有效的容錯技術,它的關鍵是選擇合理的檢測點,采用有效的檢測方法獲取信息,準確判斷發(fā)生的故障。
一般來講,FPGA的重要功能模塊影響FPGA局部功能運行,如果該模塊發(fā)生功能錯誤,將對FPGA某區(qū)域的功能造成較長時間的故障。對這類功能模塊以檢錯為主以預防錯誤的保持和積累。而對于FPGA的關鍵功能模塊,由于其對整個系統(tǒng)正常運行起決定作用,如果該模塊功能錯誤將造成整個系統(tǒng)的狀態(tài)異常甚至癱瘓。因此,這類功能系統(tǒng)往往需要共同應用防錯技術和容錯技術來保證系統(tǒng)的高可靠性。如采用局部TMR、TTMR或DMR等容錯功能冗余設計,以及故障檢測糾錯技術等,以自動糾正功能模塊的錯誤,確保功能的正確性。但是,空間儀器中FPGA的資源使用和速度是一個重要的方面,過多的資源開銷和過大的速度下降將限制儀器的功能和性能。TMR、TTMR或DMR使得目標設計的資源增加1~2倍,速度性能(即最大工作頻率)下降15%左右。
論文基于此,分析了FPGA器件發(fā)生單粒子效應的特點,設計并實現了一種基于FPGA空間分布特性的檢測電路,并仿真驗證了其有效性。
1 FPGA單粒子效應故障機理分析
FPGA的單粒子效應故障具有存儲器和處理器故障的雙重特征。SRAM型FPGA的主要組成為配置存儲器(Configurable Memory)、可編程邏輯單元(CLB)可編程輸入輸出口(Progra mmable IOB)、塊存儲器(Block RAM)、布線資源(Routing Resource)、乘法器(Multiplier)、數字時鐘管理模塊(DCM,Digital Clock Manager)、配置狀態(tài)機(Configuration state Machine)、上電復位狀態(tài)機(POR,Power—on Reset)等。
FPGA的單粒子效應故障模式可以由配置存儲器、用戶存儲器/觸發(fā)器發(fā)生單粒子翻轉引起的故障,以及由上電復位狀態(tài)機、配置狀態(tài)機、硬件乘法器等發(fā)生單粒子功能中斷和單粒子瞬態(tài)脈沖引起的故障兩大類。FPGA組成模塊的單粒子翻轉故障、單粒子功能中斷故障和單粒子瞬態(tài)脈沖故障的表現形式及可訪問性如表1所示。
2 FPGA單粒子效應的空間分布特性
邏輯功能復雜的深亞微米FPGA,依靠復雜的時序邏輯關系完成各種各樣的功能,各個基本電路單元之間除了物理上的連接關系之外,經過后期的邏輯功能設計,相互之間還產生了新的邏輯連接和時序關系。某個基本電路單元的單粒子效應故障可以通過這些新生的關系,擴大到更大的作用區(qū)域,并且持續(xù)更長的作用時間。也就是說,短暫的、小面積的單個晶體管的單粒子效應能夠通過時序電路的邏輯功能傳播到相鄰的區(qū)域,并導致該區(qū)域邏輯功能的伴隨故障,這類現象為單粒子效應的伴隨現象。伴隨現象在FPGA功能模塊中表現出的故障藕合與傳遞特性被稱為伴隨特性。
伴隨特性產生的原因是,由于單個高能粒子由于質量、能量、入射角以及所帶電荷的不同,在不同結構和材料的PN結中造成能量沉積的分布特性也不相同,形成的等離子體體積也不相同,但是一般都認為,高能粒子入射到硅材料后絕大部分能量沉積在一個以入射點為靶心圓形狀區(qū)域內。這樣的空間分布特性,在應用層次上向功能模塊層面擴充,表現出“伴隨特性”的單粒子效應故障的可測形式。
由此,根據單粒子效應的空間分布特性,單粒子效應故障的傳遞過程可描述為:電路單元的單粒子效應造成其自身所在的功能模塊的故障,以及其一定物理相鄰區(qū)域內功能電路的故障。即高能粒子的影響通過單粒子效應的空間分布特性產生了傳遞,并被記錄在其他功能模塊中。
因此,單粒子效應故障的檢測可以考慮在待檢測電路附近,合理放置狀態(tài)已知的檢測電路。通過其狀態(tài)的變化,推斷待檢測電路是否發(fā)生單粒子故障。這樣的方法,除了可以準確檢測、定位故障電路,還能以降低故障檢測帶來的資源或者性能損失。
3 FPGA單粒子軟錯誤檢測電路設計
FPGA單粒子軟錯誤的檢測和診斷的關鍵是尋找已知狀態(tài)點進行比較。因此,FPGA檢測點的選擇需篩選出本身狀態(tài)已知的點,或設計已知狀態(tài)點,以實現狀態(tài)的對比分析。即若篩選出的待檢測點狀態(tài)已知,則該點選擇為檢測點;若篩選出的待檢測點狀態(tài)未知,則選擇與該檢測點耦合關系最緊密的狀態(tài)已知點為檢測點。
由第2節(jié)的分析可知,當一束高能粒子轟擊到FPGA的某一區(qū)域時,發(fā)生單粒子軟錯誤的區(qū)域是以該被轟擊區(qū)域為中心、直徑遠大于該轟擊區(qū)域直徑的一圓形區(qū)域。因此,當某一待檢測點發(fā)生了單粒子軟錯誤,基于空間上的分布特性,其相鄰區(qū)域內的電路也將發(fā)生單粒子軟錯誤。由此,基于單粒子效應的空間分布特性,本文設計了如圖1所示的狀態(tài)已知的檢測電路,用于檢測狀態(tài)未知的功能電路的狀態(tài)。同時,該檢測電路對狀態(tài)已知功能電路同樣可用。
此時,無論待檢測點狀態(tài)是否已知,均可在其周圍放置圖1所示的原理電路,完成FPGA單粒子軟錯誤的檢測。其中,檢測電路的設計可采用觸發(fā)器沿敏感復位或采用鎖存器電平敏感復位兩種設計,分別如圖2、圖3所示。
圖2、圖3所示檢測電路中。每個檢測電路存儲一個已知的初始值(0、1均可)。初始狀態(tài)、復位之后以及當前值與初始值相同時,Q端向外輸出低電平;當檢測點的當前值與初始值不同時(即將當前值與初始值進行異或操作),認為發(fā)生了SEU翻轉,Q端向外輸出高電平并保持,直到rst信號有效,檢測點恢復到初始狀態(tài)(rst上跳沿或下跳沿復位可采用圖2所示電路;rst高電平或低電平復位可采用圖3所示電路。設計中選用一種即可)。檢測電路的真值表如表2所示。
由此,每個檢測點可以由多級、多個檢測電路組成,每級可以有多個檢測電路,如在圖1中,檢測點0由兩級檢測電路組成,第一級包含1個檢測電路,第二級包含2個檢測電路。同級之間的多個檢測電路之間、多級之間,產生的輸出信號通過或門,產生新的輸出,最終,每個檢測點輸出1跟SEU信號,送往SEU狀態(tài)寄存器。
SEU狀態(tài)寄存器的個數、每個寄存器的位數,可以根據自己的實際情況確定,只需“寄存器個數×寄存器位數=檢測點數量”即可。
狀態(tài)讀取模塊根據用戶實際情況進行設計,可使用用戶芯片中原有的數據讀取通路。圖1的示例中,使用并行接口對SEU狀態(tài)寄存器進行讀取,數據線、地址線的位數可根據實際情況進行設定。
SEU狀態(tài)讀取完畢后,通過該接口,設置復位寄存器的值,產生rst信號,對所有檢測點中的檢測電路進行復位,將其恢復到初始狀態(tài)。
當完成一次檢測后,由SEU狀態(tài)寄存器記錄當次檢測結果,該結果可以由狀態(tài)讀取模塊根據需求讀出。同時,根據檢測結果,驅動FPGA完成局部電路刷新,以恢復期正常狀態(tài)。
顯然,該檢測電路可以推廣到所有FPGA組成模塊的檢測,只需將其放置在待檢測電路的附近,利用單粒子效應的空問特性,均可根據檢測模塊的狀態(tài)變化,獲得待檢測電路發(fā)生單粒子軟錯誤的情況。
4 仿真驗證
本文利用圖1所示的檢測電路,并在Modelsim下進行了仿真測試,結果如圖4所示。
圖4中,通過tb向第31和第2個SEU檢測點,即SEU31、SEU2注入了SEU故障??梢钥吹?,SEU內部狀態(tài)寄存器的值已經改變,通過狀態(tài)讀取模塊,可以將SEU狀態(tài)讀出(讀出的結果為seu_status_readout)。仿真結果證明了本文設計的檢測電路的可用性和有效性。
5 結論
本文分析了FPGA器件發(fā)生單粒子效應的空間分布特性,設計并實現了一種檢測電路。將該電路放置在FPGA待檢測電路的附近,利用單粒子效應的空間特性,均可根據檢測模塊的狀態(tài)變化,獲得待檢測電路發(fā)生單粒子軟錯誤的情況。仿真實驗表明,該電路是可行、有效的檢測電路,具有很小的資源或者性能損失,具有很好地應用價值。