沈 凡,王 東,蒲恩強,方 倪,徐德利,王 輝,龔 祺
(華中師范大學物理科學與技術學院,湖北武漢 430079)
由于FPGA 具有強大的并行計算能力、靈活性、開發周期短等優點被廣泛應用于各種電子設備中[1]。現代FPGA 廣泛應用的可編程技術主要有SRAM、FLASH/E2PROM、反熔絲等。基于SRAM 的可編程技術因為具有可重復編程、可應用于標準的CMOS 工藝等優點在市場上占有主導地位[2-5]。
近些年,FPGA 的研究者提出一種新型的可綜合FPGA 架構,即采用硬件描述語言基于數字標準單元庫對FPGA 進行建模,并采用EDA 工具進行自動綜合和版圖生成,最后完成FPGA 芯片的設計。基于標準單元庫工藝的FPGA 與傳統FPGA 一樣,也是由邏輯塊、輸入輸出單元、布線資源等組成,這些組成部分都可以由數字單元庫中的多路選擇器、D 觸發器等進行建模,其中編程工藝也可以由觸發器進行建模,建模方式一般采用Verilog、Chisel 等高級硬件描述語言。這種FPGA 主要用于SOC 中的可編程嵌入式核,芯片在制造和封裝后對該可編程核進行現場編程,以實現一定的數字邏輯,從而具有可變的特性[6-8]。
在空間和高能物理實驗等輻射環境中,高能粒子引起等離子體,當等離子體附近存在電勢差時,會引起電荷的轉移,當電荷轉移足夠大時,將引起單元邏輯狀態的改變,即單粒子翻轉(SEU)。基于CMOS工藝的SRAM、觸發器、鎖存器、等時序邏輯器件也都會發生這種SEU 故障[9]。
FPGA 內部的配置單元SRAM 或者觸發器發生單粒子翻轉后可能會導致邏輯電路的功能結構發生變化,從而嚴重影響了FPGA 在輻射環境下的可靠性[10]。因此,在輻射環境下工作的FPGA 必須采取一定的防護措施,以降低SEU 對電路的影響,提高系統的可靠性。目前,電路級別SEU 加固技術主要有三模冗余技術[11]、糾錯編碼技術[12]、配置刷新技術等[13]。但是目前還沒有專門針對可綜合FPGA 架構進行的SEU 加固設計。目前,已有的三模冗余技術一般都是晶體管級別的電路級建模,而沒有寄存器傳輸級建模,無法做到可綜合。糾錯編碼技術主要針對總線接口中的數據流進行糾錯,不適用于對FPGA 器件本身加固。配置刷新技術需要對FPGA 中的配置信息進行不斷更新,電路的實現復雜,而且刷新時FPGA功能暫時中斷。為了對可綜合FPGA 進行SEU 容錯設計,該設計采用寄存器傳輸級電路的設計方法對可綜合FPGA 中的配置單元觸發器進行了三模冗余加固,同時加入了糾錯和檢錯的功能,最后對所設計的電路進行了功能仿真驗證和單粒子效應仿真。
在標準單元庫工藝的FPGA 中,可編程技術主要是通過例化觸發器來實現的,因此文中主要針對觸發器進行容錯設計。用于配置存儲電路中的觸發器可以采用級聯的方式構成移位寄存器,這種結構可以減少配置電路的復雜度,進而獲得面積和性能上的優勢。
如圖1 所示是移位寄存器中容錯電路的結構。移位寄存器中每個觸發器都進行了容錯設計,容錯電路包括三模冗余電路、多數表決器電路、檢錯電路、糾錯電路等,這些電路模塊均可以通過數字標準單元庫中的門電路進行搭建。三模冗余結構由同樣的三份觸發器構成,作為多數表決器的輸入,多數表決器根據3 個觸發器的輸出進行判決,得到最終輸出的觸發器的值。檢錯電路可以判斷3 個觸發器中是否有翻轉,糾錯電路可以根據錯誤信息對觸發器進行立即糾正和更新。

