強電磁脈沖對單片機系統(tǒng)的輻照效應(yīng)實驗研究
目前,電磁環(huán)境日趨惡劣,電子系統(tǒng)工作的可靠性和安全性受到了嚴(yán)重威脅。研究在復(fù)雜的電磁環(huán)境下,特別是在核電磁脈沖(NEMP)、雷電電磁脈沖(LEMP)和高功率微波(HPM)等強電磁環(huán)境下,電子系統(tǒng)的電磁兼容性問題顯得尤為重要。為此,石家莊軍械工程學(xué)院靜電與電磁防護(hù)研究所申請了國防科技重點實驗室基金項目:強電磁脈沖對電子設(shè)備的效應(yīng)和防護(hù)技術(shù)研究。單片機系統(tǒng)的效應(yīng)實驗是其重要組成部分。為有效地進(jìn)行單片機系統(tǒng)的效應(yīng)實驗研究,專門設(shè)計了用于強電磁脈沖效應(yīng)實驗的具有故障自動檢測及顯示功能的單片機系統(tǒng),并將其運用于效應(yīng)實驗,對單片機系統(tǒng)在強電磁環(huán)境下的效應(yīng)問題進(jìn)行了深入研究。
1 強電磁脈沖對單片機系統(tǒng)效應(yīng)實驗的方法及配置
1.1 實驗方法
強電磁脈沖對單片機系統(tǒng)效應(yīng)實驗采用輻照法,即將被試系統(tǒng)置于電磁脈沖輻射場中,研究其在電磁脈沖照射下,受干擾、損傷的情況[1]。
1.2 實驗設(shè)備及對象
實驗設(shè)備為吉赫橫電磁波傳輸室(GTEM Cell)。本所的GTEM室采用嶄新的結(jié)構(gòu)設(shè)計,具有GHz的極寬頻帶,可模擬NEMP和LEMP輻射場,其結(jié)構(gòu)示意圖如圖1所示。Marx發(fā)生器用來產(chǎn)生單個高壓脈沖,脈沖前沿為數(shù)十ns量級,脈沖向負(fù)載傳輸過程中在GTEM室內(nèi)產(chǎn)生均勻電磁場[2]??刂婆_用于各種操作和信號監(jiān)測。
實驗對象選用本文作者設(shè)計的專門用于強電磁脈沖效應(yīng)實驗的單片機系統(tǒng)。實驗時,將其置于測試轉(zhuǎn)臺上,接受電磁脈沖輻照。該系統(tǒng)由CPU(8051)、EPROM、RAM、AD0809、鎖存器、數(shù)碼管和直流穩(wěn)壓電源等硬件電路組成。電路中的每個芯片既能完成一定功能,同時也是實驗對象。系統(tǒng)軟件由五部分組成:檢查CTC運行情況模塊、串口通訊功能檢查模塊、A/D轉(zhuǎn)換電路檢測模塊、RAM內(nèi)容檢測模塊、EPROM內(nèi)容檢測模塊。
2 效應(yīng)實驗研究
本效應(yīng)實驗包括八部分:重啟動效應(yīng)實驗、“死機” 效應(yīng)實驗、控制狀態(tài)改變效應(yīng)實驗、A/D轉(zhuǎn)換電路效應(yīng)實驗、串口通訊電路效應(yīng)實驗、讀寫存儲器RAM效應(yīng)實驗、程序存儲器EPROM效應(yīng)實驗、定時器CTC電路效應(yīng)實驗。
實驗中沒有發(fā)現(xiàn)芯片的硬損傷及EPROM內(nèi)容的改變。其原因可能與電磁脈沖的強度以及脈寬、前后沿和頻帶等參數(shù)有關(guān)。
2.1 重啟動效應(yīng)實驗研究
給單片機加電,按動“執(zhí)行”開關(guān)K,使其工作于指示單片機重啟動程序模塊。按下控制臺上的充電開關(guān),充到一定數(shù)值后,按下停止開關(guān),再按下放電開關(guān),GTEM室中便產(chǎn)生單脈沖電磁輻射場。這就完成了對單片機的一次輻照實驗,一般稱為沖擊實驗(以下同)。沖擊后,打開GTEM室,發(fā)現(xiàn)單片機發(fā)生了重啟動。圖2是單片機重啟動時在RST腳上采集到的干擾信號波形。
fc=12MHz時,要使單片機可靠復(fù)位,需在RST腳出現(xiàn)不小于2個機器周期的高電平(2μs)。圖2中,干擾信號的正負(fù)脈沖寬度都遠(yuǎn)小于2μs,似乎不滿足復(fù)位條件。但該條件是可靠復(fù)位的條件,CPU 內(nèi)的復(fù)位電路在每個機器周期的S5P2采樣RST的狀態(tài),如果連續(xù)兩次采樣值都為高電平,則CPU同樣進(jìn)入復(fù)位狀態(tài)。這就是頻繁出現(xiàn)重啟動現(xiàn)象的原因所在。
2.2 “死機”效應(yīng)實驗研究
按動開關(guān)K,使單片機工作于任一程序模塊,對單片機進(jìn)行沖擊實驗。實驗中多次出現(xiàn)程序跳轉(zhuǎn)和“死機”現(xiàn)象。程序跳轉(zhuǎn)是指程序跳過一段指令后仍能正常運行?!八罊C”有兩種表現(xiàn):一是按動開關(guān)K,數(shù)碼管顯示內(nèi)容無變化;二是按動開關(guān)K,數(shù)碼管顯示內(nèi)容改變幾次后不再發(fā)生變化。圖3 是示波器上記錄下的單片機“死機”時,腳上的干擾波形。
“死機”是指干擾使程序計數(shù)器內(nèi)容改變,結(jié)果可能將一條指令的后半字節(jié)與下一條指令的前半字節(jié)當(dāng)做一條指令來執(zhí)行,從而使程序進(jìn)入一個意想不到的死循環(huán)[4]。程序跳轉(zhuǎn)不一定必然引起“死機”。當(dāng)程序跳轉(zhuǎn)到某條指令首字節(jié)時,一般不會引起“死機”,如實驗中出現(xiàn)的程序跳轉(zhuǎn)現(xiàn)象。實驗中“死機”的第一種表現(xiàn)是干擾后程序已進(jìn)入死循環(huán);第二種表現(xiàn)是干擾后程序并未立即進(jìn)入死循環(huán),先停留在一條等待指令上,即:WAIT:JNB P1.0 WAIT,等待開關(guān)K的按下,按下開關(guān)K后,程序繼續(xù)運行錯誤指令而進(jìn)入死循環(huán)。此時執(zhí)行的等待指令并不是正常的等待指令,而是由一條指令的后半字節(jié)與下一條指令的前半字節(jié)組合成的指令。
一般認(rèn)為“死機”是由于干擾改變了程序計數(shù)器的PC值引起的。但通過實驗,并根據(jù)單片機的讀指時序圖,我們認(rèn)為還有兩種可能造成“死機”:一是由于數(shù)據(jù)線上的干擾信號使CPU讀入了錯誤的跳轉(zhuǎn)指令;二是由于腳上的干擾信號(如圖3)使CPU在非讀指周期發(fā)生讀指操作,讀入了錯誤的跳轉(zhuǎn)指令。
2.3 控制狀態(tài)改變效應(yīng)實驗研究
單片機系統(tǒng)的控制信號一般由鎖存器保存[5],因此,可通過研究鎖存器輸出數(shù)據(jù)的變化情況來研究控制狀態(tài)的變化。該單片機系統(tǒng)中的數(shù)碼管的數(shù)據(jù)是由四位鎖存器74LS373保存的,數(shù)碼管顯示內(nèi)容的變化可直觀地反映鎖存器輸出狀態(tài)的變化。
按動開關(guān)K,使單片機工作于任一程序模塊,對單片機進(jìn)行沖擊實驗。幾乎每次沖擊都能使數(shù)碼管顯示內(nèi)容發(fā)生改變。由鎖存器74LS373的時序圖可知,ALE腳上脈沖的上升沿可將數(shù)據(jù)輸入端的信號存入鎖存器。在每次沖擊實驗中,ALE腳有很強的干擾信號,而每次數(shù)據(jù)輸入端的干擾數(shù)據(jù)都不同,因此每次數(shù)碼管的顯示內(nèi)容也都不同。
2.4 A/D轉(zhuǎn)換電路效應(yīng)實驗研究
按動開關(guān)K,使單片機工作于A/D轉(zhuǎn)換電路檢測模塊。A/D轉(zhuǎn)換程序循環(huán)運行(提高A/D轉(zhuǎn)換期間受沖擊的概率),并隨時顯示轉(zhuǎn)換結(jié)果的最大、最小值,在此期間進(jìn)行沖擊實驗。
實驗中發(fā)現(xiàn)轉(zhuǎn)換結(jié)果的最大、最小值嚴(yán)重偏離正常值“8AH”(可調(diào)),最大值可達(dá)“FFH”(對應(yīng)5V,滿量程),最小值到“00”。其原因有三:(1)模擬輸入端的輸入信號上迭加有干擾信號(干擾脈沖峰值可達(dá)幾十伏);(2)讀轉(zhuǎn)換結(jié)果時,數(shù)據(jù)線上的干擾信號使讀入數(shù)據(jù)出錯;(3)強干擾使AD0809的工作異常。實驗表明,數(shù)據(jù)采集誤差增大主要由前兩個因素引起。
2.5 串行通訊電路效應(yīng)實驗研究
按動開關(guān)K,使單片機工作于串口通訊功能檢查模塊。這部分程序也是循環(huán)進(jìn)行的(提高通訊期間受到?jīng)_擊的概率),當(dāng)發(fā)現(xiàn)接收數(shù)據(jù)與發(fā)送數(shù)據(jù)不符時,顯示出錯信息。在此期間進(jìn)行沖擊實驗,圖4是RXD腳上的正常波形和通訊出錯時的干擾波形。
串口通訊出錯的原因有兩個:(1)干擾使CPU內(nèi)的串口電路工作失誤,從而使接收與發(fā)送不符;(2)RXD線上的干擾信號使串行數(shù)據(jù)發(fā)生混亂。圖4中,RXD上有很強的干擾信號,而且低電平被展寬了3~4倍。這是通訊出錯的主要原因。
2.6 讀寫存儲器RAM效應(yīng)實驗研究
按動開關(guān)K,使單片機工作于RAM檢測模塊。該部分實驗由三部分組成:(1)先在RAM的0000H~1FFFH單元寫入數(shù)據(jù)(“AAH”、“55H”), 然后等待開關(guān)K按下,等待期間進(jìn)行沖擊實驗。沖擊完畢,按下開關(guān)K,判斷RAM內(nèi)容是否改變并顯示數(shù)據(jù)改變的個數(shù)。(2)先進(jìn)行循環(huán)寫(提高寫期間受到?jīng)_擊的概率),在寫期間進(jìn)行沖擊實驗,沖擊完畢,顯示數(shù)據(jù)改變的個數(shù)。(3)先寫入,然后循環(huán)讀(提高讀期間受到?jīng)_擊的概率),在讀期間進(jìn)行沖擊實驗,并顯示數(shù)據(jù)改變的個數(shù)。圖5是循環(huán)讀出現(xiàn)2個錯誤時,采集到的
腳和腳上的干擾波形。
第一部分實驗中RAM內(nèi)容改變,是由于沖擊期間發(fā)生了寫操作。RAM芯片的腳、腳和數(shù)據(jù)線上都有很強的干擾信號,根據(jù)RAM寫時序圖,當(dāng)腳和腳上同時出現(xiàn)低電平時,就可能發(fā)生寫操作,將數(shù)據(jù)線上帶有干擾的錯誤數(shù)據(jù)寫入RAM。第二部分實驗中RAM內(nèi)容改變的原因有兩個:(1)由于在兩次寫之間約有7~8μs的間隔,在此期間可能發(fā)生了不該發(fā)生的寫操作,從而寫入錯誤數(shù)據(jù);(2)循環(huán)寫時,將數(shù)據(jù)線上帶有干擾的錯誤數(shù)據(jù)寫入RAM。第三部分實驗中RAM內(nèi)容改變的原因也有兩個:(1)兩次讀之間發(fā)生了不該發(fā)生的寫操作,改寫了RAM內(nèi)容;(2)正常讀時,將數(shù)據(jù)線上的錯誤數(shù)據(jù)讀入CPU。從讀寫時序圖及圖5干擾波形來看,以上兩種情況都有可能發(fā)生。但從實驗結(jié)果看,第二種可能性較大,第一種可能性則很小。如果在兩次讀之間發(fā)生了不該發(fā)生的寫操作,循環(huán)讀時,累計數(shù)據(jù)改變的個數(shù)將使顯示的值很大。但實際上,顯示只有1~5。
2.7 定時器CTC電路效應(yīng)實驗研究
按動開關(guān)K,使單片機工作于檢查CTC運行情況模塊。在該模塊中,設(shè)置定時器0工作于方式1,利用CTC中斷服務(wù)程序,在P1.1口產(chǎn)生一方波信號使LED發(fā)光。主程序停留在等待開關(guān)K按下的指令上。在此期間對單片機進(jìn)行沖擊實驗。
實驗中有“死機”、重啟動等現(xiàn)象發(fā)生。“死機”后CTC的狀態(tài)有停止工作和正常工作兩種。停止工作出現(xiàn)的原因有兩個:(1)干擾使CTC停止計數(shù),CTC不再產(chǎn)生中斷;(2)程序跑飛時執(zhí)行了禁止中斷等指令。CTC仍能正常工作是因為程序雖進(jìn)入死循環(huán),但CTC仍在計數(shù),計滿后執(zhí)行中斷子程序(賦初值,P1.1口電位取反),使P1.1口輸出正常波形。
每次實驗在P1.1口采集到的波形與正常信號相比,其周期、脈寬等都有一定程度的變化。圖6給出了P1.1口的正常波形和單片機重啟動時的干擾波形。正常波形的正負(fù)脈沖寬度為35μs左右;而重啟動時干擾脈沖所在的低電平只有15μs,干擾過后,P1.1口一直為高電平(復(fù)位時的狀態(tài))。
本文對單片機系統(tǒng)在強電磁脈沖輻照下的重啟動、死機、通訊出錯、改變控制狀態(tài)和A/D轉(zhuǎn)換誤差增加等效應(yīng)進(jìn)行了研究。由于實驗的不徹底性,還未能觀察到硬損傷現(xiàn)象,對上述現(xiàn)象的解釋也不夠準(zhǔn)確,有待進(jìn)行深入的實驗研究。