单片机系统的故障重现设计及实现
电磁脉冲辐照效应实验方法
电磁脉冲对电予系统的辐照效应实验方法,简单地说就是将被测电子系统置于电磁脉冲辐射场中,接受电磁脉冲的照射,研究被测系统在电磁脉冲照射下受干扰、损伤的情况。
实验配置如图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,这就大大降低了误警概率。