圖1 容錯電路總體框圖
三模冗余(TMR)是抗單粒子翻轉常用的電路加固技術。TMR 對硬件進行冗余設計時,把關鍵電路復制成3 份,通過對三路輸出結果進行表決來屏蔽任何一路的SEU 錯誤。圖2 是三模冗余電路的結構框圖,主要由復制的三份電路和一個多數表決器組成[14]。

圖2 三模冗余電路結構框圖
在基于標準單元庫工藝的FPGA 中,配置存儲器是由硬件描述語言對觸發器進行例化而得來的。FPGA 中的邏輯塊、布線資源、輸入輸出塊等都是通過配置存儲器來改變功能的,因此配置存儲器的數量非常大。
如圖3 所示,觸發器內部有兩個和SRAM 結構相似的互鎖結構,當粒子轟擊觸發器主從級互鎖結構中的敏感節點時,可能會使存儲邏輯值發生翻轉,從而使觸發器的輸出結果產生錯誤導致電路功能失效[15]。

圖3 觸發器電路結構
為了增強基于標準單元庫工藝的FPGA 的SEU容錯能力,文中對配置存儲單元所使用的觸發器進行三模冗余設計,其電路圖如圖4 所示。

圖4 三模冗余電路圖
在該電路中,原來的寄存器被復制成了3 份,并且三路寄存器的輸出連接在一個多數表決器的輸入上。多數表決器是一個三輸入一輸出的表決器,由3個并聯的二輸入與門和一個三輸入或門級聯而成。一旦有一路寄存器受到SEU 的影響發生了邏輯翻轉,其后面的多數表決器就會根據另外兩路正確的輸出結果最終輸出正確的結果。
三模冗余是把電路復制3 份,然后通過一個多數表決器來屏蔽錯誤,因此只能屏蔽一路發生錯誤而另外兩路正常的情況。如果SEU 積累到一定的程度導致三路邏輯電路中有兩個及以上的電路發生錯誤,三模冗余電路的錯誤屏蔽功能將會失效[16]。
為了解決這個問題,文中結合標準單元庫工藝FPGA 配置寄存器的特點,設計了一個SEU 錯誤的檢錯和糾錯電路。
圖5 是檢錯電路,當三路寄存器的輸出結果一樣時,檢錯結果輸出“1”,表示三模冗余電路中三路寄存器沒有發生SEU 錯誤;當三路寄存器中有一路輸出結果與另外兩路不一樣,檢錯電路輸出“0”,表示三模冗余電路中有一路發生了SEU 錯誤。

圖5 檢錯電路
基于標準庫單元庫工藝的FPGA 有一個特點,它的配置存儲器是由觸發器例化而得來的,因此,每一個存儲數據都有一個復位端和一個置位端,通過這兩個端口可以在必要時對寄存器的值進行復位/置位操作,以恢復‘0’和‘1’的存儲值。如圖6 所示,檢錯電路輸出的結果errorn 作為觸發器的復位/置位使能信號,當檢測到SEU 錯誤時,errorn 信號拉低,如果三模冗余電路輸出結果Q_o 為‘0’,則對觸發器進行復位操作,把觸發器的值由錯誤的‘1’恢復到‘0’;如果Q_o 為‘1’,則對觸發器進行置位操作,把觸發器的值由錯誤的‘0’恢復到‘1’。

