配置刷新技术
FPGA 片上三模冗余( TMR) 设计结合配置刷新( Scrubbing) 的防护方法能够有效地提高系统的抗单粒子翻转性能。
三模冗余的方法利用模块三冗余及三取二自动表决来掩蔽错误,但是如果错误积累到一定程度,导致同时有两个或两个以上模块发生翻转错误,三模冗余的掩蔽功能就会失效。因此,必须利用配置刷新及时纠正已发生的翻转错误。
配置刷新的方法通过连续的回读检测或周期性的回写及时纠正翻转错误。这种方法通常需要连续地占用配置端口,这就限制了部分FPGA 的局部重构( Partial Reconfiguration) 功能。
FPGA 的局部重构是指在系统运行的情况下,对设计中的某些子模块进行功能的升级或修改。这种功能在航天应用中有重要意义。
配置刷新一般有全局复位刷新和动态刷新两种方法。
全局复位刷新的方法是指,在每隔一定时间拉低FPGA 的PROG 管脚,对FPGA 进行全局的重配置,完成刷新。这种方法会造成FPGA 的功能中断。动态刷新是指,在不中断FPGA 功能的情况下,对FPGA 内部的配置空间进行整体或局部的刷新。
配置刷新能够有效纠正FPGA 中发生的单粒子翻转错误。其基本思想是将正确的配置数据按照一定的规则写入到FPGA 的配置空间内,刷新其内容。
通常来讲,实现配置刷新需加入额外的配置控制器来控制刷新的过程。其系统结构示于下图。
图中左侧的存储器中存储着原始的配置数据,为了防止其中的配置数据受到单粒子效应的影响发生翻转,通常该存储器采用抗单粒子翻转的存储器件,如PROM 等。
配置存储器用于控制整个刷新的过程,通过配置端口对目标FPGA 的配置空间进行刷新。目标FPGA 中是待保护的设计实体,其中的配置端口可以是JTAG、Select MAP 及ICAP 中的一种。
按照配置刷新过程中写入规则的不同,可以将配置刷新的方法分为检测刷新和直接刷新两大类。
1 检测刷新
这种方法利用FPGA 的回读功能,将配置空间中的数据进行回读,然后与外部的原始配置数据进行比较校验,检测出错误后,对出错帧进行刷新,完成纠错。比较校验的方法通常有两种: 一种是直接将回读数据与原始配置数据进行比较,另一种是比较二者的编码值( 例如: CRC 码) 。检测刷新能够准确地发现并纠正翻转错误,但控制逻辑相对复杂。
2 直接刷新
与检测刷新不同,直接刷新的方法省掉了比较检测的过程,只是周期性地对配置空间进行逐帧的刷新。这种方法的控制逻辑相对简单,但对FPGA 的写入操作明显增多,将增大写入过程中发生故障的概率。