強(qiáng)電磁脈沖對(duì)單片機(jī)系統(tǒng)的輻照效應(yīng)實(shí)驗(yàn)研究
按動(dòng)開關(guān)K,使單片機(jī)工作于任一程序模塊,對(duì)單片機(jī)進(jìn)行沖擊實(shí)驗(yàn)。實(shí)驗(yàn)中多次出現(xiàn)程序跳轉(zhuǎn)和“死機(jī)”現(xiàn)象。程序跳轉(zhuǎn)是指程序跳過一段指令后仍能正常運(yùn)行?!八罊C(jī)”有兩種表現(xiàn):一是按動(dòng)開關(guān)K,數(shù)碼管顯示內(nèi)容無變化;二是按動(dòng)開關(guān)K,數(shù)碼管顯示內(nèi)容改變幾次后不再發(fā)生變化。圖3 是示波器上記錄下的單片機(jī)“死機(jī)”時(shí),腳上的干擾波形。
“死機(jī)”是指干擾使程序計(jì)數(shù)器內(nèi)容改變,結(jié)果可能將一條指令的后半字節(jié)與下一條指令的前半字節(jié)當(dāng)做一條指令來執(zhí)行,從而使程序進(jìn)入一個(gè)意想不到的死循環(huán)[4]。程序跳轉(zhuǎn)不一定必然引起“死機(jī)”。當(dāng)程序跳轉(zhuǎn)到某條指令首字節(jié)時(shí),一般不會(huì)引起“死機(jī)”,如實(shí)驗(yàn)中出現(xiàn)的程序跳轉(zhuǎn)現(xiàn)象。實(shí)驗(yàn)中“死機(jī)”的第一種表現(xiàn)是干擾后程序已進(jìn)入死循環(huán);第二種表現(xiàn)是干擾后程序并未立即進(jìn)入死循環(huán),先停留在一條等待指令上,即:WAIT:JNB P1.0 WAIT,等待開關(guān)K的按下,按下開關(guān)K后,程序繼續(xù)運(yùn)行錯(cuò)誤指令而進(jìn)入死循環(huán)。此時(shí)執(zhí)行的等待指令并不是正常的等待指令,而是由一條指令的后半字節(jié)與下一條指令的前半字節(jié)組合成的指令。
一般認(rèn)為“死機(jī)”是由于干擾改變了程序計(jì)數(shù)器的PC值引起的。但通過實(shí)驗(yàn),并根據(jù)單片機(jī)的讀指時(shí)序圖,我們認(rèn)為還有兩種可能造成“死機(jī)”:一是由于數(shù)據(jù)線上的干擾信號(hào)使CPU讀入了錯(cuò)誤的跳轉(zhuǎn)指令;二是由于腳上的干擾信號(hào)(如圖3)使CPU在非讀指周期發(fā)生讀指操作,讀入了錯(cuò)誤的跳轉(zhuǎn)指令。
2.3 控制狀態(tài)改變效應(yīng)實(shí)驗(yàn)研究
單片機(jī)系統(tǒng)的控制信號(hào)一般由鎖存器保存[5],因此,可通過研究鎖存器輸出數(shù)據(jù)的變化情況來研究控制狀態(tài)的變化。該單片機(jī)系統(tǒng)中的數(shù)碼管的數(shù)據(jù)是由四位鎖存器74LS373保存的,數(shù)碼管顯示內(nèi)容的變化可直觀地反映鎖存器輸出狀態(tài)的變化。
按動(dòng)開關(guān)K,使單片機(jī)工作于任一程序模塊,對(duì)單片機(jī)進(jìn)行沖擊實(shí)驗(yàn)。幾乎每次沖擊都能使數(shù)碼管顯示內(nèi)容發(fā)生改變。由鎖存器74LS373的時(shí)序圖可知,ALE腳上脈沖的上升沿可將數(shù)據(jù)輸入端的信號(hào)存入鎖存器。在每次沖擊實(shí)驗(yàn)中,ALE腳有很強(qiáng)的干擾信號(hào),而每次數(shù)據(jù)輸入端的干擾數(shù)據(jù)都不同,因此每次數(shù)碼管的顯示內(nèi)容也都不同。
2.4 A/D轉(zhuǎn)換電路效應(yīng)實(shí)驗(yàn)研究
按動(dòng)開關(guān)K,使單片機(jī)工作于A/D轉(zhuǎn)換電路檢測(cè)模塊。A/D轉(zhuǎn)換程序循環(huán)運(yùn)行(提高A/D轉(zhuǎn)換期間受沖擊的概率),并隨時(shí)顯示轉(zhuǎn)換結(jié)果的最大、最小值,在此期間進(jìn)行沖擊實(shí)驗(yàn)。
實(shí)驗(yàn)中發(fā)現(xiàn)轉(zhuǎn)換結(jié)果的最大、最小值嚴(yán)重偏離正常值“8AH”(可調(diào)),最大值可達(dá)“FFH”(對(duì)應(yīng)5V,滿量程),最小值到“00”。其原因有三:(1)模擬輸入端的輸入信號(hào)上迭加有干擾信號(hào)(干擾脈沖峰值可達(dá)幾十伏);(2)讀轉(zhuǎn)換結(jié)果時(shí),數(shù)據(jù)線上的干擾信號(hào)使讀入數(shù)據(jù)出錯(cuò);(3)強(qiáng)干擾使AD0809的工作異常。實(shí)驗(yàn)表明,數(shù)據(jù)采集誤差增大主要由前兩個(gè)因素引起。
2.5 串行通訊電路效應(yīng)實(shí)驗(yàn)研究
按動(dòng)開關(guān)K,使單片機(jī)工作于串口通訊功能檢查模塊。這部分程序也是循環(huán)進(jìn)行的(提高通訊期間受到?jīng)_擊的概率),當(dāng)發(fā)現(xiàn)接收數(shù)據(jù)與發(fā)送數(shù)據(jù)不符時(shí),顯示出錯(cuò)信息。在此期間進(jìn)行沖擊實(shí)驗(yàn),圖4是RXD腳上的正常波形和通訊出錯(cuò)時(shí)的干擾波形。
串口通訊出錯(cuò)的原因有兩個(gè):(1)干擾使CPU內(nèi)的串口電路工作失誤,從而使接收與發(fā)送不符;(2)RXD線上的干擾信號(hào)使串行數(shù)據(jù)發(fā)生混亂。圖4中,RXD上有很強(qiáng)的干擾信號(hào),而且低電平被展寬了3~4倍。這是通訊出錯(cuò)的主要原因。
2.6 讀寫存儲(chǔ)器RAM效應(yīng)實(shí)驗(yàn)研究
按動(dòng)開關(guān)K,使單片機(jī)工作于RAM檢測(cè)模塊。該部分實(shí)驗(yàn)由三部分組成:(1)先在RAM的0000H~1FFFH單元寫入數(shù)據(jù)(“AAH”、“55H”), 然后等待開關(guān)K按下,等待期間進(jìn)行沖擊實(shí)驗(yàn)。沖擊完畢,按下開關(guān)K,判斷RAM內(nèi)容是否改變并顯示數(shù)據(jù)改變的個(gè)數(shù)。(2)先進(jìn)行循環(huán)寫(提高寫期間受到?jīng)_擊的概率),在寫期間進(jìn)行沖擊實(shí)驗(yàn),沖擊完畢,顯示數(shù)據(jù)改變的個(gè)數(shù)。(3)先寫入,然后循環(huán)讀(提高讀期間受到?jīng)_擊的概率),在讀期間進(jìn)行沖擊實(shí)驗(yàn),并顯示數(shù)據(jù)改變的個(gè)數(shù)。圖5是循環(huán)讀出現(xiàn)2個(gè)錯(cuò)誤時(shí),采集到的
腳和腳上的干擾波形。
評(píng)論