吳健
【摘 要】本文討論了民用飛機機載電子硬件審查中的單粒子翻轉(zhuǎn)問題。首先介紹了單粒子翻轉(zhuǎn)現(xiàn)象及其產(chǎn)生的原因,根據(jù)可編程電子硬件的工藝類型闡述了單粒子翻轉(zhuǎn)的影響,從芯片設(shè)計和用戶系統(tǒng)設(shè)計兩方面總結(jié)了單粒子翻轉(zhuǎn)的常用減緩策略。
【關(guān)鍵詞】單粒子翻轉(zhuǎn);機載電子硬件;適航審定
0 前言
隨著半導(dǎo)體技術(shù)的快速發(fā)展,可編程邏輯電子器件在民用飛機領(lǐng)域得到了越來越廣泛的應(yīng)用。常見的可編程電子器件包括可編程邏輯器件(PLD)、復(fù)雜可編程邏輯器件(CPLD)、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)等??删幊唐黧w積小、配置靈活,能夠以較低的功耗實現(xiàn)復(fù)雜的功能。但可編程器件內(nèi)部的邏輯規(guī)模巨大,對外部不可見,要想實現(xiàn)對每個邏輯門狀態(tài)的完全驗證很難實現(xiàn)。為此,開發(fā)者通常采取嚴格的研制流程,例如DO-254[1],保證器件工作的可靠性。影響可編程器件可靠性的因素既有設(shè)計錯誤,也有外部因素,外部因素包括單粒子翻轉(zhuǎn)。適航當(dāng)局在機載電子硬件的審查過程中,對單粒子翻轉(zhuǎn)引起的失效及其減緩策略給予了特別的關(guān)注。
本文以常見的可編程邏輯器件FPGA為例,闡述可編程邏輯器件的單粒子翻轉(zhuǎn)現(xiàn)象及其減緩策略。
1 單粒子翻轉(zhuǎn)現(xiàn)象
單粒子翻轉(zhuǎn)指的是半導(dǎo)體存儲器件內(nèi)部的存儲單元的狀態(tài)變化,例如從0變到1或從1變到0。其物理原因是存儲單元的電荷由于外界影響而發(fā)生了變化。理論上來說,任何半導(dǎo)體器件都有單粒子翻轉(zhuǎn)的可能。單粒子翻轉(zhuǎn)可能影響存儲器件中的一個或多個比特位。
即使沒有系統(tǒng)設(shè)計的邏輯錯誤,如果單粒子翻轉(zhuǎn)改變了系統(tǒng)運行的關(guān)鍵狀態(tài),仍然有可能對系統(tǒng)產(chǎn)生災(zāi)難性的影響。例如,對飛機而言,如果空速和迎角發(fā)生錯誤,則可能使系統(tǒng)產(chǎn)生錯誤的響應(yīng),嚴重影響飛行安全。因此,如何通過合適的設(shè)計手段來避免單粒子翻轉(zhuǎn)的不利影響,從而提高系統(tǒng)的穩(wěn)健性成為飛機設(shè)計人員必須考慮的問題。
對于半導(dǎo)體器件而言,單粒子翻轉(zhuǎn)主要有兩個來源:中子和α粒子[2]。
中子主要由于宇宙中的高能質(zhì)子與大氣分子碰撞而產(chǎn)生。高度越大,單位時間和單位面積內(nèi)的中子數(shù)量越多。當(dāng)不帶電的中子穿過半導(dǎo)體的不同材料層時,會產(chǎn)生離子(帶電粒子),當(dāng)離子路徑穿過耗盡區(qū)或者接近P-N結(jié)時,其產(chǎn)生的電子或空穴會使存儲單元的狀態(tài)發(fā)生變化。
α粒子為低能量粒子,主要由封裝材料引起。帶電的α粒子能夠產(chǎn)生離子化路徑,從而使存儲單元的電荷狀態(tài)發(fā)生變化。由于α粒子的能量低,只有那些與硅片非常接近的封裝材料才會對其產(chǎn)生影響。在半導(dǎo)體領(lǐng)域,廠家會采用超低α粒子的封裝材料,盡量減少對半導(dǎo)體的影響。
2 單粒子翻轉(zhuǎn)對不同類型FPGA的影響
單粒子翻轉(zhuǎn)對不同工藝的可編程電子器件有著不同的影響。單粒子翻轉(zhuǎn)對FPGA的影響主要體現(xiàn)對其內(nèi)部隨機存儲單元(RAM)的影響。無論何種類型的FPGA,只要其內(nèi)部有RAM,都可能受到單粒子翻轉(zhuǎn)的影響。FPGA內(nèi)部的RAM包括用于配置的RAM和嵌入式RAM。
2.1 FPGA的工藝類型
常見的可編程器件主要有以下三種工藝:
(1)Flash:基于flash的FPGA斷電后配置邏輯不消失,上電后可立即啟動,無需從外部加載配置文件。Flash工藝 FPGA可重復(fù)編程。
(2)SRAM:基于SRAM的FPGA可重復(fù)編程,其配置單元斷電后信息丟失,每次上電時需重新加載。所以,該類型的FPGA必須在外部配置一塊存儲芯片來存儲配置文件,而且它需要上電配置的時間。
(3)反熔絲:只能一次編程,無法更改邏輯配置,無需啟動加載過程。
2.2 對器件配置單元的影響
可編程邏輯器件的的配置單元用來存儲硬件描述語言經(jīng)過綜合、布局和布線后生成的配置文件,決定了器件的邏輯功能。
基于Flash和反熔絲工藝的FPGA,其配置單元不會受到單粒子翻轉(zhuǎn)的影響。
基于SRAM的FPGA,其配置單元則可能由于單粒子翻轉(zhuǎn)的影響而發(fā)生狀態(tài)變化,必須有適當(dāng)?shù)拇胧z測單粒子翻轉(zhuǎn)引起的錯誤,并在上一層級的設(shè)計中抑制單粒子翻轉(zhuǎn)產(chǎn)生的不利影響。
2.3 對器件嵌入式RAM的影響
為了進一步擴展器件功能,芯片廠商會在FPGA中引入嵌入式RAM,用來在程序運行中臨時存儲數(shù)據(jù)。嵌入式RAM不僅存在于基于SRAM的器件中,還存在于基于Flash和反熔絲的FPGA。
這些器件的嵌入式RAM容易受到單粒子翻轉(zhuǎn)的影響,影響系統(tǒng)的正常運行,必須有措施檢測到數(shù)據(jù)的損壞。
3 單粒子翻轉(zhuǎn)減緩策略
對單粒子翻轉(zhuǎn)的減緩,可以從芯片設(shè)計和用戶設(shè)計的角度來進行。
3.1 芯片設(shè)計技術(shù)
對于芯片生產(chǎn)廠家,其可以利用低α粒子的封裝材料,還可采用特殊的交錯和布局技術(shù),減少單粒子翻轉(zhuǎn)發(fā)生的概率,或增強對單粒子翻轉(zhuǎn)引起錯誤的檢測和糾錯能力。
根據(jù)器件運行的不同階段,可分為上電時檢測和運行時檢測。
3.2 上電時檢測
在器件上電時檢測配置文件的完整性。對基于Flash和反熔絲的器件,因其對單粒子翻轉(zhuǎn)不敏感,無需進行此類檢測。對基于SRAM的器件,常用的做法是CRC校驗。很多FPGA器件提供了該功能,只需在代碼中啟用即可。例如可利用芯片的32位CRC校驗內(nèi)置特性檢測配置單元存儲中發(fā)生的錯誤。如果用戶自己實現(xiàn)檢測功能,則會占用額外的芯片資源。
3.3 運行時檢測
有的器件可以提供對內(nèi)部嵌入式RAM的錯誤檢測和糾正。例如,有的FPGA可檢測并糾正嵌入式SRAM中單個比特位的錯誤,檢測兩個比特位的錯誤但不糾正。
此外,還可以在更高層級采取措施防止單粒子翻轉(zhuǎn)的不利影響。
在設(shè)備級,可以實現(xiàn)指令-監(jiān)控架構(gòu),通過一個獨立的通道檢測另一個通道發(fā)生的錯誤。
對于計算機,除了指令監(jiān)控架構(gòu),可采用三模冗余技術(shù)[3]:給一個處理器配備三份內(nèi)存,同步運行,在比較模塊中實時比較三份內(nèi)存的差異,如果發(fā)現(xiàn)異常則對錯誤的內(nèi)容進行糾正。這種架構(gòu)可以檢測并糾正其中某個內(nèi)存發(fā)生的錯誤,大大降低了單粒子翻轉(zhuǎn)引起的故障,提高了系統(tǒng)可靠性。
系統(tǒng)層級也可以實現(xiàn)多種監(jiān)控器,根據(jù)期望的正常運行范圍對系統(tǒng)的實際運行狀態(tài)進行持續(xù)監(jiān)控,檢測被監(jiān)控對象的異常行為,包括由單粒子翻轉(zhuǎn)引起的錯誤。系統(tǒng)邏輯根據(jù)監(jiān)控器的輸出采取合適的響應(yīng),并根據(jù)需要告知用戶。
4 結(jié)論
單粒子翻轉(zhuǎn)會使半導(dǎo)體存儲單元的狀態(tài)發(fā)生變化,對飛機的安全運行產(chǎn)生重要影響。本文討論了單粒子翻轉(zhuǎn)的現(xiàn)象和產(chǎn)生的原因、對不同類型FPGA的影響,以及芯片設(shè)計和用戶邏輯設(shè)計中的減緩措施。民用飛機的高安全性要求使得單粒子翻轉(zhuǎn)得到了適航審查當(dāng)局和研制單位的日益重視。
【參考文獻】
[1]DO-254: Design Assurance Guidance for Airborne Electronic Hardware. RTCA, April 2000.
[2]White Paper: WP-01206-1.0. Introduction to Single-Event Upsets. Altera Corporation, Sep. 2013.
[3]張碩,伊小素,孫進輝,張倩.SRAM型FPGA帶刷新的新分層三模冗余技術(shù)容錯分析[J]. 實驗技術(shù)與管理, 2012(11):44-49.