圖6 糾錯電路
經過糾錯電路對觸發器進行置位后,由SEU 導致翻轉錯誤的觸發器就能夠恢復到正確的值,進而避免因SEU 的累積使三模冗余電路失效。而且,當SEU 檢測電路檢測到故障后會立即對寄存器進行置位操作,這個響應時間取決于檢測電路和糾錯電路的門延遲,一般不超過1 ns,因此糾錯速度非常快。
FPGA 抗SEU 設計的有效性主要有輻射實驗和故障注入兩種驗證措施。其中輻射實驗成本高、實驗周期長,同時目前國內能夠做單粒子翻轉實驗的實驗室不多,而且輻射實驗對發現的問題難以定位故障點。另一種驗證措施是故障注入方式,該方式通過在電路中注入SEU 來模擬或者仿真實際應用中電路發生SEU 的情況,具有成本低、速度快、定位精確等優點,是評估SEU 加固措施有效性的重要手段[9]。
用Verilog HDL 對電路進行建模,并對電路產生激勵,利用VCS 軟件進行仿真,得到電路的輸入輸出波形圖,如圖7 所示。電路對寄存器進行配置后,使寄存器存儲的值為‘0’,可以看到,三路寄存器輸出值和多數表決器的輸出全部為‘0’;在7 200 ps 時刻對三路寄存器中的一路Q_t_1 注入SEU 使這個寄存器的輸出值為‘1’,而另外兩路寄存器Q_t_2、Q_t_3保持原始值‘0’,可以看到,多數表決器的輸出值仍然保持正確的‘0’,而故障檢測電路的輸出errorn 出現了一個短暫的‘0’,使寄存器產生復位操作,復位后的值恢復到了正確的狀態‘0’。在13 400 ps 時刻作類似的操作,也得到了正確的結果。從以上功能仿真結果來看,電路實現了三模冗余的SEU 容錯設計,并且具有SEU 檢測和糾錯的能力。

圖7 單比特錯誤功能仿真
當同時對兩路寄存器注入SEU 錯誤時,電路的檢錯和糾錯功能就失效了,如圖8 所示。在7 200 ps時刻對Q_t_2、Q_t_3 注入SEU 使寄存器輸出為‘0’,之后故障檢測器輸出為‘0’,但是此時多數表決器的值也變成了‘0’,電路發生了錯誤,直到下一個時鐘上升沿時寄存器被重新寫入正確的值。這個驗證結果與理論相符合。

圖8 多比特錯誤功能仿真
單粒子效應的電路級仿真可以采用雙指數電流源對單粒子入射造成的瞬態響應進行模擬[17-18]。
該模型的經驗公式如下:

式中,α為電荷收集的時間常數,β為建立例子軌跡的時間常數,I0為峰值電流。改變電流脈沖的峰值可得到不同LET 的單粒子脈沖,圖9 為該模型的脈沖波形。

圖9 雙指數電流源脈沖波形
在電路仿真過程中,把雙指數電流源注入到電路敏感節點即可模擬單粒子入射造成的瞬態響應。文中在三模冗余電路的第一個觸發器的第二個鎖存器環中接入雙指數電流源,得到如圖10 所示的響應。可以看到,敏感節點受到單粒子轟擊后發生了翻轉,導致第一個觸發器的輸出端Q 發生了翻轉,但是同時,檢錯電路檢測出錯誤,并經過糾錯電路把setn 置低,使觸發器產生置位操作,最終使觸發器的錯誤翻轉被糾正。整個過程電路的輸出結果Q_o 沒有受到影響。由以上可以表明,該電路具有抗SEU 的能力。

圖10 電路敏感節點受到單粒子轟擊后的響應
文中介紹了一種可綜合FPGA 的SEU 容錯方法,采用三模冗余和檢錯、糾錯電路相結合的方法對配置單元觸發器進行了容錯設計。糾錯電路充分利用數字標準單元庫中觸發器已有的置位、復位端,只增加少量的邏輯電路就可實現糾錯的功能。該電路結構不僅有傳統三模冗余電路抗SEU 的優點,還具有自動檢錯、糾錯電路,該電路采用寄存器傳輸級硬件,是可綜合的,因此可以用于可綜合FPGA 的SEU加固。仿真結果表明,該電路設計合理,達到了預期的容錯目的,在可綜合FPGA 的SEU 容錯設計中具有重要的參考意義。