何怡剛,趙 明,周健波,張鐘韜
(合肥工業大學 電氣與自動化工程學院,合肥 230009)
隨著集成電路工藝進入深亞微米時代,特征尺寸的減少以及時鐘頻率的提高都使得空間環境器件的單粒子瞬態脈沖(SET,single event transient)效應變得越來越嚴重,甚至成為系統產生軟錯誤的主要來源[1-2]。為了評估集成電路的單粒子瞬態效應,目前主要的方法是輻射實驗測量方法、模型分析計算方法、仿真軟件模擬方法和基于硬件的模擬方法[3],輻射實驗測試方法就是在地面模擬真實的單粒子效應,但是實驗成本高,每批次的實驗數據少。模型分析計算方法和仿真軟件模擬方法不能完全模擬出單粒子效應對集成電路的影響,同時計算速度較慢,所以相比于前三種方法,基于硬件的模擬方法一般是利用FPGA進行硬件加速,在大規模電路應用中,具有速度快、成本低的優點,缺點是精度較低。文獻[3-4]使用FPGA在基于量化組合邏輯門延遲思想和掃描測試的方法,去評估數字電路軟錯誤敏感性,但是忽略了FPGA中瞬態脈沖在電路傳播過程中可能會發生脈沖壓縮效應或者脈沖展寬效應[5]。根據相關實驗數據表明單粒子瞬態效應造成器件的瞬態脈沖寬度在150 ps~2 ns之間[6]。為了提高基于硬件模擬方法的精度,可以從模擬單粒子瞬態脈沖的產生以及在FPGA中的傳輸特性方面進行研究。
在FPGA內部模擬單粒子瞬態脈沖的產生,現在普遍使用三種方法:輻射試驗、激光試驗和電注入試驗[7],前兩種方法雖然貼近單粒子瞬態效應產生瞬態脈沖的實際環境,但是其只能觀測到瞬態脈沖在電路中產生的結果,無法很精確地確定瞬態脈沖注入時間和位置,而且其有很高的成本,相反電注入試驗方法用注入的脈沖來模擬真實粒子的撞擊,其成本較低,并且對于要注入時間和地點都能實現良好的控制,能準確地確定注入時間及位置,最適合本文的模擬瞬態脈沖的產生和分析。
針對瞬態脈沖寬度在皮秒級別,本文充分利用FPGA中豐富的原語資源,提出了一種基于IDELAY2延遲元件的電脈沖注入和測量方法,在不改變系統布局布線的情況下,可以實現連續產生寬度增量為78ps的瞬態脈沖,寬度基本覆蓋深亞微米下瞬態脈沖寬度范圍,同時利用IDELAY2延遲元件在FPGA內部設計瞬態脈沖寬度測量電路,研究8種不同的門電路邏輯鏈對脈沖寬度的影響,結果顯示了門類型、輸入脈沖類型和輸入脈沖寬度對傳播脈沖寬度的影響。
瞬態脈沖的電注入方法就是在電路的指定節點注入瞬態脈沖,注入脈沖的方法分為外部電注入和內部電注入,采用外部電注入的方法就是在FPGA外部產生瞬態脈沖,通過FPGA的輸入輸出引腳(I/O Element)結構進入FPGA,但是脈沖在通過IOE結構時會有濾波的現象,所以本文采用內部電注入的方法,避免造成輸入脈沖寬度的變化。當組合邏輯電路中發生SET時,產生的瞬態脈沖有兩種類型,即正脈沖(010)和負脈沖(101),本文將分別對它們進行討論。
本文的SET脈沖產生單元是在FPGA中的IDELAY2延遲元件原語的基礎上實現的。IDELAY2延遲元件是具有抽頭分辨率的31抽頭環繞式延遲原語,可以將其應用于組合輸入路徑或者已定義的輸入路徑或者兩者都有,也可以直接從FPGA邏輯中對其進行訪問,它是Xilinx 的FPGA底層延遲單元,可以在單個輸入引腳的基礎上延遲輸入信號,抽頭延遲分辨率可以通過使用IDELAYCTRL原語作為參考時鐘連續校準,如式(1)所示:
Tapdelay=1/(32*2*Fref)
(1)
式(1)中,Fref是參考時鐘頻率,Tapdelay是抽頭延遲分辨率,抽頭值和抽頭延遲分辨率的乘積就是相對于抽頭值為0時的總延遲時間。本文中選擇的參考時鐘頻率為200 MHz,由于抽頭分辨率是通過IDELAYCTRL進行校準的,所以抽頭分辨率為78 ps,如果IDELAY2原語被實例化,則IDELAYCTRL模塊也必須被實例化,IDELAYCTRL模塊連續校準單個延遲抽頭IDELAY2區域,以減少工藝、電壓和溫度變化的影響,所以即使環境變化,抽頭延遲單元的抽頭分辨率也會非常精確和穩定。
IDELAY2延遲元件抽頭延遲線屬性包括FIXED,VARIABLE, VAR_LOAD和VAR_LOAD_PIPE四種屬性,本文選擇“VARIABLE”屬性,在此屬性下,可以在IDELAY2延遲元件的可用端口,如圖1所示,在CLK時鐘信號的上升沿,采樣CE和INC的值,動態增加或者減少IDELAY2延遲元件的延遲抽頭值。

