7.3.4 FPGA可靠性设计
FPGA在空间中主要存在两类辐射效应:总剂量效应(total ionizing dose,TID)和单粒子效应(single event effect,SEE)。需要采取一定的FPGA可靠性设计,保证星载计算机在空间环境中的高可靠性。
FPGA可靠性设计大致从以下三个方面进行考虑:整体设计加固、内部自检模块、系统监测与回读刷新。
1)整体设计加固
(1)整体屏蔽。在FPGA器件的外面采用一定厚度的抗辐射材料进行辐射屏蔽,屏蔽可以减少FPGA器件所受的辐射效应。经常采用的材料有铝、铅、钽和某些脂类化合物等,宇航领域一般采用铅皮对FPGA器件进行整体屏蔽。
(2)冗余设计。为当前公认的比较可靠的对付辐射效应的方法。常用的冗余设计方法是三模冗余法(triple modular redundancy,TMR)。三模冗余的基本原理是对基本的电路模块进行三重备份,将三个模块输出的结果送入判决器进行三选二的多数判决,当只有一个模块发生错误的时候并不会影响最终结果;当错误超过一个时,结果有误。三模冗余的逻辑原理如图7- 9所示。
图7-9 三模冗余的逻辑原理示意图
对于SRAM型FPGA,Xilinx公司提供了RTL电路级的TMR设计工具,即TMR Tool。该工具不仅能够针对系统整体或部分模块进行TMR设计,还可以实现改进型的TMR设计,能够抵抗空间辐射对表决器的影响。
对于反熔丝型FPGA,可以使用第三方软件Synplify ACTEL FPGA的综合工具来实现。可以通过在Synplify中设置属性参量syn_radhardlevel的值来实现三模冗余设置。通过此种方法可以灵活地在模块级、构造级和寄存器级实现三模冗余。
(3)减少Half-latch。Half-latch是FPGA中的一个隐藏状态,在FPGA设计工程综合之后就会出现,它就像一个电平敏感而驱动能力差的锁存器一样。例如,在正常状态下,Half-latch的作用是产生一个常态“1”,但是在发生单粒子效应后,如果Half-latch的状态发生了翻转,那么后面的触发器就永远失效了。对于Virtex和Virtex-Ⅱ系列的FPGA,要尽可能减少产生Half-latch。
(4)防止抖动。SET在时钟电路或其他数据、控制线上容易产生短脉冲抖动,这种抖动有可能会造成电路的误触发或数据锁存的错误。为了减少这种短脉冲抖动的影响,在设计时可采用如下方法:
①内部复位电路尽可能使用电路SET引起的同步复位。
②控制线尽可能配合使能信号线使用。
③组合逻辑数据在锁存时尽可能配合使能信号。
也就是说,尽量在触发逻辑中配合另一个使能条件,这样就可以屏蔽由SET产生的大部分抖动。
(5)逻辑和算术运算的设计。FPGA在进行信号处理时需要进行逻辑运算、算术运算和移位旋转运算。定点乘法运算由内部集成的硬件乘法器实现,加法、与/或/非等逻辑运算由内部的CLB实现,这些部件在受到辐射影响后,运算结果可能出现异常甚至错误。因此,在FPGA顶层设计时需要考虑对关键运算结果的检验,以此获得计算结果的正确性。常用的结果检验方法有Berger预测法、余数判断法检测法和奇偶校验等。
(6)关于I/O。FPGA的可编程I/O也容易受到辐射粒子的影响产生SEU和SEL(目前只发现三态脚在发生错误时可以变成输出脚,但还没有发现I/O脚发生方向转换,即输入变成输出或者输出变成输入)。输入输出脚的3倍冗余设计方法是一种非常有效方法,尤其是对因为配置存储器发生单粒子效应的情况,但是这种方法将占用3倍的I/O资源,所以设计时需要慎重考虑。如果需要杜绝某些三态脚变成输出,那么可以在这些脚上串接二极管之类的单向器件。另外,I/O脚的电流越大越容易受到辐射效应的影响,因此,在进行FPGA综合设计时,应根据需要对输出脚的驱动电流添加约束。
2)内部自检模块
自检模块由分布在FPGA重要布线区域附近的简单逻辑电路实现,自检模块可以是独立的,也可以镶嵌在正常功能模块当中。对自检模块输出的分析可以获得自检模块所在布线区域中辐射效应的间接估计,根据估计的结果可以按照一定的策略对FPGA失效概率大的区域进行局部重新配置,或者进行全局重新配置。
3)系统监测与回读刷新
采用一种“由顶到底”(top-down)的系统监控结构可以大大提高平台的可靠性,有效地抵抗各种辐射效应引起的可恢复故障。一般监控系统采用ACTEL FPGA作为核心对Xilinx FPGA进行监控,实现其回读刷新功能。
回读刷新是指使用一个抗辐照器件定期地从被加固的SRAM型FPGA中回读其位流。根据官方公布的器件位流的数据结构,开发者可以将位流中相应的配置位与预先存储于存储器内部的配置位相比较,若发现错误,则刷新FPGA内部配置区完成纠错,或者定期地对FPGA内部配置区进行刷新。