Virtex FPGA抗单粒子翻转技术
2014-01-01庞宗强
高 鹏,庞宗强,周 同
(中国电子科技集团公司第五十四研究所,河北石家庄050081)
0 引言
卫星运行在宇宙空间中,空间环境中的各种高能粒子通过卫星时可能会影响半导体电路的逻辑状态[1],如单粒子翻转现象[2](SEU:Single Events Upset),虽然只引起存储器内容的“0”、“1”翻转,但是却可能影响整个系统的正常工作。随着技术的进步,对星载信号处理能力的要求越来越高,FPGA也越来越多地应用到航天领域,成为星载信号处理和控制的关键部件。目前,从FPGA在星载型号产品中的使用情况来看,单粒子效应成为了影响大规模FPGA可用性和可靠性的主要因素。FPGA中用户程序是存储在数以百万计的配置单元中,单粒子效应导致的一个配置阵列的翻转会使得整个程序失效,为了解决单粒子效应带来的此种问题,可以利用工具对程序网表进行冗余备份,或者人工进行设计冗余,Virtex系列FPGA可在SelectMAP模式下对FPGA进行部分重配置[3],或者采用自主刷新对FPGA进行部分重配置,三模冗余和部分重配置相结合使用成为目前抗单粒子翻转的主流技术。随着星载处理系统的复杂程度日益增高,自主刷新[4]和外控刷新相比节省了控制FPGA,提高了硬件资源和功耗的利用率。
1 抗单粒子翻转原理
1.1 部分重配置
配置帧是配置数据在Virtex FPGA配置存储器中可以读写的最小单位,多组配置帧组成一个配置帧列[5],配置帧列分为 CLB帧列、IOB帧列、GCLK帧列、DSP帧列、BRAM内连帧列、BRAM帧列。一个完整的配置文件就是由所有配置位置得帧信息和一些必要的首尾控制字组成。在不影响当前程序正常运行条件下,其中CLB帧列、IOB帧列、GCLK帧列、DSP帧列、BRAM内连帧列为可在线重配置帧(在线重配置不影响FPGA正常功能),BRAM帧列为不可在线重配置帧(在线重配置会造成FPGA RAM区数据错误)。
FPGA加载过程中先把bit文件中的逻辑配置数据写入逻辑配置寄存器中,然后把初始化的数据流写入数据寄存器中。当单粒子翻转发生在配置逻辑寄存器中时会发生逻辑错误,发生在数据寄存器中时会产生数据流的某些比特翻转,所以关注点放到前者,部分重配的过程就是在不中断FPGA正常运行条件下,对FPGA中的逻辑配置寄存器重写。因此对可在线重配置帧进行重配置,可纠正单粒子翻转引起的错误,消除了错误的累积。
1.2 冗余设计
FPGA冗余设计包括资源冗余设计和时间冗余设计。资源冗余设计是通过将FPGA资源备份实现某项功能,当一处发生错误时其他备份资源可保证FPGA正常工作,一般采用三模冗余手段[6]。三模冗余设计采用3选2逻辑备份,对及时性错误有很好的免疫力,因此在线重配置结合三模冗余设计为Virtex FPGA抗单粒子翻转的有效手段,当FPGA资源紧张时对关键部分做三模冗余设计,次要部分通过部分重配消除错误累积。
2 部分重配置和三模冗余设计
2.1 定时刷新与回读刷新比较
部分重配置具体实现方案有2种:
第一种:FPGA上电加载后定时对配置寄存器进行部分重配,当发生单粒子翻转后下一次部分重配可纠错;第二种:FPGA上电加载后定时对配置寄存器进行回读[7]验证,当发现回读数据发生错误时再对配置寄存器进行部分重配,并实时监测三模表决反馈指示,当表决反馈指示错误时说明有单粒子发生,立即对FPGA进行部分重配。
2种方案的比较:第一种方案实现简单,只需要按照选择的时间间隔定时重新配置可重配置区,由于刷新过程中刷新控制逻辑或者Virtex FPGA的SelectMAP配置控制逻辑会受到单粒子的影响,而造成刷新数据流出错,所以应尽量缩短总的刷新时间,因而该方法带来的问题是刷新的次数多,从而造成总的刷新时间较长。解决方法为缩短每次的刷新时间或延长刷新周期,每次的刷新时间由刷新数据量和刷新速率决定。
第二种方案只有在检测到单粒子效应产生时才进行刷新,因此刷新的次数大大减少,可以忽略刷新过程中单粒子带来配置数据出错的问题。此方案实现可采用2种方法,方法1:将FPGA中的配置存储区中的数据回读出来和.rbb文件进行比较,比较过程中需要屏蔽文件.msk,这2个文件每一个都与FPGA配置文件大小相似,因此该方法需要的存储区需求量很大,特别是大容量的FPGA不宜采用此方法。方法2:将FPGA中的配置存储区中的数据回读出来做CRC,得到单帧或多帧数据的CRC结果,将此结果存储下来,抗辐照加固FPGA将存储的CRC结果和回读计算的CRC做比对,比对一致时说明没有单粒子翻转,反之说明有单粒子翻转产生,启动刷新。此方法的缺点是技术难度较大,需要设计师找到合适的回读控制字以便每次的回读数据保持一致。
2.2 外控刷新与自主刷新比较
通常FPGA配置存储器的回读与重配置由外部对单粒子效应不敏感的器件来控制,由此需要增加额外的配置控制FPGA,这种方案增加了系统复杂度,功耗大。Virtex FPGA 提供了 ICAP[8]模块,可以通过ICAP从芯片内部访问配置存储器,从而实现回读与重配置的自主管理。
图1为外部控制刷新的硬件原理图,Prom用于存储FPGA的配置和刷新的数据;抗辐照加固FPGA用于实现Virtex FPGA的初始全部配置、配置数据回读、CRC校验、刷新功能。该器件可选用高可靠的FPGA或抗辐射加固的专用集成电路,Virtex FPGA工作在SelectMAP从模式下M2 M1 M0=“110”。
图1 外部控制刷新硬件原理图
图2为自主刷新硬件原理图,Virtex FPGA工作在SelectMAP主模式下M2 M1 M0=“011”,上电加载为主并模式,上电加载完成之后FPGA的回读和刷新功能由刷新控制逻辑模块控制ICAP接口完成,刷新控制逻辑模块和外部控制刷新中的抗辐照加固FPGA功能相似,不同之处是上电加载是自主完成,自主刷新方案等效于把外部控制刷新FPGA的功能放到了Virtex FPGA中,硬件上减少了一片抗辐照加固FPGA。首先刷新控制逻辑模块需要具有很好的抗单粒子翻转性能,才能保证对其他资源刷新无误,因此必须对刷新控制逻辑模块做三模冗余或者更多模冗余设计,刷新控制逻辑模块占用资源很少,可以容忍多模冗余,刷新过程中同时也对自身进行刷新,保证了刷新控制逻辑模块不会因单粒子效应产生功能异常。
图2 自主刷新硬件原理图
刷新控制逻辑模块工作流程:上电加载成功后定时器开始计时,计时时间到时控制ICAP回读FPGA可重配置区的数据并计算CRC,计算出的CRC结果和PROM中存储的固定CRC进行比较,如2个CRC结果一致则说明没有单粒子发生,不启动刷新,否则启动一次刷新,刷新时为写ICAP,另外当三模表决反馈错误产生时启动一次刷新。
2.3 三模冗余设计
常用的FPGA可综合代码级单粒子效应防护设计有:TMR[9]、时间三模冗余和冗余编码等。
TMR设计就是将原先设计中一块逻辑电路复制成3份,如框图中的冗余逻辑块1、冗余逻辑块2和冗余逻辑块3,同时运行这3部分逻辑电路,输出结果进行大数表决,表决出一个置信度高的结果输出。同时检测出哪个冗余逻辑块发生翻转并反馈。
如图3所示,TMR是提高单粒子环境下FPGA可靠性很有效的措施,是减缓单粒子SEU的重要手段之一,只是会耗用很多FPGA资源,全面TMR设计时对资源的耗用约为无冗余措施时的3.2~3.5倍,采用部分TMR设计,可以适当降低资源的耗用。采用TMR设计的比重越高,FPGA运行的可靠度越高,资源耗用和可靠性需求两方面要权衡取舍。
图3 三模冗余原理
图4为时间三模冗余设计实例,表决器为全0表决,即当输入 a、b和c均为‘0’时,输出 out才为‘0’,否则输出为‘1’,解决了瞬态脉冲引起的FPGA触发器的翻转,冗余编码设计针对某些固定的存储数据或者状态机进行冗余编码,防止Block RAM中不刷新的数据被打翻,重要的状态机进行冗余编码后,一个bit位的瞬时翻转不会造成状态机异常跳转。
图4 时间三模冗余设计
3 单粒子效应故障注入的验证
故障注入试验可做为卫星搭载或地面模拟试验之前的研究方法。针对JTAG口[10]注错测试提出了2种方案,第一种方案为开发专门的JTAG操作软件,可以灵活控制JTAG口实时注错;第二种方案通过iMPACT界面手动下载注错程序,刷新纠错后再通过iMPACT界面回读比对结果,实时性不好,注错效率低。如图5所示,被测FPGA上电后通过selectMAP主模式加载PROM中的bit文件,加载成功后自刷新程序开始运行。
图5 单粒子效应故障注入系统结构图
第一种方案,故障生成与结果分析计算机通过JTAG口将逐帧的错误注入到被测FPGA中,并回读比对,由于注错回读为逐帧进行,不会中断FPGA正常运行,同时检测FPGA的功能是否正常;第二种方案,故障生成与结果分析计算机通过JTAG口将含有错误帧的完整bit文件通过iMPACT界面下载到被测FPGA中,等待刷新控制FPGA刷新完成后,计算机通过JTAG口回读bit文件,并和正确的bit文件做比对,比对时需要有.MSK文件。此方案为最简单的注错检测方法,不需要设计专门的注错FPGA平台,缺点是计算机通过JTAG口下载注错程序或回读时,均会中断被测FPGA的正常运行,并且需要人工操作完成,由于数据帧数量大,此方法不适合做全面的注错测试。
4 结束语
针对Virtex系列FPGA单粒子翻转问题,比较了定时刷新和回读刷新2种实现方案,对FPGA进行回读,能够检测FPGA是否发生了单粒子翻转,而对FPGA进行部分重配置,则降低了FPGA的单粒子累积效应,并修复了受到单粒子翻转影响的系统功能。在实现方式上提出了自主刷新方式,以及详细的说明和对比,改进了外控刷新方式的抗单粒子技术手段,减少了硬件资源的使用。通过JTAG口故障注入试验验证了自主刷新方案的可行性,为进一步研究FPGA的空间应用提供技术参考。
[1] 刑克飞.空间辐射效应对SRAM 型FPGA的影响[J].微电子学与计算机,2006,23(12):107 -110.
[2] Xilinx,Inc.XAPP988,Correcting Single-Event upsets in Virtex-4 platform FPGA configuration memory[S].
[3] 王浩波,郭金鹏.星载环境下可重构技术分析[J].无线电工程,2012,42(1):40-42.
[4] Xilinx,Inc.XAPP1088,Correcting Single - Event Upsets in Virtex -4 FPGA Configuration Memory[S].
[5] Xilinx,Inc.XAPP779,Correcting Single - Event Upsets in Virtex - II Platform FPGA Configuration Memory[S].
[6] 齐培红,刘金刚.三模冗余中局部重构及模块同步技术研究[J].电子设计,2010,26(2-2):183 -185.
[7] Xilinx,Inc.XAPP071,Virtex -4 FPGA Configuration User Guide[S].
[8] Xilinx,Inc.XAPP989,Correcting Single-Event Upsets with a Self-Hosting Configuration Management Core[S].
[9] Xilinx Inc.Xilinx TMRTooluserguide[S].UG156,2006.
[10]周秀娟,叶荣润.Virtex-Ⅱ系列FPGA的回读与部分重配置[J].现代无线电技术,2012,35(13):159-161.