圖1 IDELAY2延遲元件
為了評估抽頭延遲單元IDELAY2的精度和穩定性,設計了環形振蕩器和IDELAY2延遲元件組成的驗證電路,如圖2所示,整個電路由三個反相器、IDELAY2延遲元件和一個與門電路組成,在靜態下,任何一個反相器的輸入和輸出都不可能穩定在高電平或低電平,只能在高低電平之間變化。假設一個反相器的延遲時間為t1,一個門電路的延遲時間為t2,IDELAY2延遲元件的延遲時間為t3,則總的延遲時間為3*t1+t2+t3,整個延遲電路的振蕩周期為2*(3*t1+t2+t3),因為IDELAY2延遲元件的延遲時間取決于抽頭值,所以通過增加抽頭值,研究其導致的振蕩周期增加量。具體的做法就是在IDELAY2的抽頭值為0時,使能信號置位為高電平,在圖2中的測量信號點處,測量一定數量上升沿所需的時間,這個數值可以通過USB-UAR芯片傳輸到PC端的串口通信軟件上得到,進而計算出單個振蕩周期值。在抽頭值每次增加一時,IDELAY2延遲單元的延遲時間增加量為Δt3,與之前抽頭值的振蕩周期相比,將得到新的振蕩周期增加量為2*Δt3,抽頭值最大可以達到31,就可以計算31個新的振蕩周期增加量。在抽頭值每增加一時,也就是IDELAY2延遲元件的延遲時間增加78 ps,整個振蕩周期理論的增加量是156 ps,如圖3所示,得到的是IDELAY2延遲元件造成的周期增加量,結果表明了IDELAY2延遲元件的精度和可靠性。
SET脈沖產生單元電路由兩個IDELAY2延遲元件和一個門電路組成,如圖4所示。當有一個上升沿信號輸入時,信號會通過兩個IDELAY2延遲元件,通過設置兩個IDELAY2延遲元件不同的抽頭值,延遲不同的時間,延遲后的信號通過XOR異或門產生一個正脈沖(0-1-0),產生脈沖的寬度取決于兩個IDELAY2延遲元件抽頭值的差。同樣為了得到一個負脈沖(1-0-1),可以將延遲后的信號通過XNOR異或非門,產生負脈沖的寬度也取決于兩個IDELAY2延遲元件抽頭值的差。在需要改變抽頭值時,只需要改變CE和INC的值,就可以在不改變系統布局布線的情況下,通過SET脈沖產生單元電路連續調教脈沖寬度,并且脈沖寬度的單次調節步長是78 ps。瞬態脈沖產生單元電路產生的瞬態脈沖可以作為信號傳播模塊的輸入信號,也可以用瞬態脈沖測量模塊直接對瞬態脈沖進行測量,不需要進行放大或轉化為其他形式。

圖2 IDELAY2延遲驗證電路

圖3 IDELAY2延遲單元周期增加量

圖4 SET正脈沖(0-1-0)產生電路
為了表征SET脈沖傳播過程中脈沖寬度的變化,根據典型電路的情況,將and、or、xor、buf、nor、nand和inv分別單獨組成相同長度的門電路邏輯鏈,在鏈的開始處注入產生的SET脈沖,并在鏈尾得到遍歷完邏輯鏈的脈沖。為了將脈沖傳播不受邏輯屏蔽的影響,到達脈沖測量裝置前,所有邏輯門的其他輸入均設置為未屏蔽狀態,將and和nand第二個輸入設置為1,or和nor第二個輸入設置為0,對于xor,將分別考慮第二個輸入為0和1兩種情況。通過手動放置和布線,確保了信號傳播單元不同邏輯鏈有相同的布局和布線,可以得到更準確的結果,排除其他因素的影響。
對于邏輯鏈鏈尾SET脈沖寬度的測量,文獻[8]選擇使用示波器,但是由于SET脈沖經過IOE(I/O Element)輸出時,可能會發生脈沖失真,進而影響所測SET脈沖寬度的準確性,因此本文選擇在FPGA內部測量脈沖寬度,如圖5所示。

圖5 SET正脈沖(0-1-0)測量電路
SET脈沖測量電路也是在IDELAY2延遲元件原語的基礎上實現的,它包括兩個IDELAY2延遲元件和一個與門電路組成,其中IDELAY2延遲元件的抽頭延遲線屬性是“VARIABLE”,邏輯鏈鏈尾脈沖通過設置兩個抽頭值不同的IDELAY2延遲單元,在兩個抽頭值差不斷增加時,對于正脈沖(0-1-0),兩個IDELAY2延遲元件的輸出“與”門結果中剛好沒有檢測到高電平,則說明兩個脈沖的相位相差了脈沖寬度的長度。對于負脈沖(1-0-1),兩個IDELAY2延遲元件的輸出“或”門結果中剛好沒有檢測到低電平,則說明兩個脈沖的相位相差了脈沖寬度的長度。
為了驗證SET脈沖測量單元的準確性,本文使用SET脈沖測量單元去測量占空比為50%的不同周期信號的正脈沖寬度和負脈沖寬度,表1為測量結果,其中F為信號頻率,La表示正脈沖和負脈沖的實際寬度,Lc表示用SET脈沖測量單元得到的脈沖寬度,|ΔL|表示測量值與理論值的誤差率,計算公式如式(2):

