何怡剛,趙 明,周健波,張鐘韜
(合肥工業(yè)大學(xué) 電氣與自動化工程學(xué)院,合肥 230009)
隨著集成電路工藝進入深亞微米時代,特征尺寸的減少以及時鐘頻率的提高都使得空間環(huán)境器件的單粒子瞬態(tài)脈沖(SET,single event transient)效應(yīng)變得越來越嚴(yán)重,甚至成為系統(tǒng)產(chǎn)生軟錯誤的主要來源[1-2]。為了評估集成電路的單粒子瞬態(tài)效應(yīng),目前主要的方法是輻射實驗測量方法、模型分析計算方法、仿真軟件模擬方法和基于硬件的模擬方法[3],輻射實驗測試方法就是在地面模擬真實的單粒子效應(yīng),但是實驗成本高,每批次的實驗數(shù)據(jù)少。模型分析計算方法和仿真軟件模擬方法不能完全模擬出單粒子效應(yīng)對集成電路的影響,同時計算速度較慢,所以相比于前三種方法,基于硬件的模擬方法一般是利用FPGA進行硬件加速,在大規(guī)模電路應(yīng)用中,具有速度快、成本低的優(yōu)點,缺點是精度較低。文獻[3-4]使用FPGA在基于量化組合邏輯門延遲思想和掃描測試的方法,去評估數(shù)字電路軟錯誤敏感性,但是忽略了FPGA中瞬態(tài)脈沖在電路傳播過程中可能會發(fā)生脈沖壓縮效應(yīng)或者脈沖展寬效應(yīng)[5]。根據(jù)相關(guān)實驗數(shù)據(jù)表明單粒子瞬態(tài)效應(yīng)造成器件的瞬態(tài)脈沖寬度在150 ps~2 ns之間[6]。為了提高基于硬件模擬方法的精度,可以從模擬單粒子瞬態(tài)脈沖的產(chǎn)生以及在FPGA中的傳輸特性方面進行研究。
在FPGA內(nèi)部模擬單粒子瞬態(tài)脈沖的產(chǎn)生,現(xiàn)在普遍使用三種方法:輻射試驗、激光試驗和電注入試驗[7],前兩種方法雖然貼近單粒子瞬態(tài)效應(yīng)產(chǎn)生瞬態(tài)脈沖的實際環(huán)境,但是其只能觀測到瞬態(tài)脈沖在電路中產(chǎn)生的結(jié)果,無法很精確地確定瞬態(tài)脈沖注入時間和位置,而且其有很高的成本,相反電注入試驗方法用注入的脈沖來模擬真實粒子的撞擊,其成本較低,并且對于要注入時間和地點都能實現(xiàn)良好的控制,能準(zhǔn)確地確定注入時間及位置,最適合本文的模擬瞬態(tài)脈沖的產(chǎn)生和分析。
針對瞬態(tài)脈沖寬度在皮秒級別,本文充分利用FPGA中豐富的原語資源,提出了一種基于IDELAY2延遲元件的電脈沖注入和測量方法,在不改變系統(tǒng)布局布線的情況下,可以實現(xiàn)連續(xù)產(chǎn)生寬度增量為78ps的瞬態(tài)脈沖,寬度基本覆蓋深亞微米下瞬態(tài)脈沖寬度范圍,同時利用IDELAY2延遲元件在FPGA內(nèi)部設(shè)計瞬態(tài)脈沖寬度測量電路,研究8種不同的門電路邏輯鏈對脈沖寬度的影響,結(jié)果顯示了門類型、輸入脈沖類型和輸入脈沖寬度對傳播脈沖寬度的影響。
瞬態(tài)脈沖的電注入方法就是在電路的指定節(jié)點注入瞬態(tài)脈沖,注入脈沖的方法分為外部電注入和內(nèi)部電注入,采用外部電注入的方法就是在FPGA外部產(chǎn)生瞬態(tài)脈沖,通過FPGA的輸入輸出引腳(I/O Element)結(jié)構(gòu)進入FPGA,但是脈沖在通過IOE結(jié)構(gòu)時會有濾波的現(xiàn)象,所以本文采用內(nèi)部電注入的方法,避免造成輸入脈沖寬度的變化。當(dāng)組合邏輯電路中發(fā)生SET時,產(chǎn)生的瞬態(tài)脈沖有兩種類型,即正脈沖(010)和負脈沖(101),本文將分別對它們進行討論。
本文的SET脈沖產(chǎn)生單元是在FPGA中的IDELAY2延遲元件原語的基礎(chǔ)上實現(xiàn)的。IDELAY2延遲元件是具有抽頭分辨率的31抽頭環(huán)繞式延遲原語,可以將其應(yīng)用于組合輸入路徑或者已定義的輸入路徑或者兩者都有,也可以直接從FPGA邏輯中對其進行訪問,它是Xilinx 的FPGA底層延遲單元,可以在單個輸入引腳的基礎(chǔ)上延遲輸入信號,抽頭延遲分辨率可以通過使用IDELAYCTRL原語作為參考時鐘連續(xù)校準(zhǔn),如式(1)所示:
Tapdelay=1/(32*2*Fref)
(1)
式(1)中,F(xiàn)ref是參考時鐘頻率,Tapdelay是抽頭延遲分辨率,抽頭值和抽頭延遲分辨率的乘積就是相對于抽頭值為0時的總延遲時間。本文中選擇的參考時鐘頻率為200 MHz,由于抽頭分辨率是通過IDELAYCTRL進行校準(zhǔn)的,所以抽頭分辨率為78 ps,如果IDELAY2原語被實例化,則IDELAYCTRL模塊也必須被實例化,IDELAYCTRL模塊連續(xù)校準(zhǔn)單個延遲抽頭IDELAY2區(qū)域,以減少工藝、電壓和溫度變化的影響,所以即使環(huán)境變化,抽頭延遲單元的抽頭分辨率也會非常精確和穩(wěn)定。
IDELAY2延遲元件抽頭延遲線屬性包括FIXED,VARIABLE, VAR_LOAD和VAR_LOAD_PIPE四種屬性,本文選擇“VARIABLE”屬性,在此屬性下,可以在IDELAY2延遲元件的可用端口,如圖1所示,在CLK時鐘信號的上升沿,采樣CE和INC的值,動態(tài)增加或者減少IDELAY2延遲元件的延遲抽頭值。
圖1 IDELAY2延遲元件
為了評估抽頭延遲單元IDELAY2的精度和穩(wěn)定性,設(shè)計了環(huán)形振蕩器和IDELAY2延遲元件組成的驗證電路,如圖2所示,整個電路由三個反相器、IDELAY2延遲元件和一個與門電路組成,在靜態(tài)下,任何一個反相器的輸入和輸出都不可能穩(wěn)定在高電平或低電平,只能在高低電平之間變化。假設(shè)一個反相器的延遲時間為t1,一個門電路的延遲時間為t2,IDELAY2延遲元件的延遲時間為t3,則總的延遲時間為3*t1+t2+t3,整個延遲電路的振蕩周期為2*(3*t1+t2+t3),因為IDELAY2延遲元件的延遲時間取決于抽頭值,所以通過增加抽頭值,研究其導(dǎo)致的振蕩周期增加量。具體的做法就是在IDELAY2的抽頭值為0時,使能信號置位為高電平,在圖2中的測量信號點處,測量一定數(shù)量上升沿所需的時間,這個數(shù)值可以通過USB-UAR芯片傳輸?shù)絇C端的串口通信軟件上得到,進而計算出單個振蕩周期值。在抽頭值每次增加一時,IDELAY2延遲單元的延遲時間增加量為Δt3,與之前抽頭值的振蕩周期相比,將得到新的振蕩周期增加量為2*Δt3,抽頭值最大可以達到31,就可以計算31個新的振蕩周期增加量。在抽頭值每增加一時,也就是IDELAY2延遲元件的延遲時間增加78 ps,整個振蕩周期理論的增加量是156 ps,如圖3所示,得到的是IDELAY2延遲元件造成的周期增加量,結(jié)果表明了IDELAY2延遲元件的精度和可靠性。
SET脈沖產(chǎn)生單元電路由兩個IDELAY2延遲元件和一個門電路組成,如圖4所示。當(dāng)有一個上升沿信號輸入時,信號會通過兩個IDELAY2延遲元件,通過設(shè)置兩個IDELAY2延遲元件不同的抽頭值,延遲不同的時間,延遲后的信號通過XOR異或門產(chǎn)生一個正脈沖(0-1-0),產(chǎn)生脈沖的寬度取決于兩個IDELAY2延遲元件抽頭值的差。同樣為了得到一個負脈沖(1-0-1),可以將延遲后的信號通過XNOR異或非門,產(chǎn)生負脈沖的寬度也取決于兩個IDELAY2延遲元件抽頭值的差。在需要改變抽頭值時,只需要改變CE和INC的值,就可以在不改變系統(tǒng)布局布線的情況下,通過SET脈沖產(chǎn)生單元電路連續(xù)調(diào)教脈沖寬度,并且脈沖寬度的單次調(diào)節(jié)步長是78 ps。瞬態(tài)脈沖產(chǎn)生單元電路產(chǎn)生的瞬態(tài)脈沖可以作為信號傳播模塊的輸入信號,也可以用瞬態(tài)脈沖測量模塊直接對瞬態(tài)脈沖進行測量,不需要進行放大或轉(zhuǎn)化為其他形式。
圖2 IDELAY2延遲驗證電路
圖3 IDELAY2延遲單元周期增加量
圖4 SET正脈沖(0-1-0)產(chǎn)生電路
為了表征SET脈沖傳播過程中脈沖寬度的變化,根據(jù)典型電路的情況,將and、or、xor、buf、nor、nand和inv分別單獨組成相同長度的門電路邏輯鏈,在鏈的開始處注入產(chǎn)生的SET脈沖,并在鏈尾得到遍歷完邏輯鏈的脈沖。為了將脈沖傳播不受邏輯屏蔽的影響,到達脈沖測量裝置前,所有邏輯門的其他輸入均設(shè)置為未屏蔽狀態(tài),將and和nand第二個輸入設(shè)置為1,or和nor第二個輸入設(shè)置為0,對于xor,將分別考慮第二個輸入為0和1兩種情況。通過手動放置和布線,確保了信號傳播單元不同邏輯鏈有相同的布局和布線,可以得到更準(zhǔn)確的結(jié)果,排除其他因素的影響。
對于邏輯鏈鏈尾SET脈沖寬度的測量,文獻[8]選擇使用示波器,但是由于SET脈沖經(jīng)過IOE(I/O Element)輸出時,可能會發(fā)生脈沖失真,進而影響所測SET脈沖寬度的準(zhǔn)確性,因此本文選擇在FPGA內(nèi)部測量脈沖寬度,如圖5所示。
圖5 SET正脈沖(0-1-0)測量電路
SET脈沖測量電路也是在IDELAY2延遲元件原語的基礎(chǔ)上實現(xiàn)的,它包括兩個IDELAY2延遲元件和一個與門電路組成,其中IDELAY2延遲元件的抽頭延遲線屬性是“VARIABLE”,邏輯鏈鏈尾脈沖通過設(shè)置兩個抽頭值不同的IDELAY2延遲單元,在兩個抽頭值差不斷增加時,對于正脈沖(0-1-0),兩個IDELAY2延遲元件的輸出“與”門結(jié)果中剛好沒有檢測到高電平,則說明兩個脈沖的相位相差了脈沖寬度的長度。對于負脈沖(1-0-1),兩個IDELAY2延遲元件的輸出“或”門結(jié)果中剛好沒有檢測到低電平,則說明兩個脈沖的相位相差了脈沖寬度的長度。
為了驗證SET脈沖測量單元的準(zhǔn)確性,本文使用SET脈沖測量單元去測量占空比為50%的不同周期信號的正脈沖寬度和負脈沖寬度,表1為測量結(jié)果,其中F為信號頻率,La表示正脈沖和負脈沖的實際寬度,Lc表示用SET脈沖測量單元得到的脈沖寬度,|ΔL|表示測量值與理論值的誤差率,計算公式如式(2):
ΔL= |La-Lc|/La (2)
從表1中可以看出,對于脈沖的寬度測量值和寬度實際值之間誤差ΔL均小于7%,同時在對正脈沖和負脈沖的分別測量誤差中,發(fā)現(xiàn)SET脈沖測量單元對正脈沖的測量誤差低于負脈沖的測量誤差。
為了研究SET瞬態(tài)脈沖在FPGA邏輯門中的傳播特性,使用Xlinx的 Vivado軟件分別實現(xiàn)50個and,or,xor,buf,nor,nand,inv相連的門電路邏輯鏈,考慮到FPGA中不存在門的概念,因此將查找表(LUT)配置成所需要功能的門,將SET脈沖進入不同門電路邏輯鏈中。為了研究SET瞬態(tài)脈沖通過門電路邏輯鏈傳播時的脈沖變化,在邏輯鏈的輸入處注入不同寬度的正脈沖(0-1-0)或負脈沖(1-0-1),并在邏輯鏈的輸出處測量SET瞬態(tài)脈沖寬度,而傳播引起的脈沖失真(PIPD)等于在鏈輸出處測量脈沖寬度和輸入處測量脈沖寬度的差值,當(dāng)PIPD值為正時,說明脈沖展寬,反之則說明脈沖壓縮。
根據(jù)是否是產(chǎn)生相反邏輯的門,可以將8個邏輯鏈分為反向邏輯鏈和非反向邏輯鏈,隨著輸入脈沖寬度的增加,結(jié)果如表2所示。在輸入SET瞬態(tài)脈沖是正脈沖(0-1-0)的情況下,脈沖傳播到非反向邏輯鏈(例如and,or,buf,xor_g)時,脈沖的寬度增量PIPD為正且脈沖寬度有明顯增加。而在SET瞬態(tài)脈沖傳播到反向邏輯鏈(例如inv,nor,nand,xor_v)時,脈沖的寬度增量PIPD相對于非反向邏輯鏈寬度增量PIPD,脈沖寬度變化較小,說明正脈沖經(jīng)過非反向邏輯鏈時,脈沖展寬能力較強。隨著邏輯鏈初始輸入脈沖寬度的增加,無論傳播到反向邏輯鏈還是非反向邏輯鏈,脈沖寬度的增量PIPD幾乎保持不變,說明正脈沖寬度的增量PIPD與初始輸入脈沖寬度無關(guān)。
表2 正脈沖寬度增量(PIPD)
在邏輯鏈的輸入是負脈沖(1-0-1)的情況下,隨著脈沖寬度的增加,結(jié)果如表3所示,SET瞬態(tài)脈沖傳播到邏輯鏈鏈尾時,脈沖寬度增量PIPD為負數(shù),說明瞬態(tài)脈沖寬度在變小。在經(jīng)過非反向邏輯鏈(例如and,or,buf,xor_g)時,脈沖寬度的減少量比經(jīng)過反向邏輯鏈(例如inv,nor,nand,xor_v)時脈沖寬度減少量有明顯的增加,說明負脈沖經(jīng)過非反向邏輯鏈時,脈沖壓縮能力較強。但是隨初始輸入SET負脈沖寬度的增加,脈沖寬度增量PIPD基本保持不變,說明負脈沖的脈沖寬度增量PIPD和初始輸入負脈沖寬度無關(guān)。
表3 負脈沖寬度增量(PIPD)
從表2和表3中可以看出,在輸入是正脈沖時,脈沖會發(fā)生展寬,而輸入是負脈沖時,脈沖會發(fā)生壓縮,但是無論輸入是正脈沖還是負脈沖,在同一類型輸入脈沖下,反向邏輯鏈中的4個門電路的PIPD的值沒有顯著的差別,非反向邏輯鏈中的4個門電路的PIPD的值沒有明顯差別,說明脈沖寬度的增加或減少與輸入脈沖類型和是否是產(chǎn)生相反邏輯的門有關(guān)。
本文提出了一種基于IDELAY2延遲元件原語的單粒子瞬態(tài)脈沖產(chǎn)生和測量方法,在不改變系統(tǒng)布局布線的情況下,可以連續(xù)產(chǎn)生寬度增量為78 ps的瞬態(tài)脈沖,同時可以在FPGA內(nèi)部測量瞬態(tài)脈沖的寬度并且測量的寬度誤差在7%以下,有效地解決了脈沖經(jīng)過IOB的濾波現(xiàn)象。在瞬態(tài)脈沖傳播過程中,瞬態(tài)脈沖類型和門電路邏輯鏈類型對脈沖寬度傳播都有影響,初始輸入脈沖寬度對脈沖寬度傳播沒有影響。本文研究了瞬態(tài)脈沖在SRAM型FPGA中的傳播特性,在以后研究中會用來提高運用FPGA等硬件方法模擬集成電路軟錯誤的可靠性。