【学习笔记】激光告警DSP加载系统的可靠性设计
0 引言
为了对抗激光对于固定军事目标的威胁,激光对抗技术的研究已经成为一个重要课题。高性能激光告警接收机采用面阵探测器,具有高速峰值检测和实时判断的功能,能够实现高速可靠地探测军用制导武器所发出的各种波长的窄脉冲激光的目的。系统高层处理算法处理的数据量较低层算法少,算法的控制结构复杂,适于用运算速度高、寻址方式灵活、通信机制强大的DSP来实现。
数据送到DSP后,由于高能带电粒子造成单粒子翻转会导致程序无法正确运行,存储数据的差错也会对激光信号的判别造成影响。因此如何克服空间粒子效应的影响成为高性能DSP能否在空间中应用的关键。
1 基于光栅衍射的激光探测原理
激光告警设备是能够对激光威胁信号进行识别、截获、测量并做出实时告警的光电侦察设备,能够在地面空间等环境工作。它以发射的光的功率、波长、调制特性和光信号的脉冲宽度、脉冲频率、及编码等技术参数为依据来制定相应的光对抗措施。
入射激光经过接收窗口入射到光学子系统,然后在面阵焦平面探测器光敏单元成像,并通过FPGA采集信号,DSP快速处理,输出结果经处理后将信息显示在液晶显示器上,显示出入射激光波长和方向等信息。根据总体设计方案,探测实验系统中光学子系统主要由激光接收窗口、光栅、透镜组合,以及面阵焦平面探测器组成。衍射光栅激光波长和方向探测原理结构简图如图1所示。
2 空间粒子效应及处理方法
单粒子效应在激光告警技术应用中可能出现的主要问题包括:程序存储中数据改变,导致计算错误,不能正确判断到来的激光信号的角度和波长信息;程序存储区发生位变化,使各个内部程序不能正确执行;寄存器等系统功能失效等情况。单粒子效应主要故障类型见表1。
经统计,在上述故障中出现最多的是单粒子翻转,它不会造成硬件损毁,可以通过采取有效的措施修复。在防止单粒子效应对电子芯片的影响时常用到的容错措施有定期重配置、周期擦除、三模冗余、EDAC等手段。
三模冗余(Triple Modular Redundancy,TMR)方法以实现简单和效果可靠被广泛地应用于单粒子翻转的容错处理中。由于片外冗余方式易增加电路的复杂性和功耗等,这里采用片内冗余:外置存储器分配三个地址空间对程序数据烧写操作,保证某一位地址空间的数据出现错误时仍有其他程序正确执行。
3 系统可靠性设计
DSP在整个系统中主要完成数据处理,确定激光的波长、方位角和俯仰角,DSP程序的正确运行对于整个系统至关重要。DSP抗单粒子主要从硬件和软件方面来考虑,硬件方面采用“看门狗”电路进行DSP故障的实时检测,软件方面采用TMR的程序设计。
3.1 看门狗电路
针对可能出现的程序跑飞甚至是死机问题,系统在电路中设计了专门的硬件“看门狗”进行加固。MAX706是MAXIM公司推出一种专门用来监控微处理器工作状态的监控电路,具有“看门狗”功能。当检测到DSP发生故障死机时产生复位脉冲。原理图如图2所示。
WDI端与DSP的IO口连接,主程序产生的脉冲信号通过GPIO3引脚传输给看门狗电路的输入端,当DSP程序出现问题死机,在间隔1.6 s后看门狗定时器溢出,WDI拉低产生复位操作。电路还提供了手动复位方式,通过S3接通电路,电平拉低后使能人工复位输入端MR,输出有效的复位信号。
3.2 数据的预处理
处理数据前对从FPGA传输过来的数据进行预先处理,在DSP程序中对帧头标志、图像亮点个数标志等影响程序运行流程的标志位进行TMR设计,然后判断图像中亮点的个数。激光经过闪耀光栅发生衍射,再经过透镜组入射到探测器上,会有正负一级和零级3个亮点。程序判断出有3个亮点后,才继续运行计算波长方位角和俯仰角。其流程图如图3所示。
3.3 DSP程序烧写与程序引导中的抗SEU设计
用高性能、超低功耗、部门架构灵活等特点的Flash存储器CMOS 3.0V引导扇区闪存AM29LV160作为DSP的外部程序存储器,将主程序工程做三模冗余备份。首先将引导程序在内的所有程序下载到DSP内存RAM(0x00000000)中,进而对Flash进行数据烧写,在写入Flash中存储时存入不同的地址空间做备份处理。部分程序代码如下:
void Flash(void)
{
unsigned short j;
int i=0;
i= ReadID();
EraseChip(); //擦除Flash
for(i=0;i<0x40000;i+=2)
{
j=*(unsigned short *)i;
WriteFlash(0x90000000+i,j);
WriteFlash(0x90040000+i,j);
WriteFlash(0x90080000+i,j);
}
}
与RAM型器件中出现的单粒子翻转现象而引起的故障不同,Flash的单粒子翻转类错误长期存在。针对Flash器件可能出现的单粒子翻转现象,采用三模冗余结合定时刷新技术。在进行完差错检验并得到正确的数据以后,每隔一段时间自动执行Flash烧写并进行再次备份的方式,将原来有可能累积的错误数据不断擦除,即能确保设备的运行速度也保证了即使设备处于长时间的辐射影响中,也不会使错误积累。
3.4 差错检验及校正
备份在Flash中的程序在下载到DSP以后,为了保证能够正确运行,需要在运行之前进行差错检验和表决,验证是否有bit位发生变化。这里通过在上电自举的二次引导程序中增加输出数据的差错判决单元的方法来实现这一功能。如果在判决中发现有地址中的数据出现错误则进行校正,确保运行的程序正确无误。
引导程序以逐位检验的方式进行检错,表决时采用三中取二原则,对三个主程序的每一个地址的各位依次进行表决,以确定要运行的主程序数据。其原理图如图4所示。
差错检验及表决过程如下:
cmpeq B3,B2,B0//比较寄存器B3和B2,
//相等时B0置一,否则置零
[!B0] cmpeq B3,B1,B0//若B0不等于一比较
//B3和B1,相等则将B0置一,否则置零
[!B0] cmpeq B2,B1,B0
[!B0] stw B1,*B3//若B0的值不等于一,
//则将寄存器B3地址中的数据存入B1中
stw B3,*B4++//将寄存器B4地址中的数据
//写入B3,寻址后B4自动加一
add 1,A1,A1
cmplt A1,B5,B0 //A1与B5比较,A1小于B5时
//B0置1,否则置零
[B0] b loop//B0为1程序跳至loop循环
b_c_int00//否则跳至主程序入口
在进行二次引导的时候,从起始地址开始进行依次判决并循环操作直到最后一位地址结束,随后进入主程序执行相关操作。
4 实验
受实验条件限制无法模拟高能粒子辐射环境,针对抗单粒子翻转只对DSP上电引导程序差错屏蔽功能实验验证:在一个备份地址中写入错误数据i,执行完操作后可以看到DSP内存空间中的数据更新为校正后的正确数据。实验步骤如下:
(1)首先在ccs3.3中对引导程序和主程序进行编译,正确无误后通过JTAG接口下载烧写进DSP内部RAM中。运行Flash烧写程序将数据存至三个不同的地址空间作为备份,结果如图5所示。
(2)关闭ccs使开发板脱离仿真环境,对DSP进行重新上电启动上电自举程序,DSP将会在二次引导时完成差错检验及校正,之后进行主程序的执行。利用DSP仿真通过JTAG接口查看DSP内部存储空间中的数据。能够验证已将错误屏蔽掉。结果如图6所示。
5 结论
本文解决了激光告警设备进行实时高速激光信号采集与处理时高能粒子翻转造成DSP芯片无法正常工作的问题。提出了以对外扩展非易失性存储器Flash芯片作为存储模块,并采用自启动技术进行程序的引导,调用以及执行。通过信号预处理、三模冗余以及在引导程序中增加判决单元进行检验纠错的方法进行DSP抗辐射程序的加固。保证了设备能够在脱离PC进入空间环境后稳定运行。