為研究電磁脈沖對計算機系統的干擾和破壞機理,利用GTEM室等大型裝置產生的模擬核電磁脈沖為照射源,對計算機系統進行輻照效應實驗。為了有效地研究計算機系統的電磁脈沖效應,需要專門用于電磁脈沖效應實驗、具有故障重現功能的單片機系統。本文介紹了該系統的組成和原理,并給出了將該系統用于電磁脈沖效應實驗的結果。 電磁脈沖輻照效應實驗方法 電磁脈沖對電予系統的輻照效應實驗方法,簡單地說就是將被測電子系統置于電磁脈沖輻射場中,接受電磁脈沖的照射,研究被測系統在電磁脈沖照射下受干擾、損傷的情況。 實驗配置如圖1所示。主要由吉赫橫電磁波傳輸室(GTEM Cell)、Marx發生器、控制臺和被試系統等組成。Marx發生器用于產生高電壓,與GTEM室配合,在GTEM室內產生均勻電磁場。控制臺主要由示波器、光接收機和Marx控制面板組成。光接收機和電場傳感器組成模擬量光纖場測量系統,主要用于將輻射電磁場轉換成電壓信號;示波器用來顯示電場波形;Marx控制面板用來控制Marx發生器的充放電操作和陡化間隙的調整。 故障重現原理 故障重現的概念 計算機系統在電磁脈沖作用下可產生硬件損壞、數據采集誤差增大、內存數據改變、程序跳轉、重啟動和死機等故障。這些故障現象是大量的、不同的計算機在不同環境、不同時間受干擾后產生的故障現象的集總。如果拿出任意一臺計算機做實驗,只能產生很少的幾個故障現象,由于這些計算機沒有自動檢測功能,有的故障即使是發生了,也觀察不到。如果連故障現象都觀察不全,就無法找出故障出現的規律和原因,更談不上進行防護技術研究。因此,很有必要設計一套專門用于電磁脈沖效應實驗的計算機系統,該系統具有以下功能: ·自動檢測并顯示系統本身出現的故障; ·干擾時故障最容易出現; ·使出現故障的種類最多; ·具有故障重現功能。 故障重現是指主動地采取一定的技術手段,使故障反復出現。想看哪種故障就能出現哪種故障,想讓它出現兒次就出現幾次。這與一般電路中采取有效措施抗干擾的設計思想截然不同。 故障重現的條件 故障重現并不是用計算機軟件進行故障仿真,而是故障的真實再現。要使故障重現,除了輻射場的幅度要足夠強外,被測系統還要具備必需的硬件電路和軟件環境。軟件環境是指干擾出現時控制功能電路工作的程序正在運行,即時間對準。例如,如果要考查電磁脈沖對A/D轉換電路轉換精度的影響,首先要有ADC,其次要保證照射時ADC正在工作。 實現故障重現的技術手段 對輻射場強度和硬件電路的要求比較容易實現,難點是保證時間對準。當然,有些故障的重現對時間對準要求很寬松,如死機和重啟動,計算機幾乎在運行任何程序時都有可能出現這兩種故障現象。 解決這一難點的方法是采取程序模塊化和循環等待技術。程序模塊化使每一種故障(效應)對應一個程序模塊,想看哪種故障,就運行相應的程序模塊;想讓故障多次出現,就反復進行效應實驗。循環等待技術是讓計算機始終運行某一段或某一句程序,可大大提高干擾成功的概率,使故障最容易出現。 系統組成及工作原理 硬件組成 本系統采用51系列單片機。為便于研究程序存儲器的效應情況,選用內部不含EPROM的8031作為中央處理器,程序固化在外部程序存儲器中,這里采用的是擦、寫方便的E2PROM(2864或28C64)。由于8031內含CTC和SIO,不再另設外CTC和SIO。為使系統能夠重現盡可能多的故障現象,采用的外設芯片還有:外部數據存儲器(6264)和ADC(AD0809)。另外,增加4位數碼管用于信息顯示,顯示數據由4個鎖存器(74LS373)保存。上述硬件電路既完成一定的功能又是被試驗對象。系統組成如圖2所示。 程序執行流程 該系統軟件共由8個程序模塊組成:指示單片機重啟動的程序模塊;檢查CTC運行情況的程序模塊;串口通訊功能檢查程序模塊;判斷外RAM內容是否改變及讀寫是否出錯的程序模塊;判斷內RAM內容是否改變程序模塊;檢查A/D轉換電路轉換誤差是否增大程序模塊;判斷外中斷足否被誤觸發程序模塊;顯示E2PROM內容是否被改寫的程序模塊。 系統的工作過程也就是上述8個程序模塊的運行過程,它們是在執行開關K的控制下順序執行的。圖3給出了流程圖。幾乎每一種效應實驗對應一個程序模塊。由于硬件損壞故障與軟件運行關系不大,而且故障現象明顯,無需專門設置程序模塊。重肩動效應實驗可以工作在除指示單片機重啟動的程序模塊的任一程序模塊。死機效應實驗可以工作在任一程序模塊,由于故障現象明顯,無需檢測程序。 故障重現及檢測的具體實現 不同的故障現象有不同的重現和檢測方法。由于篇幅有限,只給出三種故障重現及檢測的實現方法。 外RAM效應 這部分實驗包括三部分:一是不進行讀寫操作時,檢查外RAM內容是否被改寫;二是檢查讀操作是否出錯;三是檢查寫操作是否出錯。 第一部分實驗中,RAM內容被改寫是由于RAM芯片被干擾所致,只需編制檢測程序。先在RAM的0000H~1FFFH單元寫入同一數據("AA"),然后等待執行開關K的按下,等待期間進行沖擊實驗。沖擊完畢,讀出RAM內容并判斷是否改變。 第二、三部分實驗,檢查RAM的讀寫操作是否因干擾而出錯。讓持續時間只有微秒量級的干擾脈沖去干擾執行時間只有幾個微秒的讀寫指令,這種事件發生的概率幾乎為0。對于干擾源可以工作在重復工作方式的情況,可以使其在重復工作方式下工作,這無疑是一種不錯的想法。但是,由于重復工作方式的重復頻率并不能做得很高,最高只能達到1kHz左右,所以其效果并不明顯。最有效的方法是使程序重復執行一條讀或寫指令,雖然兩次讀或寫之間還有幾條判斷讀或寫入的數據是否正確的指令,但兩次讀或寫之間的時間間隔也只有數十微秒量級,這就相當于讓讀寫指令等著電磁脈沖來干擾,從而大大提高了被干擾的概率。 第二、三部分程序編制開始時,為了使其更具代表性,對RAM的所有單元進行讀或寫,即先將RAM的0000H~1FFFH單元清0,然后使程序循環讀這些單元,或向這些單元循環寫入數據"AA",并實時檢查讀出或寫入的數據是否正確。在實驗中發現,第二、三部分實驗出錯的次數,比第一部分實驗出現的次數還多。盡管采取了上述循環等待技術,但某條指令被干擾的可能性還是很小。多次實驗不得其解,后來在讀實驗顯示出錯信息時檢查RAM各單元的內容,發現每次都有一部分RAM單元的內容出錯,而讀操作出錯不可能導致RAM內容改變,因此,并不是或不全是讀寫操作出錯,而是由于RAM內容被改寫后,誤判為讀或寫出錯。解決這一問題的方法是,使讀寫操作只對某一一固定的RAM單元進行,由于一個單元被改寫的概率是所有單元被改寫概率的l/2,這就大大降低了誤警概率。 串口SIO效應 串口SIO效應實驗主要是看串口通訊是否出錯。要觀察到這種故障現象,就必須讓單片機運行串口通訊程序。由于51型單片機只有一個串口,而要使其進行通訊,最少需要兩個串口,這就至少需要有兩套單片機系統,這將使設備和實驗復雜化。在認真研究串口工作原理后,終于找到了只用一個單片機模擬串口通訊的方案:把CPU的TXD和RXD短接,將TXD端發出的數據直接送入RXD進行接收,使單片機工作于自發自收狀態,通過檢查接收與發送的數據是否相等判斷通訊是否正常。當然,仍需采用循環等待技術,使通訊循環進行,當運行正常時,在P1.1口產生脈沖信號,使紅色LED亮。如果通汛出現異常,數碼管將顯示出錯信息,并將LED熄滅。 定時器CTC效應 為使CTC工作失誤故障重現,可在主程序中加入允許CTC中斷的指令,使程序運行時,CTC一直在工作,等待電磁脈沖來干擾。 定時器采用CPU內部定時器0,工作方式為方式1。編寫CTC0的中斷子程序,與軟件計數器R0配合,在P1.1口產生一個方波信號,驅動LED閃亮。主程序等待K按下指令,等待期間進行干擾實驗。如果LED閃亮異常,表明CTC工作不正常。以下為定時器0的中斷子程序: 實驗結果 在設計該單片機系統以前,曾用一單片機最小應用系統做效應實驗,結果只能觀察到死機現象。而將該系統用于效應實驗后,觀察到了硬件損壞、A/D轉換誤差增大、內存數據改變、程序跳轉、死機、CTC工作失誤、串口通訊出錯和程序存儲器E2PROM內容被改寫等多種故障現象。通過大量、反復地實驗,測出了各種故障出現的閾值,分析了故障出現的原因。 圖4是示波器記錄下的串口RXD引腳上的正常信號和通訊出錯時的干擾波形。圖4表明,RXD上有很強的干擾信號,而且低電平被展寬了3~4倍。根據實驗數據及串口工作原理,得出申行通訊出錯的原因有兩個:1.干擾使SIO電路工作失誤,如串口控制寄存器SCON內容改變,發送或接收SBUF內容改變等,這些都可能引起接收數據和發送數據不符,從而使通訊出錯;2.RXD線上的干擾信號使串行數據發生混亂,從而使接收數據出錯。 |