龚 健,杨孟飞
(1.北京控制工程研究所,北京100190;2.空间智能控制技术重点实验室,北京100190;3.中国空间技术研究院,北京100094)
技术交流
一种基于FPGA位流回读与重配置的空间硬件容错方法
龚 健1,2,杨孟飞3
(1.北京控制工程研究所,北京100190;2.空间智能控制技术重点实验室,北京100190;3.中国空间技术研究院,北京100094)
分析FPGA的配置数据帧格式以及整个器件中配置数据帧的类型和分布,在此基础上给出具体的位流回读故障检测方法和重配置容错方法,最后给出了实现该容错方法的一个实例.论文研究可为星上拟采用基于SRAM的FPGA的各分系统电路容错设计所借鉴.
容错;基于SRAM的FPGA;空间应用;位流回读;重配置
现场可编程门阵列(FPGA,field programmable gate array)因其逻辑集成度高,使用方便,开发成本低,不但广泛用于民用和工业领域,而且越来越多地应用到空间领域,目前在卫星控制计算机、执行机构、敏感器,以及载荷的电子线路中都有相当数量的应用.基于静态随机存储器(SRAM,static random accessmemory)的FPGA是FPGA中最为常用的一种,与基于反熔丝的FPGA相比其工艺先进,能被多次重复编程,因此使用更为方便,但由于这类器件中的SRAM对空间单粒子效应较为敏感,在空间环境中的可靠性问题一直是影响该类器件广泛应用的关键问题.因此,解决基于SRAM的FPGA的空间容错问题,能够极大促进其在空间领域的应用,提高空间硬件系统的设计水平.
目前,针对FPGA的容错方法大致可以分成3类,第一类沿袭以多模冗余方式为主的传统容错设计方法,例如文献[1]采用3片FPGA实现TMR容错系统,并能够在一模发生故障的情况下进行离线故障检测;文献[2]实现了容错处理器LEON,采用奇偶校验、三模冗余(TMR,triple modular re-dundancy)、片上检错纠错等多种容错方法.第二类利用FPGA可重配置功能进行动态故障检测和故障修复,实现系统动态重组,例如采用内建自测试方法在FPGA内生成一小块滚动区域,对其进行离线测试,而其他区域正常工作,当该区域测试完成,通过部分在线重配置把该区域移动到一个新的区域[3-4];文献[5]把 FPGA分成小块,检测出故障后利用重配置功能隔离故障块,用其他块替代故障块从而实现容错.此外还有上述两类方法的混合使用,例如文献[6]在FPGA上实现可重配置容错处理器,系统采用三模微处理器表决机制,而整个FPGA可以实现重新配置.第三类是把进化思想与FPGA可重配置功能相结合的进化容错方法,这类方法不用预先设计容错策略,而是利用进化算法在线动态改变电路结构或功能,具有自修复和自适应的智能特性,在这类方法的研究中多采用Xilinx公司的Virtex系列FPGA[7-9].在上述3类方法中,第二类和第三类都利用FPGA的可重配置功能,是颇具前景的容错方法.
本论文面向空间应用环境,针对基于SRAM的FPGA,并以Xilinx公司的Virtex系列FPGA作为代表,在详细分析FPGA配置命令和配置数据帧格式的基础上,给出了在线位流回读的故障检测方法以及在线重配置的容错方法,为星上采用FPGA设计的硬件电路提供一种容错方法.
在位流回读与重配置的容错方法中,配置位流回读通过配置命令发起,回读的配置数据以数据帧的形式返回,重配置通过配置命令和配置数据帧结合的形式实现,因此配置命令和配置数据帧是实现容错方法的关键手段.
1.1 配置命令
位流数据的回读和重配置都是由配置命令和配置数据帧共同完成.配置命令是由Xilinx公司定义的一系列二进制代码,通过把一系列配置命令写入FPGA的内部配置寄存器来启动配置数据的回读.FPGA的内部配置寄存器名称及地址如表1所示,配置命令的名称和命令码如表2所示.在对配置数据进行回读或是写入时,需要按照一定顺序把配置命令和配置数据写入到制定的配置寄存器.
表1 内部配置寄存器Tab.1 Inside configuration register
表2 配置寄存器命令Tab.2 Configuration register command
1.2 配置数据帧
FPGA的配置数据需要以帧格式进行回读和写入.Virtex系列FPGA配置数据帧的基本结构由3部分组成:①CLB,②IOB,③Block SelectRAM.为了方便描述,定义表3所示变量.整个Virtex系列FPGA结构以CLB阵列为主,其阵列的组成元素是CLB,规模是Chip-Rows×Chip-Cols.每列CLB的顶端有两个IOB,底端有两个IOB.CLB阵列两侧是两列Block SelectRAM,每列Block SelectRAM的行数RAM -Rows=Chip-Rows/4,对于Virtex系列Chip-Rows都是4的整数倍.Block SelectRAM的两侧是两列IOB,每行CLB的左右两侧各对应3个IOB,因此两列IOB的行数IOB-Rows=Chip-Rows×3.以XCV1000为例,其CLB结构是Chip-Rows×Chip-Cols=64× 96,Block SelectRAM的行数为RAM-Rows=Chip-Rows/4=16,CLB顶端IOB的总数为Chip-Cols×2 =192,底端的IOB总数也是192,两侧IOB的行数为IOB-Rows=Chip-Rows×3=192.
Virtex系列FPGA的配置数据呈现位阵列的结构.位阵列分成垂直的帧(frame),每个帧具有1位宽,长度从阵列的顶端到底端,跨越整个CLB列或Block SelectRAM列.帧是配置位阵列的基本组成单位,也是从配置存储器中读写的最小单位.多个帧组成列(column).Virtex系列FPGA配置帧的组成如表4所示,Center列包括4个全局时钟的配置;两个IOB列包括器件左右两列IOB的配置信息;主要的列是CLB列,每个CLB列包括一列CLB的配置信息及该列CLB顶端两个IOB和底端两个IOB的配置信息.也就是说,IOB分成两类,一类是位于器件顶端和底端的两行IOB,属于CLB帧;另一类是器件左右两侧的两列IOB,形成IOB列.其余两类列与Block SelectRAM相关,Block SelectRAM Content列包括Block SelectRAM的内容信息,Block SelectRAM Interconnect列包括Block SelectRAM的互联信息.
表3 Virtex系列FPGA组成结构变量Tab.3 Variables relating to Virtex FPGA architecture
表4 Virtex系列FPGA配置数据帧的组成Tab.4 Organization of Virtex FPGA configuration frames
配置数据帧的地址空间分成两种块(block)类型地址:CLB类型和RAM类型.RAM块类型只包括所有Block SelectRAM Content列,而不包括Block SelectRAM Interconnect列;其余的列属于CLB块类型.CLB块类型的所有帧数按照公式(1)计算,RAM块类型的所有帧数按照公式(2)计算.以XCV1000为例,其CLB块类型帧数=8+48×96+54×2+ 27×2=4778帧.
CLB块类型和RAM块类型的地址空间都分成主(major)地址和次(minor)地址.每一列在CLB块或RAM块中具有唯一的主地址,而每一帧在列中具有唯一的次地址.这样,每一帧位置可由3层地址确定:块类型、主地址(即列地址)和次地址(即帧地址).对于CLB块类型,主地址以Center列为“0”开始,左右交替递增,偶数地址在左侧,奇数地址在右侧,Center列后是CLB列,其次是IOB列,最后是Block SelectRAM Interconnect列.对于RAM块类型,左侧Block SelectRAM Content列的主地址是“0”,右侧列的主地址是“1”.以XCV1000为例,配置数据帧组成结构和主帧地址如图1所示.
图1 Virtex系列XCV1000的帧结构和主地址Fig.1 Frame structure and major address of XCV1000(Virtex Serial)
帧的大小取决于器件CLB的行数Chip-Rows, CLB列帧的有效长度根据公式(3)进行计算,其中每行CLB占用每个CLB列帧中的18位,每个CLB列顶端两个IOB和底端两个IOB的配置信息共占用两个18位.帧的实际长度是在有效帧长度后补“0”使帧长成为32的整数倍,最后再加上32位填充数据.以XCV1000为例,有效帧长为18×(Chip-Rows+2)=18×(64+2)=1188位,补“0”使帧长成为32的整数倍,即帧长38字,再加上一个填充字,最后帧长为39字,占用39×32=1248位.
根据式(3),每个CLB在CLB列帧中占18位,每个CLB列包含48帧,因此对于每个CLB,其配置占用=48×18=864位,这些配置信息主要包括LUT中的配置数据、选择开关配置数据和通用布线矩阵配置数据.其中LUT的配置区域称为LUT SelectRAM,每个LUT有4输入1输出和16位配置数据,分布在连续的16位次地址中,且只占用每个帧中的1位.LUT SelectRAM中配置数据按照反码存放,以一个4输入与非门为例,其LUT配置数据应该为1000000000000000,但LUT SelectRAM中存放的数据是0111111111111111.
位流回读与重配置的容错方法包括两个部分,即位流回读故障检测方法和重配置容错方法.在空间环境中,卫星电子器件受到辐射的影响主要产生总剂量效应和单粒子效应,这两种影响都会引起器件的故障甚至失效,对于总剂量效应主要从器件工艺方面进行解决,而对于单粒子效应则主要采用容错方法.在基于SRAM的FPGA中,配置存储器采用SRAM工艺实现,是对单粒子翻转最为敏感的部分,而配置位流回读和重配置都是针对配置存储器SRAM实施的方法,因此位流回读与重配置的容错方法可以较好解决空间单粒子翻转对FPGA的影响.
配置命令和配置数据帧都通过selectMAP接口与FPGA内部配置寄存器进行通信,这种方式能在不打断FPGA工作的情况下对配置存储器进行访问.重配置和配置回读的电路组成及selectMAP接口回读配置位流需要信号如图2所示,图中重配置和配置回读控制逻辑的功能是产生满足重配置和配置回读的时序,发送配置命令帧,以及把回读的配置数据写入到存储器SRAM中.存储器SRAM用于保存二进制配置文件(.bit)、二进制回读文件(.rbb)、掩码文件(.msk)和回读的配置数据;故障检测电路用于比较原始配置数据与回读的配置数据,记录故障信息.
图2 Virtex系列FPGA重配置和位流回读电路连接Fig.2 Virtex FPGA reconfiguration and bitstream readback circuit
2.1 基于位流回读的故障检测方法
Virtex系列FPGA配置位流回读有两种方式:回读验证(readback verification)和回读捕获(readback capture).回读捕获是获取FPGA内部触发器的状态,用于进一步了解FPGA的工作状态.回读验证能够在不中断FPGA工作的情况下,获取配置存储器中数据,判断配置数据是否发生故障.采用回读验证方式的配置回读实现故障定位有3个主要步骤.
(1)用ISE软件生成位流回读相关文件
配置位流回读需要借助Xilinx公司提供的ISE软件.对于用户设计,如果需要启动回读功能,则在ISE软件生成配置位流文件时需要设置的开关主要有(这些开关也可以通过图形界面的选项设置):
-m表示生成一个掩码文件(.msk)
-g readback表示生成回读比特文件(.rbb)
-g persist:X8表示使selectMAP接口在FPGA完成配置后仍保持有效
例如:bitgen-m-g readback-g persist:X8…
中国是人口大国,水资源含量相对较少,目前面临着严重的水资源危机。在农业中,农田灌溉属于一项用水量较大的项目,在农田灌溉过程中可合理的优化农田灌溉技术,在节约水资源的基础上达到对农田的灌溉。随着科技的不断创新,相关技术与节水相互促进与发展,能有效的保障水资源的合理配置。在农田水利当中,应该运用科学的灌溉制度,并在节约水资源的基础上,提升农田的生产效率,有效实现水利工程的可持续进步与发展,一方面能够对水资源配置进行合理的优化和管理,另外也能有效的促进农业经济的可持续进步与发展[2]。
开关设置后再生成下载的配置位流文件,就可以同时产生配置回读所需要的二进制回读文件(. rbb)和掩码文件(.msk).
(2)启动配置回读及配置数据存储
Virtex系列FPGA配置数据帧的读写采用命令方式,最小数量是1帧,最大数量是所有的CLB块类型帧或一个Block SelectRAM Content列所包含的帧.CLB块类型帧和RAM块类型帧需要分开读取,而且RAM块类型帧中每个Block SelectRAM Content列所包含的帧需要分开读取.因此,整个FPGA配置位流数据的读出需要3个时序:一个用于CLB块类型帧,两个用于RAM块类型帧.
RAM块类型帧包含的是用户设计信息,而CLB块类型帧包含所有的配置信息,因此只需回读CLB块类型帧.在采用图3结构实现的电路中,配置位流回读的流程如下:
1)使片选信号*CS和写信号*WRITE有效,载入一系列回读命令,如图3所示.回读命令也可从二进制回读文件(.rbb)、ASCII码回读文件(.rba)或掩码文件(.msk)的文件头中获取.
2)使片选信号*CS和写信号*WRITE无效,使配置数据信号D7到D0空闲,不被其他信号驱动.
3)使片选信号*CS有效,使写信号*WRITE保持高电平,这样回读的配置位流数据就在配置时钟信号CCLK的每个上升沿由D7到D0输出.
图3 配置回读的命令Fig.3 Configuration readback commands
(3)回读后配置数据比较
对配置存储器SRAM中的故障定位采用配置位流比较方法,即把回读的配置数据帧与二进制回读文件(.rbb)中原始配置数据进行比较.在所有回读数据(包括回读验证和回读捕获)中,有3种数据不参加比较:
①填充数据:用于分隔数据帧;
②RAM数据:是基于LUT的RAM及BRAM中的数据,这些数据随用户设计而改变;
③捕获数据:是内部寄存器状态数据.
其中,填充数据的位置可以根据配置数据帧的格式来计算和确定,RAM数据和捕获数据通过掩码文件(.msk)进行过滤.
故障检测过程是根据掩码文件对读回的配置数据和原始配置数据按位比较,其中掩码文件中为0的数据位参加比较,掩码文件中为1的数据位不参加比较.在掩码文件中为0的数据位的位置,如果读回的配置数据和原始配置数据一致,则配置存储器SRAM中的相应位置没有发生故障;否则,配置存储器SRAM中相应位的配置数据发生了翻转,形成stuck-at故障,需记录故障位置.
2.2 基于重配置的容错方法
利用FPGA的重配置实现故障修复(即容错)主要有3类方法:①全局重配置,是对FPGA配置存储器SRAM全部重写,重配置完成后需要重新启动FPGA,一般可以解决整个器件的单粒子翻转故障;②部分重配置,是对FPGA一部分进行重写,不影响其他部分正常工作,需要首先采用总线宏对各模块功能进行划分,实现技术比较复杂;③刷新方法(即scrubbing),是在FPGA工作间隙重新装入整个配置,其装入过程是分多个周期,每个周期装入一帧配置.本论文采用全局重配置方式实现容错,其优点是实现较为简单可靠,且可以修复整个FPGA中的非永久性单粒子翻转故障,该方法分两个步骤:1)用ISE软件生成用于重配置的位流文件;2)配置位流的写入.
(1)用ISE软件生成用于重配置的位流文件
重配置的实现需要借助Xilinx公司提供的ISE软件.用ISE软件对电路设计进行综合、布局布线,最后生成的二进制配置文件(.bit)即可用于实现重配置,该文件中包括需要下载的配置位流数据,而且配置位流数据还形成了配置数据帧的格式,此外该文件中还包括配置命令.
(2)配置位流的写入
在检测到SRAM中出现故障的情况下,重配置容错电路启动重配置控制逻辑对FPGA进行重新配置,即在一定时序逻辑的配置下通过SelectMAP接口把二进制配置文件(.bit)写入FPGA,具体的时序配合和配置写入流程如图4所示.
图4 重配置的流程Fig.4 Reconfiguration flowchart
配置数据的写入(寄存器命令写入和帧数据写入)被封装成数据包,有两种数据包:1型数据包和2型数据包.1型数据包用于寄存器命令写入,1型和2型数据包组合用于帧数据写入.每型数据包都分为包头和数据两个部分.1型和2型数据包的包头结构如图5所示.1型数据包最多包括数据长度为0到(211-1)为2047字(32位),2型数据包最多包括数据长度为0到(220-1)为1,048,575字(32位).
图5 1型和2型配置数据包的结构Fig.5 Structures of typeⅠand typeⅡconfiguration packages
在对FPGA的配置写入时,写入的配置命令和配置数据帧的顺序如表5所示,全部配置数据写入FPGA后,FPGA重新启动,进入正常工作状态.
表5 数据写入顺序表Tab.5 Data writing sequence table
图6是位流回读和重配置硬件容错方法实现的一个实例,整个电路由3部分组成:1)监控计算机;2)位流回读和重配置电路;3)目标电路.
1)监控计算机通过串口与位流回读和重配置电路连接,运行基于Windows的应用软件,能够采用命令方式启动或停止对目标电路的位流回读和重配置,并能够监控和存储位流回读和重配置电路的工作状态;
图6 位流回读和重配置硬件容错方法的实现Fig.6 Implementation of bitstream readback and reconfiguration hardware fault tolerance method
2)位流回读和重配置电路接收监控计算机的命令,执行对目标电路的故障检测和重配置容错,主要由3个部分组成:LEON3处理器IP核、“重配置与位流回读控制逻辑”,以及存储回读位流和配置位流的SRAM.LEON3处理器IP和“重配置与位流回读控制逻辑”综合在一片Virtex公司的Spartan 3系列FPGA(XC3S1000)中实现,其中“重配置与位流回读控制逻辑”用于和目标电路接口,提供对目标电路位流回读和重配置需要的逻辑功能,LEON3处理器上运行故障检测和重配置控制软件,接收监控计算机发出的命令,控制位流的回读和比较来检测故障,控制重配置过程实现容错.
3)目标电路是故障检测和容错的对象,是用户逻辑的载体,采用Xilinx公司的Virtex系列FPGA (XCV1000)实现.FPGA工作于SelectMAP配置模式,位流的配置和回读接口以8位形式与位流回读和重配置电路连接.
面向空间应用领域,论文针对基于 SRAM的FPGA研究了通过位流回读和重配置实现硬件容错的一种方法.配置数据帧包含回读与重配置的全部位流数据,是实现位流回读与重配置的关键,因此论文对配置数据帧格式进行了详细分析,并给出其大小和地址计算方法.在此基础上,给出采用位流回读和重配置实现的硬件容错的电路结构以及实现中关键信号的时序关系,给出故障检测和重配置故障修复方法的详细流程和步骤.最后,提出一种在Virtex系列FPGA上实现位流回读和重配置容错设计的具体实现方案.
[1] D’Angelo S,Metra C,Pastore S,et al.Fault-tolerant voting mechanism and recovery scheme for TMR FPGA-based systems[C].IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems,M ilano, Italy,Nov.2-4,1998
[2] Gaisler J.A portable and fault-tolerant microprocessor based on the SPARC V8 architecture[C].IEEE International Conference on Dependable Systems and Networks,Noorwijk,Netherlands,June 23-26,2002
[3] AbramoviciM,Stroud C.BIST-based detection and diagnosis ofmultiple faults in FPGAs[C].IEEE International Test Conference,Murray Hill,NJ,USA,Oct 3-5, 2000
[4] Stroud C,Matthew L,Nall J,et al.On-line BIST and diagnosis of FPGA interconnect using roving STARs[C].IEEE 7thInternational On-Line Testing Workshop,Charlotte,NC,USA,July 9-11,2001
[5] Lach J,Mangione-Smith W H,Potkonjak M.Enhanced FPGA reliability through efficient run-time fault reconfiguration[J].IEEE Transactions on Reliability,2000, 49(3):296-304
[6] Rong Y.Triplemodular redundancy(TMR)in a configurable fault-tolerant processor(CFTP)for space applications[D].California:Department of Electrical and Computer Engineering,Naval Postgraduate School,2003
[7] Tyrrell A M,Hollingworth G,Smith S L.Evolutionary strategies and intrinsic fault tolerance[C].IEEE 3rdNASA/DoD Workshop on Evolvable Hardware,York Univ.,UK,July 2001
[8] Lohn J,Larchev G,DeMara R.Evolutionary fault recovery in a Virtex FPGA using a representation that incorporates routing[C].IEEE International Parallel and Distributed Processing Symposium,Moffett Field,CA, USA,April 22-26,2003
[9] Upegui A,Sanchez E.Evolving hardware with selfreconfigurable connectivity in Xilinx FPGAs[C].IEEE 1stNASA/ESA Conference on Adaptive Hardware and Systems,Switzerland,June 15-18,2006
An FPGA Bit-Stream Read Back and Reconfiguration Based Hardware Fault Tolerance M ethod for Space App lications
GONG Jian1,3,YANG Mengfei2
(1.Beijing Institute of Control Engineering,Beijing 100190,China;2.Science and Technology on Space Intelligent Control Laboratory,Beijing 100190,China;3.China Academy of Space Technology,Beijing 100094,China)
In this paper,the FPGA configuration frame format and configuration frame type and distribution in the whole device is analyzed.Based on the analysis,the detail of bit-stream read back fault detection method and reconfiguration fault tolerance method is presented.Finally,a circuit implementation with this paper’s fault tolerance method is illustrated.The research contributes to the circuit fault tolerance design method of all satellite subsystems that use SRAM-based FPGAs.
fault-tolerance;SRAM-based FPGA;space application;bit-stream read-back;reconfiguration
TV211
A
1674-1579(2012)01-0034-06
龚 健(1975-),男,工程师,研究方向为计算机应用技术和空间容错技术;杨孟飞(1962-),男,研究员,研究方向为空间控制计算机系统和航天器控制系统.
2011-08-02
DO I:10.3969/j.issn.1674-1579.2012.01.006