航天技术大大加速了经济建设、国防建设、科学文化和社会生活各领域的现代化进程。随着空间技术的发展,FPGA、DSP等超大规模集成电路越来越多的被应用于星载平台上。与之相伴的,则是宇宙空间辐照环境下,FPGA等微电子器件及其大规模集成电路无时不刻发生着对航天器通讯、测控和导航都有严重影响的单粒子效应,而且集成度越高,单粒子效应的影响就越显著。各种航天器在宇宙空间运行会受到各种高能粒子和射线的辐射,可能造成星内电子系统的损伤,甚至使整个航天器失效。有关资料显示,由辐射引发的卫星等航天器微电子器件单粒子效应是航天器主要的异常和故障之一。
降低或避免辐射导致的单粒子失效故障的影响是航天工作所必须面对的问题。防错技术和容错技术是提高系统可靠性的两种主要途径。防错技术注重于降低故障发生的可能性,而容错技术则注重于在错误存在的情况下仍能保持系统的可操作性。故障检测/恢复技术是一种常用而有效的容错技术,它的关键是选择合理的检测点,采用有效的检测方法获取信息,准确判断发生的故障。
一般来讲,FPGA的重要功能模块影响FPGA局部功能运行,如果该模块发生功能错误,将对FPGA某区域的功能造成较长时间的故障。对这类功能模块以检错为主以预防错误的保持和积累。而对于NSAT-2000电子元器件自动测试系统FPGA的关键功能模块,由于其对整个系统正常运行起决定作用,如果该模块功能错误将造成整个系统的状态异常甚至瘫痪。因此,这类功能系统往往需要共同应用防错技术和容错技术来保证系统的高可靠性。如采用局部TMR、TTMR或DMR等容错功能冗余设计,以及故障检测纠错技术等,以自动纠正功能模块的错误,确保功能的正确性。但是,空间仪器中FPGA的资源使用和速度是一个重要的方面,过多的资源开销和过大的速度下降将限制仪器的功能和性能。TMR、TTMR或DMR使得目标设计的资源增加1~2倍,速度性能(即最大工作频率)下降15%左右。
Namisoft基于此,分析了NSAT-2000电子元器件自动测试系统FPGA器件发生单粒子效应的特点,设计并实现了一种基于FPGA空间分布特性的检测电路,并仿真验证了其有效性。
1 FPGA单粒子效应故障机理分析
FPGA的单粒子效应故障具有存储器和处理器故障的双重特征。SRAM型FPGA的主要组成为配置存储器(Configurable Memory)、可编程逻辑单元(CLB)可编程输入输出口(Progra mmable IOB)、块存储器(Block RAM)、布线资源(Routing Resource)、乘法器(Multiplier)、数字时钟管理模块(DCM,Digital Clock Manager)、配置状态机(Configuration state Machine)、上电复位状态机(POR,Power—on Reset)等。
FPGA的单粒子效应故障模式可以由配置存储器、用户存储器/触发器发生单粒子翻转引起的故障,以及由上电复位状态机、配置状态机、硬件乘法器等发生单粒子功能中断和单粒子瞬态脉冲引起的故障两大类。FPGA组成模块的单粒子翻转故障、单粒子功能中断故障和单粒子瞬态脉冲故障的表现形式及可访问性如表1所示。
2 FPGA单粒子效应的空间分布特性
逻辑功能复杂的深亚微米FPGA,依靠复杂的时序逻辑关系完成各种各样的功能,各个基本电路单元之间除了物理上的连接关系之外,经过后期的逻辑功能设计,相互之间还产生了新的逻辑连接和时序关系。某个基本电路单元的单粒子效应故障可以通过这些新生的关系,扩大到更大的作用区域,并且持续更长的作用时间。也就是说,短暂的、小面积的单个晶体管的单粒子效应能够通过时序电路的逻辑功能传播到相邻的区域,并导致该区域逻辑功能的伴随故障,这类现象为单粒子效应的伴随现象。伴随现象在FPGA功能模块中表现出的故障藕合与传递特性被称为伴随特性。
伴随特性产生的原因是,由于单个高能粒子由于质量、能量、入射角以及所带电荷的不同,在不同结构和材料的PN结中造成能量沉积的分布特性也不相同,形成的等离子体体积也不相同,但是一般都认为,高能粒子入射到硅材料后绝大部分能量沉积在一个以入射点为靶心圆形状区域内。这样的空间分布特性,在应用层次上向功能模块层面扩充,表现出“伴随特性”的单粒子效应故障的可测形式。
由此,根据单粒子效应的空间分布特性,单粒子效应故障的传递过程可描述为:电路单元的单粒子效应造成其自身所在的功能模块的故障,以及其一定物理相邻区域内功能电路的故障。即高能粒子的影响通过单粒子效应的空间分布特性产生了传递,并被记录在其他功能模块中。
因此,单粒子效应故障的检测可以考虑在待检测电路附近,合理放置状态已知的检测电路。通过其状态的变化,推断待检测电路是否发生单粒子故障。这样的方法,除了可以准确检测、定位故障电路,还能以降低故障检测带来的资源或者性能损失。
3 FPGA单粒子软错误检测电路设计
FPGA单粒子软错误的检测和诊断的关键是寻找已知状态点进行比较。因此,FPGA检测点的选择需筛选出本身状态已知的点,或设计已知状态点,以实现状态的对比分析。即若筛选出的待检测点状态已知,则该点选择为检测点;若筛选出的待检测点状态未知,则选择与该检测点耦合关系最紧密的状态已知点为检测点。
由第2节的分析可知,当一束高能粒子轰击到FPGA的某一区域时,发生单粒子软错误的区域是以该被轰击区域为中心、直径远大于该轰击区域直径的一圆形区域。因此,当某一待检测点发生了单粒子软错误,基于空间上的分布特性,其相邻区域内的电路也将发生单粒子软错误。由此,基于单粒子效应的空间分布特性,本文设计了如图1所示的状态已知的检测电路,用于检测状态未知的功能电路的状态。同时,该检测电路对状态已知功能电路同样可用。
此时,无论待检测点状态是否已知,均可在其周围放置图1所示的原理电路,完成FPGA单粒子软错误的检测。其中,检测电路的设计可采用触发器沿敏感复位或采用锁存器电平敏感复位两种设计,分别如图2、图3所示。
图2、图3所示检测电路中。每个检测电路存储一个已知的初始值(0、1均可)。初始状态、复位之后以及当前值与初始值相同时,Q端向外输出低电平;当检测点的当前值与初始值不同时(即将当前值与初始值进行异或操作),认为发生了SEU翻转,Q端向外输出高电平并保持,直到rst信号有效,检测点恢复到初始状态(rst上跳沿或下跳沿复位可采用图2所示电路;rst高电平或低电平复位可采用图3所示电路。设计中选用一种即可)。检测电路的真值表如表2所示。
由此,每个检测点可以由多级、多个检测电路组成,每级可以有多个检测电路,如在图1中,检测点0由两级检测电路组成,第一级包含1个检测电路,第二级包含2个检测电路。同级之间的多个检测电路之间、多级之间,产生的输出信号通过或门,产生新的输出,最终,每个检测点输出1跟SEU信号,送往SEU状态寄存器。
SEU状态寄存器的个数、每个寄存器的位数,可以根据自己的实际情况确定,只需“寄存器个数×寄存器位数=检测点数量”即可。
状态读取模块根据用户实际情况进行设计,可使用用户芯片中原有的数据读取通路。图1的示例中,使用并行接口对SEU状态寄存器进行读取,数据线、地址线的位数可根据实际情况进行设定。
SEU状态读取完毕后,通过该接口,设置复位寄存器的值,产生rst信号,对所有检测点中的检测电路进行复位,将其恢复到初始状态。
当完成一次检测后,由SEU状态寄存器记录当次检测结果,该结果可以由状态读取模块根据需求读出。同时,根据检测结果,驱动FPGA完成局部电路刷新,以恢复期正常状态。
显然,该检测电路可以推广到所有FPGA组成模块的检测,只需将其放置在待检测电路的附近,利用单粒子效应的空问特性,均可根据检测模块的状态变化,获得待检测电路发生单粒子软错误的情况。
4 仿真验证
纳米软件利用图1所示的检测电路,并在Modelsim下进行了仿真测试,结果如图4所示。
图4中,通过tb向第31和第2个SEU检测点,即SEU31、SEU2注入了SEU故障。可以看到,SEU内部状态寄存器的值已经改变,通过状态读取模块,可以将SEU状态读出(读出的结果为seu_status_readout)。仿真结果证明了本文设计的检测电路的可用性和有效性。
5 结论
本文分析了NSAT-2000电子元器件测试系统FPGA器件发生单粒子效应的空间分布特性,设计并实现了一种检测电路。将该电路放置在FPGA待检测电路的附近,利用单粒子效应的空间特性,均可根据检测模块的状态变化,获得待检测电路发生单粒子软错误的情况。仿真实验表明,该电路是可行、有效的检测电路,具有很小的资源或者性能损失,具有很好地应用价值。