ΔL= |La-Lc|/La (2)
從表1中可以看出,對于脈沖的寬度測量值和寬度實際值之間誤差ΔL均小于7%,同時在對正脈沖和負脈沖的分別測量誤差中,發現SET脈沖測量單元對正脈沖的測量誤差低于負脈沖的測量誤差。
為了研究SET瞬態脈沖在FPGA邏輯門中的傳播特性,使用Xlinx的 Vivado軟件分別實現50個and,or,xor,buf,nor,nand,inv相連的門電路邏輯鏈,考慮到FPGA中不存在門的概念,因此將查找表(LUT)配置成所需要功能的門,將SET脈沖進入不同門電路邏輯鏈中。為了研究SET瞬態脈沖通過門電路邏輯鏈傳播時的脈沖變化,在邏輯鏈的輸入處注入不同寬度的正脈沖(0-1-0)或負脈沖(1-0-1),并在邏輯鏈的輸出處測量SET瞬態脈沖寬度,而傳播引起的脈沖失真(PIPD)等于在鏈輸出處測量脈沖寬度和輸入處測量脈沖寬度的差值,當PIPD值為正時,說明脈沖展寬,反之則說明脈沖壓縮。
根據是否是產生相反邏輯的門,可以將8個邏輯鏈分為反向邏輯鏈和非反向邏輯鏈,隨著輸入脈沖寬度的增加,結果如表2所示。在輸入SET瞬態脈沖是正脈沖(0-1-0)的情況下,脈沖傳播到非反向邏輯鏈(例如and,or,buf,xor_g)時,脈沖的寬度增量PIPD為正且脈沖寬度有明顯增加。而在SET瞬態脈沖傳播到反向邏輯鏈(例如inv,nor,nand,xor_v)時,脈沖的寬度增量PIPD相對于非反向邏輯鏈寬度增量PIPD,脈沖寬度變化較小,說明正脈沖經過非反向邏輯鏈時,脈沖展寬能力較強。隨著邏輯鏈初始輸入脈沖寬度的增加,無論傳播到反向邏輯鏈還是非反向邏輯鏈,脈沖寬度的增量PIPD幾乎保持不變,說明正脈沖寬度的增量PIPD與初始輸入脈沖寬度無關。

表2 正脈沖寬度增量(PIPD)
在邏輯鏈的輸入是負脈沖(1-0-1)的情況下,隨著脈沖寬度的增加,結果如表3所示,SET瞬態脈沖傳播到邏輯鏈鏈尾時,脈沖寬度增量PIPD為負數,說明瞬態脈沖寬度在變小。在經過非反向邏輯鏈(例如and,or,buf,xor_g)時,脈沖寬度的減少量比經過反向邏輯鏈(例如inv,nor,nand,xor_v)時脈沖寬度減少量有明顯的增加,說明負脈沖經過非反向邏輯鏈時,脈沖壓縮能力較強。但是隨初始輸入SET負脈沖寬度的增加,脈沖寬度增量PIPD基本保持不變,說明負脈沖的脈沖寬度增量PIPD和初始輸入負脈沖寬度無關。

表3 負脈沖寬度增量(PIPD)
從表2和表3中可以看出,在輸入是正脈沖時,脈沖會發生展寬,而輸入是負脈沖時,脈沖會發生壓縮,但是無論輸入是正脈沖還是負脈沖,在同一類型輸入脈沖下,反向邏輯鏈中的4個門電路的PIPD的值沒有顯著的差別,非反向邏輯鏈中的4個門電路的PIPD的值沒有明顯差別,說明脈沖寬度的增加或減少與輸入脈沖類型和是否是產生相反邏輯的門有關。
本文提出了一種基于IDELAY2延遲元件原語的單粒子瞬態脈沖產生和測量方法,在不改變系統布局布線的情況下,可以連續產生寬度增量為78 ps的瞬態脈沖,同時可以在FPGA內部測量瞬態脈沖的寬度并且測量的寬度誤差在7%以下,有效地解決了脈沖經過IOB的濾波現象。在瞬態脈沖傳播過程中,瞬態脈沖類型和門電路邏輯鏈類型對脈沖寬度傳播都有影響,初始輸入脈沖寬度對脈沖寬度傳播沒有影響。本文研究了瞬態脈沖在SRAM型FPGA中的傳播特性,在以后研究中會用來提高運用FPGA等硬件方法模擬集成電路軟錯誤的可靠性。