针对SRAM型FPGA在空间辐射环境下容易受到单粒子效应影响的问题,在分析可重配置的Xilinx FPGA的结构和故障模式的基础上,提出一种基于自主配置管理的Xilinx FPGA容错设计方案。综合运用诸如逻辑电路三模冗余、块存储器EDAC校验、动态回读、动态局部重配置及周期全局重配置等方法实现故障的屏蔽、检测和修复。该方案覆盖了FPGA的各种单粒子效应故障模式,并且在芯片内部实现了自主配置管理,具有体积小、成本低、可靠性高的特点。
【关键词】现场可编程门阵列;容错;单粒子效应;自主配置管理
四、于自主配置管理的容错方案FPGA容错设计的目标是保证系统的安全性和可靠性,使得在各种单粒子效应发生时,尽量能够顺利执行正常操作,而不会导致操作紊乱或停止。针对上述FPGA故障模式,综合各种故障屏蔽、检测和纠错技术,建立如表2所示的故障应对方案。
表2 FPGA故障应对方案除了Half-Latch翻转和BRAM翻转,FPGA的各种故障都可以通过配置存储器的回读来检验,而除了永久性物理损伤,其它故障都可以通过重新配置存储器来纠正。因为局部重构方法会带来大量的时间和空间开销,目前尚处于理论研究阶段,因此在单机容错设计时不予采纳。可以采用双机冷备份的工作方式,若发生局部永久性物理损伤可以切换到备份FPGA。另外对于BRAM的容错处理也比较特殊,因为用户数据均存储在BRAM中,用户数据是根据程序运行情况不断变化的,所以不能通过回读来校验BRAM的翻转,也不能使用重配置来纠错,所以采用EDAC方法实现故障屏蔽、检测和纠错。应用表2中的容错方法,可以建立如图3所示的SEU缓解状态机。
图3 SEU缓解状态机挂接在OPB总线上的BRAM模块采用“纠1检2”的硬件检错与纠错电路,当存储器中一个32位数据发生单比特翻转时能及时纠正,发生两比特翻转时能及时检测出来。因为对一位错误能及时纠正,所以只需通过中断信号通知CPU即可。而两位错误只能检测不能纠正,所以两位错误发生时就需要对系统软件实施复位,若复位无法清除故障就实施全局重配置。回读配置存储器中除BRAM以外的配置信息,按帧进行CRC校验,发现错误时,对故障帧实行局部重配置,若故障不能清除就实施全局重配置。全局重配置后还不能清除故障,则意味着可能发生了局部永久性物理损伤,此时切换到备份FPGA控制器。
通常,FPGA配置存储器的回读与重配置由外部对单粒子效应不敏感的器件来控制。因为需要增加额外的配置管理控制器,这种方案体积、功耗大。Xilinx FPGA提供了lCAP(Internal Configuration Access Port)模块,可以通过ICAP从芯片内部访问配置存储器,从而实现回读与重配置的自主管理。图4给出了FPGA自主配置管理的结构框图。一次性烧写的PROM芯片对空间辐射效应不敏感,对单粒子事件免疫,因此将FPGA的配置数据和每一帧的校验码存入PROM中。
图4 配置管理结构框图在设计阶段,对配置数据按帧进行编码,得到每一个配置帧 fri 的编码校验数 Cdi ,并预先存储在PROM中。上电后,配置数据通过SelectMap接口自动写人FPGA配置存储器。正常运行后,FPGA的回读与重配置管理由运行在Microblaze处理器中的一段配置管理程序来实现。配置管理程序控制OPB HWICAP模块读取配置帧 fri 的内容并存放到BRAM中,重新计算 fri 对应的编码校验值 Cdi ,同时通过ReadPROM模块从PROM中读入 fri 的原始校验码 Cdi ,比较两者,相同则处理下一帧 fri +1;若不同,则有可能发生了SEU,需要对故障帧进行局部重配置。此时通过ReadPROM模块从PROM中读入配置帧数据 fr