吴健
【摘 要】本文讨论了民用飞机机载电子硬件审查中的单粒子翻转问题。首先介绍了单粒子翻转现象及其产生的原因,根据可编程电子硬件的工艺类型阐述了单粒子翻转的影响,从芯片设计和用户系统设计两方面总结了单粒子翻转的常用减缓策略。
【关键词】单粒子翻转;机载电子硬件;适航审定
0 前言
随着半导体技术的快速发展,可编程逻辑电子器件在民用飞机领域得到了越来越广泛的应用。常见的可编程电子器件包括可编程逻辑器件(PLD)、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。可编程器体积小、配置灵活,能够以较低的功耗实现复杂的功能。但可编程器件内部的逻辑规模巨大,对外部不可见,要想实现对每个逻辑门状态的完全验证很难实现。为此,开发者通常采取严格的研制流程,例如DO-254[1],保证器件工作的可靠性。影响可编程器件可靠性的因素既有设计错误,也有外部因素,外部因素包括单粒子翻转。适航当局在机载电子硬件的审查过程中,对单粒子翻转引起的失效及其减缓策略给予了特别的关注。
本文以常见的可编程逻辑器件FPGA为例,阐述可编程逻辑器件的单粒子翻转现象及其减缓策略。
1 单粒子翻转现象
单粒子翻转指的是半导体存储器件内部的存储单元的状态变化,例如从0变到1或从1变到0。其物理原因是存储单元的电荷由于外界影响而发生了变化。理论上来说,任何半导体器件都有单粒子翻转的可能。单粒子翻转可能影响存储器件中的一个或多个比特位。
即使没有系统设计的逻辑错误,如果单粒子翻转改变了系统运行的关键状态,仍然有可能对系统产生灾难性的影响。例如,对飞机而言,如果空速和迎角发生错误,则可能使系统产生错误的响应,严重影响飞行安全。因此,如何通过合适的设计手段来避免单粒子翻转的不利影响,从而提高系统的稳健性成为飞机设计人员必须考虑的问题。
对于半导体器件而言,单粒子翻转主要有两个来源:中子和α粒子[2]。
中子主要由于宇宙中的高能质子与大气分子碰撞而产生。高度越大,单位时间和单位面积内的中子数量越多。当不带电的中子穿过半导体的不同材料层时,会产生离子(带电粒子),当离子路径穿过耗尽区或者接近P-N结时,其产生的电子或空穴会使存储单元的状态发生变化。
α粒子为低能量粒子,主要由封装材料引起。带电的α粒子能够产生离子化路径,从而使存储单元的电荷状态发生变化。由于α粒子的能量低,只有那些与硅片非常接近的封装材料才会对其产生影响。在半导体领域,厂家会采用超低α粒子的封装材料,尽量减少对半导体的影响。
2 单粒子翻转对不同类型FPGA的影响
单粒子翻转对不同工艺的可编程电子器件有着不同的影响。单粒子翻转对FPGA的影响主要体现对其内部随机存储单元(RAM)的影响。无论何种类型的FPGA,只要其内部有RAM,都可能受到单粒子翻转的影响。FPGA内部的RAM包括用于配置的RAM和嵌入式RAM。
2.1 FPGA的工艺类型
常见的可编程器件主要有以下三种工艺:
(1)Flash:基于flash的FPGA断电后配置逻辑不消失,上电后可立即启动,无需从外部加载配置文件。Flash工艺 FPGA可重复编程。
(2)SRAM:基于SRAM的FPGA可重复编程,其配置单元断电后信息丢失,每次上电时需重新加载。所以,该类型的FPGA必须在外部配置一块存储芯片来存储配置文件,而且它需要上电配置的时间。
(3)反熔丝:只能一次编程,无法更改逻辑配置,无需启动加载过程。
2.2 对器件配置单元的影响
可编程逻辑器件的的配置单元用来存储硬件描述语言经过综合、布局和布线后生成的配置文件,决定了器件的逻辑功能。
基于Flash和反熔丝工艺的FPGA,其配置单元不会受到单粒子翻转的影响。
基于SRAM的FPGA,其配置单元则可能由于单粒子翻转的影响而发生状态变化,必须有适当的措施检测单粒子翻转引起的错误,并在上一层级的设计中抑制单粒子翻转产生的不利影响。
2.3 对器件嵌入式RAM的影响
为了进一步扩展器件功能,芯片厂商会在FPGA中引入嵌入式RAM,用来在程序运行中临时存储数据。嵌入式RAM不仅存在于基于SRAM的器件中,还存在于基于Flash和反熔丝的FPGA。
这些器件的嵌入式RAM容易受到单粒子翻转的影响,影响系统的正常运行,必须有措施检测到数据的损坏。
3 单粒子翻转减缓策略
对单粒子翻转的减缓,可以从芯片设计和用户设计的角度来进行。
3.1 芯片设计技术
对于芯片生产厂家,其可以利用低α粒子的封装材料,还可采用特殊的交错和布局技术,减少单粒子翻转发生的概率,或增强对单粒子翻转引起错误的检测和纠错能力。
根据器件运行的不同阶段,可分为上电时检测和运行时检测。
3.2 上电时检测
在器件上电时检测配置文件的完整性。对基于Flash和反熔丝的器件,因其对单粒子翻转不敏感,无需进行此类检测。对基于SRAM的器件,常用的做法是CRC校验。很多FPGA器件提供了该功能,只需在代码中启用即可。例如可利用芯片的32位CRC校验内置特性检测配置单元存储中发生的错误。如果用户自己实现检测功能,则会占用额外的芯片资源。
3.3 运行时检测
有的器件可以提供对内部嵌入式RAM的错误检测和纠正。例如,有的FPGA可检测并纠正嵌入式SRAM中单个比特位的错误,检测两个比特位的错误但不纠正。
此外,还可以在更高层级采取措施防止单粒子翻转的不利影响。
在设备级,可以实现指令-监控架构,通过一个独立的通道检测另一个通道发生的错误。
对于计算机,除了指令监控架构,可采用三模冗余技术[3]:给一个处理器配备三份内存,同步运行,在比较模块中实时比较三份内存的差异,如果发现异常则对错误的内容进行纠正。这种架构可以检测并纠正其中某个内存发生的错误,大大降低了单粒子翻转引起的故障,提高了系统可靠性。
系统层级也可以实现多种监控器,根据期望的正常运行范围对系统的实际运行状态进行持续监控,检测被监控对象的异常行为,包括由单粒子翻转引起的错误。系统逻辑根据监控器的输出采取合适的响应,并根据需要告知用户。
4 结论
单粒子翻转会使半导体存储单元的状态发生变化,对飞机的安全运行产生重要影响。本文讨论了单粒子翻转的现象和产生的原因、对不同类型FPGA的影响,以及芯片设计和用户逻辑设计中的减缓措施。民用飞机的高安全性要求使得单粒子翻转得到了适航审查当局和研制单位的日益重视。
【参考文献】
[1]DO-254: Design Assurance Guidance for Airborne Electronic Hardware. RTCA, April 2000.
[2]White Paper: WP-01206-1.0. Introduction to Single-Event Upsets. Altera Corporation, Sep. 2013.
[3]张硕,伊小素,孙进辉,张倩.SRAM型FPGA带刷新的新分层三模冗余技术容错分析[J]. 实验技术与管理, 2012(11):44-49.