一种基于Virtex5器件的位流文件解析方法及定时刷新方法与流程

文档序号:14251144阅读:710来源:国知局
一种基于Virtex5器件的位流文件解析方法及定时刷新方法与流程
本发明属于刷新重构技术。
背景技术
:空间辐射环境会导致sram型fpga发生单粒子翻转问题,其严重性将可能引起系统程序的“异常”、“紊乱”或者“死机”等故障,降低星上数字处理设备的可靠性,目前星上fpga的加固主要依靠定时刷新,而刷新的核心是对位流文件中bram资源的抽取,通过抽取对配置文件重新组帧,按照一定的配置时序从而实现刷新,器件厂商已不再提供virtex5以上器件的相关资料。文献“一种面向航天应用的高可靠fpga设计架构研究”,该文在分析以往sram型fpga系统设计的不足后提出了一种采用三模冗余架构(tmr)并对fpga配置区域进行刷新重载的解决方案,采用马尔可夫模型对该设计方案进行了可靠性评估和仿真。“基于sram型fpga的容错性设计”,该文介绍了一种基于xilinx公司vertix-ii系列fpga的容错性设计,该设计深入研究了动态刷新(scrubbing)原理,利用反熔丝型fpga作为控制器实现了对sram型fpga的配置数据进行ms级的周期刷新,并对2种fpga加入了三模冗余(triplemodularredundancy,tmr)及回读比较重加载方法。“sram型fpga抗单粒子翻转技术研究”,绍了几种抗单粒子翻转方法,并对其进行了比较分析,实现了sram型fpga抗单粒子翻转的系统设计,采用定时刷新的方法抑制翻转位累加,同时通过故障注入的方式对系统进行了实验测试。专利:“基于selectmap的宇航fpga通用刷新电路及其实现方法”:“一种sram型fpga的配置、刷新与程序上注一体化系统”上述三份文献主要针对virtex2器件的空间单粒子防护开展研究,并采用trm与配置刷新相结合的加固方法。上述两份专利均是针对virtex2器件开展的刷新技术研究,xilinx公司提供了virtex2相关刷新材料,从virtex5后xilinx不再提供任何相关刷新的资料,virtex5相对于virtex2在器件资源类型、帧结构、配置文件的大小均发生了较大变化,对于bram的资源大小无从获知,因此存在一定的差异性。技术实现要素:本发明的技术解决问题是:克服现有技术的不足,提供了一种利用空帧数据统计在轨卫星原始数据误码的方法。本发明的技术解决方案是:一种基于virtex5器件的位流文件解析方法,步骤如下:(1)对virtex5型至少8个系列的器件进行底层架构分析,确定每个系列器件的资源类型;(2)对每个系列器件的位流文件帧结构进行分析,确定每帧的bit数以及包含的资源类型、大小、位置,计算位流文件的总bit数;(3)根据步骤(1)、(2)的结果,通过ise生成virtex5型对应系列器件的位流文件,根据生成的位流文件的总bit数与步骤(2)中计算的总bit数进行比较,判断步骤(1)(2)的分析是否准确,若准确执行步骤(4),否则重新从步骤(1)开始分析;(4)针对每个系列的器件,根据位流文件的总bit数构建以资源类型长度为未知数的多元方程,得到一个多元方程组,求解该方程组,得到资源类型的大小。进一步的,资源类型包括逻辑资源clb、数字处理单元dsp,逻辑互联资源int、io资源iob,时钟管理单元cmt;时钟资源clk,ram资源bram;高速接口资源gt。进一步的,多元方程的表达形式如下:a*(a1*xclb+a2*xdsp+a3*xint+a4*xiob+a5*xcmt+a6*xclk+a7*xbram+a8*xgt)=b式中,xclb、xdsp、xint、xiob、xcmt、xclk、xbram、xgt分别为资源类型的大小;a1—a8表示同一系列器件资源类型的列数、a表示器件行数、b表示对应系列器件位流文件的总bit数。进一步的,a1—a8根据fpgaedit中的版图信息确定。一种基于virtex5器件的位流文件定时刷新方法,步骤如下:第一步,对virtex5型待刷新器件进行底层架构分析,确定该器件的资源类型;第二步,对该器件的位流文件帧结构以及帧地址进行分析,确定每帧的bit数以及包含的资源类型、大小、位置,计算位流文件的总bit数;在帧地址分析时,确定器件的行地址和列地址;第三步,根据第一步,第二步的结果,通过ise生成virtex5型对应系列器件的位流文件,位流文件生成时去掉生成srll6和distributeram寄存器选项;第四步,分析位流文件,提取位流文件头部冗余信息,配置数据,尾部冗余信息三部分信息中的配置数据信息;第五步,根据上述的方法计算得到各资源类型的大小,在位流文件中删除bram的内容部分,根据第二步得到的帧结构分析结果,修改位流文件中30004000后4个字节的控制字帧地址,得到新的刷新用文件;第六步,将第五步得到的刷新文件存储在配置存储器中,由外部控制器根据预设的刷新间隔将刷新文件写入待刷新fpga,实现fpga的定时刷新。进一步的,外部控制器读取配置存储器的刷新用文件,配置待测试fpga的cs_b、wr信号,确定定时刷新序列;其中,读取的刷新用文件中的内容作为定时刷新序列中的data数据;外部控制器根据定时刷新序列将刷新用文件写入被刷新fpga。进一步的,所述的外部控制器采用actel公司的抗辐射反熔丝fpga。进一步的,所述的配置存储器采用xilinx公司的xqr17v16存储器。本发明与现有技术相比有益效果为:本发明针对目前virtex5型fpga在空间应用中的单粒子翻转问题,突破了器件厂商对核心关键技术的封锁,提出了一种位流文件解析方法,适用于所有virtex5系列fpga的位流文件解析。该方法能够为航天器星载数据信息处理系统中sram型fpga的单粒子防护提供有效的防护措施,实现器件的动态刷新,有效提高系统可靠性,提升防护性能,并且该技术已在多个型号中应用,取得良好的效果。因此,本发明可具备广阔的市场应用前景附图说明图1为本发明位流文件解析流程图;图2为virtex5型fpga组织结构框图;图3为本发明位流文件帧结构图4为virtex5帧地址图5为virtex5的行地址图6为virtex5列地址图7为本发明virtex5刷新结构具体实施方式下面结合附图1及实例对本发明做详细说明。本发明涉及一种基于virtex5器件的位流文件解析方法,步骤如下:(1)对virtex5型至少8个系列的器件进行底层架构分析,确定每个系列器件的资源类型;底层架构分析:由于配置存储器对用户来说是不可见的,需要对sram型fpga的配置框架、配置文件组织结进行研究,了解fpga的配置文件,下图2根据fpgaedit提取了virtex5的资源类型及组织结构。该图描述了virtex5型fpga内部组织结构,包含了各资源类型(如clb、dsp、bram等)在fpga内部的组成,在底层架构中不同的版图形状代表了不同的资源类型。通过对virtex5型fpga不同系列进行底层分析,确定virtex5型fpga总共包含下列八个资源类型:逻辑资源clb、数字处理单元dsp,逻辑互联资源int、io资源iob,时钟管理单元cmt;时钟资源clk,ram资源bram;高速接口资源gt。不同系列的fpga包含的资源类型可能不同,但是最多包含上述8个资源类型。因此要解析位流文件确定资源类型的大小,至少需要对8个virtex5型不同系列的器件进行底层架构分析,以备后续求解方程组使用。(2)对每个系列器件的位流文件帧结构进行分析,确定每帧的bit数以及包含的资源类型、大小、位置,计算位流文件的总bit数;位流文件组织结构:例如virtex5fx100t系列器件每帧1312bit,包含20个clb或40个iob或4个bram,其中每一帧数据包含32bithclk内容,其中640bit位于hclk的上方,另外640bit位于hclk的下方,图3描述了位流文件的帧结构组成,帧是fpga位流文件的最小单位,virtex5系列fpga包含固定帧长1312bit(640+640+32=1312bit),包含41个32位字。通过器件手册可得到fx100t共30016帧,按照一帧1312bit计算,fx100t共30016*1312=39380992bit(3)根据步骤(1)、(2)的结果,通过ise生成virtex5型对应系列器件的位流文件,根据生成的位流文件的总bit数与步骤(2)中计算的总bit数进行比较,判断步骤(1)(2)的分析是否准确,若准确执行步骤(4),否则重新从步骤(1)开始分析;(4)针对每个系列的器件,根据位流文件的总bit数构建以资源类型长度为未知数的多元方程,得到一个多元方程组,求解该方程组,得到资源类型的大小。首先分析位流文件构成:位流文件是二进制文件,可以分为三个部分:头部冗余信息,配置数据,尾部冗余信息。其中头部信息包含了当前ise工程名字、编译时间等信息,因此头部信息的长度是不确定的;第二部分是配置数据流,以0xffffffffaa995566开头,aa995566是xilinx指定的同步字符。基本格式就是指令+数据,很清晰地给出哪个字节是什么命令,用来干什么。例如bit文件中,加载数据帧之后,有cmd寄存器的命令:start0x5(0101b)表示开始start-upsequence;最后一部分是尾部信息,由16个32bit的空操作指令:0x20000000组成。这些表示空操作,这部分信息可以不用加载到fpga。这是为了在selectmap时能让用户多给一些cclk,完成startup。根据以上分析,确定资源类型、帧结构后,通过ise生成多个系列的器件的位流文件,构建如下多元方程:a*(a1*xclb+a2*xdsp+a3*xint+a4*xiob+a5*xcmt+a6*xclk+a7*xbram+a8*xgt)=b式中,xclb、xdsp、xint、xiob、xcmt、xclk、xbram、xgt分别为资源类型的大小;a1—a8表示同一系列器件资源类型的列数、a表示器件行数、b表示对应系列器件位流文件的总bit数。例如本例中通过对10个不同系列的virtex5型器件进行分析,构建下列多元方程组:以virtex5fx100t计算各资源bit数:通过fpgaedit确定器件行数为8行,各资源列数如下:资源类型clbdspiobclkcmtbramintbramgt列数564311991a*(a1*xclb+a2*xdsp+a3*xint+a4*xiob+a5*xcmt+a6*xclk+a7*xbram+a8*xgt)=b在这里a=8,a1—a8分别为:56、4、9、3、1、1、9、1,b根据(3)的结果得到,得到方程如下:8*(56*xclb+4*xdsp+9*xint+3*xiob+1*xcmt+1*xclk+9*xbram+1*xgt)=30016通过以上方法对不同器件分析得到如下方程组:eq1:'7*(111*xclb+20*xdsp+15*xint+2*xiob+4*xcmt+1*xclk+15*xbram+2*xgt)+28=50176';%sxc5vlx20teq2:'9*(103*xclb+7*xdsp+9*xint+2*xiob+4*xcmt+1*xclk+9*xbram+1*xgt)+36=49932';%sxc5vlx30eq3:'7*(76*xclb+8*xdsp+11*xint+2*xiob+4*xcmt+1*xclk+11*xbram+1*xgt)+28=34412';%sxc5vfx30teq4:'6*(111*xclb+18*xdsp+15*xint+2*xiob+4*xcmt+1*xclk+15*xbram+2*xgt)+24=42672';%sxc5vlx30teq5:'10*(111*xclb+18*xdsp+15*xint+2*xiob+4*xcmt+1*xclk+15*xbram+2*xgt)+40=71120';%sxc5vsx35teq6:'9*(173*xclb+20*xdsp+17*xint+2*xiob+4*xcmt+1*xclk+17*xbram+2*xgt)+36=87408';%sxc5vlx50teq7:'6*(95*xclb+12*xdsp+12*xint+1*xiob+2*xcmt+1*xclk+12*xbram+1*xgt)+24=34776';%sxc5vsx50teq8:'8*(95*xclb+12*xdsp+12*xint+1*xiob+2*xcmt+1*xclk+12*xbram+1*xgt)+32=46368';%sxc5vfx70t通以上多元方程可得到不同资源类型的文件大小,实现对位流文件的解析。一种基于virtex5器件的位流文件定时刷新方法,包括如下几个步骤:第一步,对virtex5型待刷新器件进行底层架构分析,确定该器件的资源类型;第二步,对该器件的位流文件帧结构以及帧地址进行分析,确定每帧的bit数以及包含的资源类型、大小、位置,计算位流文件的总bit数;在帧地主分析时,确定器件的行地址和列地址;位流文件帧结构的分析参见上面解析方法中的介绍,此处不进行赘述。帧地址的分析:器件访问帧内容需要遵循一定的地址格式,virtex5器件中32bit描述一个帧地址,帧格式如图4所示:virtex5系列fpga的帧地址,包含保留字、块类型、上/下半部分、行地址、主地址(列地址)、子地址(帧内地址)五部分,共32bit组成。如图5所示,virtex5系列fpga的行地址,根据上/下半部分划分,上下两部分为对称关系,起始地址为0。在行地址内包含列地址,列地址用于在该行内索引不同的资源类型,其中bram包含两种类型的地址,如图6所示:表格中的第二行内容在器件配置阶段用到,如果直接指定bram的内容,需要采用表格中第三行的地址,这时相应的块类型也需要随之变化。第三步,根据步骤(1)、(2)的结果,通过ise生成virtex5型对应系列器件的位流文件;刷新时不能使用srll6、distributeram和bram块,否则会导致配置数据重新初始化,系统功能中断,所以在用ise软件生成配置文件时需去掉生成srll6和distributeram寄存器选项。第四步,分析位流文件,提取位流文件头部冗余信息,配置数据,尾部冗余信息三部分信息中的配置数据信息;第五步,根据权利要求4所述的方法计算得到各资源类型的大小,在位流文件中删除bram的内容部分,根据第二步得到的帧结构分析结果,修改位流文件中fdri寄存器(位于30004000后4个字节),该部分表示在刷新阶段需要写入的控制字个数,以32bit为单位,如第二步得到的总bit数是640000bit,计算得到的xbram是16000bit,那么删除bram后剩余624000bit,按照32bit为单位,624000除以32后得到19500,换算成16进制得到4c2c,那么这部分内容应填充50004c2c。第六步,将得到的刷新文件存储于xilinx公司的xqr17v16存储器中,采用actel公司的抗辐射反熔丝fpga用于刷新控制器代码实现,对功能fpga进行刷新。通过上述步骤别可实现对帧结构分析和bram资源抽取,bram资源在上述方程组xbram计算中得到,刷新过程需要删除bram的内容后进行重新组帧,刷新过程与配置时序不同:为了实现fpga的动态刷新,需要外部额外添加一个控制器,用于控制配置寄存器流水线式工作模式,完成配置命令及bram块的操作。本设计中采用actel公司的抗辐射反熔丝fpga,即a54sx32a作为外部控制器,配置存储器采用xilinx公司的xqr17v16。功能fpga采用xilinx公司virtex5系列xc5vfx130t,刷新结构如图7所示,配置存储器存储被刷新fpga的完整位流文件,系统上电后,外部控制器首先读取配置存储器的位流文件,把按照上述分析删除bram资源后的位流文件写入待刷新fpga中,刷新频率采用10mhz。外部控制器配置待测试fpga的cs_b、wr信号,写入序列见表1所示,其中step12需要根据不同的器件id对该刷新序列进行填充,器件id可在配置手册中获取,step23为刷新文件的总大小,按照32位字显示,显示格式为16进制格式,step24中的data数据为第五步中得到的刷新用文件,外部控制器通过控制时钟、数据、控制信号,把刷新数据流的写入被刷新fpga,刷新间隔在外部控制器中通过逻辑实现,最终实现对fpga器件的定时刷新。表1定时刷新序列(virtex5系列)本发明未详细说明部分属于本领域技术人员公知常识。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1