Fpga内rom映射区动态刷新纠错方法

文档序号:6434509阅读:368来源:国知局
专利名称:Fpga内rom映射区动态刷新纠错方法
技术领域
本发明涉及现场可编程逻辑门阵列(FPGA)技术领域,尤其涉及一种静态存储 (SRAM)型FPGA内部配置区动态刷新纠错方法。
背景技术
Xilinx公司出产的静态存储(SRAM)型FPGA器件(以下称为Xilinx FPGA)运行时的逻辑状态由配置区的数据决定。但是Xilinx FPGA器件在实际工作过程中可能因外部工作环境的干扰(如电压突变、无线脉冲干扰、高能粒子撞击等)而使FPGA的配置区数据发生改变,从而影响FPGA嵌入逻辑的正常运行。目前一种保证配置区数据正确性的解决方式为如图1所示,使用外部控制电路将存储于程序存储器(PROM)的配置文件中的配置数据循环重配置到FPGA的配置区,从而实现FPGA配置区数据的动态刷新。该方法可以在不中断FPGA正常工作的情况下,反复向 FPGA配置区写入正确的配置数据,确保发生错误的配置区数据能得到及时更新,从而增强 FPGA工作的可靠性。Xilinx FPGA的全部配置数据中既包括对FPGA的工作模式进行设置的指令,也包括将要写入FPGA的配置区的数据。当对FPGA的配置区进行循环重配置时,有部分指令和数据是不能被反复写入的,需要在重配置过程中屏蔽掉这部分不允许反复写入的数据,如果这些不允许反复写入的数据在FPGA工作过程中被重复写入,可能会改变FPGA嵌入逻辑的工作状态,导致FPGA不能正常工作。Xilinx公司的FPGA开发软件ISE在生成配置文件bit时,也会生成一个数据屏蔽文件*. 11,在该数据屏蔽文件*. 11中列出了不允许反复写入的配置数据在配置文件
bit中的位置。因此为了避免对不允许反复写入的配置数据进行刷新,该动态刷新方法改进为在动态刷新时,读取配置文件*. bit和屏蔽文件*. 11,根据两个文件进行数据分析, 只刷新允许反复写入的数据,从而避免写入屏蔽字。然而,这种解决方法具有如下缺陷(1)需要将配置信息和不允许重复写入的信息分别存放在2个不同的数据文件中,需要2块ROM芯片保存这2个数据文件,增加了硬件的使用,而且分析过程需要对两个文件中的信息进行解析,过程复杂。(2) FPGA中的块RAM资源可以为例化为ROM映射区使用,将这样的块RAM称为ROM 映射区,ROM映射区用来存储固定不变的数据,如工作参数、计算系数等。对于FPGA来说, ROM映射区在逻辑上为只读类型的存储区,但是由于其本质上还是RAM,因此有可能因外部环境的干扰而发生改变,如果能够对ROM映射区进行动态刷新,就可以保证ROM映射区所存储数据的正确性,而且刷新ROM映射区也不会干扰FPGA内部逻辑的正常运行。但是目前数据屏蔽文件*. 11中所列出的不允许反复写入的配置数据就包括了 ROM映射区中的数据,因此上述的解决方法不能对ROM映射区进行动态刷新。当配置过程结束后,若ROM中存储的数据内容受外部环境影响若发生不可控的改变,数据将一直保持为改变后的错误的值,直到重新对FPGA启动一次配置过程,这将导致FPGA内部的逻辑电路工作异常。为了解决ROM映射区刷新问题,目前一种保证ROM映射区存储的数据正确性的方式为如图2所示,采用三模冗余的设计方法,将一块ROM映射区替换成三块ROM映射区, ROM多数判决模块同时读取三块ROM中的数据,当大于或等于两块ROM中的数据相同时, 认为相同的数据即为正确的数据。这种方法需要占用三倍的块RAM资源,而且多数判决模块也需要占用额外的FPGA逻辑资源,造成资源使用量大,限制了它在实际工程实践中的应用。

发明内容
有鉴于此,本发明针对Xilinx FPGA内的ROM映射区在受到外部环境干扰导致存储的数据错误的情况,提供一种SRAM型FPGA配置区动态刷新纠错方法,在循环重复刷新配置区数据时,允许动态刷新ROM映射区的数据,能够保证ROM映射区中数据的正确性;而且与三模冗余方法相比,本发明不需要占用额外的FPGA逻辑资源,而且重启配置时不会中断 FPGA的工作,可以应用于需要FPGA连续工作的场合。该方案是这样实现的一种SRAM型FPGA内ROM映射区配置区动态刷新纠错方法,应用于SRAM型的FPGA, 该方法包括第一步FPGA开发软件ISE生成配置文件和屏蔽字文件;屏蔽字文件记载了屏蔽信息,所述屏蔽信息指示出禁止在FPGA嵌入逻辑工作状态下被动态刷新的配置信息在配置文件中的位置;第二步读取配置文件中的配置信息以及屏蔽字文件中的屏蔽信息,确定配置信息中禁止被动态刷新的部分以及允许被动态刷新的部分,并且将ROM映射区的配置信息归为允许被动态刷新的部分;第三步将各配置信息记载到一个新配置文件中,并且在新配置文件中标识出各配置信息是否允许被动态刷新;将所述新配置文件转换为二进制文件烧录到存储元件中;第四步进行动态刷新操作时,逻辑控制电路从所述新配置文件中读入配置信息及其标识,仅将标识为允许被动态刷新的配置信息动态刷新到FPGA配置区。其中,所述第三步具体包括根据读取的配置信息和屏蔽信息组成数据帧,每个数据帧中包括一个FPGA配置帧数据、对应的屏蔽字和数据帧承载的数据类型;所述屏蔽字表示数据帧是否允许被动态刷新,数据帧承载的数据类型包括指令和数据两种;将所有数据帧存放到一个新配置文件中,形成bin格式的二进制文件,并烧写入一个存储元件。其中,所述第四步具体包括在进行动态刷新操作时,逻辑控制电路从所述新配置文件中逐帧读入数据帧,根据数据帧中的屏蔽字过滤掉禁止重复写入的数据帧,仅将允许重复写入的数据帧还原为原始的FPGA配置帧数据,并写入FPGA配置区;在写入时,如果数据帧承载的数据类型为指令, 则直接写入,如果数据帧承载的数据类型为数据,则在写入数据后,进一步向FPGA填充冗余数据。
其中,所述数据帧的帧格式包括同步域、帧类型域、帧长度域和数据域;所述同步域,用于记载帧同步标记;所述帧类型域,用于记载屏蔽字和数据帧承载的数据类型;所述帧类型域包括4 类数据类型;第一类表示该数据帧所含内容为命令且不需要屏蔽;逻辑控制电路读入该类数据帧时,无论是对FPGA进行全局配置还是动态刷新,都将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区;第二类表示该数据帧所含内容为命令且需要屏蔽;逻辑控制电路读入该类数据帧时,当正在进行全局配置时,则将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区;而当正在进行动态刷新时,则不将该数据帧写入FPGA配置区;第三类表示该数据帧所含内容为数据且不需要屏蔽;逻辑控制电路读入该类数据帧时,无论是正在对FPGA进行全局配置还是动态刷新,都将该数据帧转换为原始的FPGA 配置帧数据,写入FPGA配置区,且在写入完毕后,继续向FPGA配置区填充与当前写入的配置帧长度相同的冗余数据;第四类表示该数据帧所含内容为数据且需要屏蔽;逻辑控制电路读入该类数据帧时,当正在进行全局配置时,则将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区,且在写入完毕后,继续向FPGA配置区填充与当前写入的配置帧长度相同的冗余数据;当正在进行动态刷新时,则不将该数据帧写入FPGA配置区;所述数据域,用于记载有效数据。有益效果DROM映射区存储的数据可以被循环写入,保证ROM映射区中的数据在发生错误时能够及时得到纠正。2)将ISE编译产生的配置文件*. bit和屏蔽数据文件*. 11合并到一个新配置文件*. bin,只需使用一块ROM存储元件存储*. bin文件,减少了 ROM存储元件的使用量。3)配置文件结构简单,内部帧结构固定,易于对文件数据进行解析,与三模冗余方法相比,本发明不需要占用额外的FPGA逻辑资源,简化了外部逻辑控制电路的逻辑设计。4)本发明是通过改进现有FPGA配置区动态刷新方法实现的,该方法可以在不中断FPGA正常工作的情况下,反复向FPGA配置区写入正确的配置数据,确保发生错误的配置区数据能得到及时更新,因此重启配置时不会中断FPGA的工作,可以应用于需要FPGA连续工作的场合。


图1为现有技术中FPGA的重配置示意图。图2为现有三模冗余技术功能框图。图3为本发明动态刷新方案的流程示意图。图4为本发明动态刷新方案的功能框图。图5为本发明数据帧的结构示意图。
具体实施方式
本发明将Xilinx FPGA配置文件中的数据分为两种1)屏蔽数据。屏蔽数据是FPGA内部逻辑运行时不允许重复写入配置区的数据即禁止动态刷新的数据,其对应Xilinx FPGA配置指令或者Xilinx FPGA内部硬件结构的RAM 资源。FPGA工作时,内部逻辑会操作这些RAM资源,动态刷新时对这些RAM资源进行写入将会改变内部逻辑的运行状态。通过分析发现,对于RAM例化而成的ROM映射区,虽然本质上是RAM资源,但是ROM 映射区用来存储固定不变的数据,这些数据可以而且应该得到动态刷新,保证ROM映射区中数据的正确性,而且刷新ROM映射区也不会干扰FPGA内部逻辑的正常运行。2)非屏蔽数据。非屏蔽数据是Xilinx FPGA内部逻辑运行时允许重复写入配置区的数据,其对应例如Xilinx FPGA内部硬件结构的可配置逻辑块(CLB)和布线资源,这些资源在Xilinx FPGA内部逻辑运行时不会改变状态,动态刷新可以对这些资源的配置区进行重复写入而不影响内部程序的正常运行。基于上述数据划分,本发明提供了一种Xilinx FPGA内部配置区动态刷新纠错的方法,该方法为第一步FPGA开发软件ISE生成配置文件和屏蔽字文件;屏蔽字文件记载了屏蔽信息,所述屏蔽信息指示出禁止在FPGA嵌入逻辑工作状态下被动态刷新的配置信息在配置文件中的位置;第二步读取配置文件中的配置信息以及屏蔽字文件中的屏蔽信息,确定配置信息中禁止被动态刷新的部分以及允许被动态刷新的部分,并且将ROM映射区的配置信息归为允许被动态刷新的部分;第三步将各配置信息记载到一个新配置文件中,并且在新配置文件中标识出各配置信息是否允许被动态刷新;将所述新配置文件转换为二进制文件烧录到一块ROM存储元件中;第四步进行动态刷新操作时,逻辑控制电路从所述新配置文件中读入配置信息及其标识,仅将允许被动态刷新的配置信息写入FPGA的配置区。上述操作是对于动态刷新过程,然而,对于FPGA的首次配置,也就是全局配置,不需要考虑是否允许重复写入的问题,将所有配置信息写入配置区即可。下面结合附图对本发明技术方案进行详细描述。在现有技术中,向Xilinx FPGA的配置区写入配置数据的最小单位是帧,帧长度与 FPGA的硬件结构有关,如V2C3000器件的帧长度为166个双字,V2cl000器件的帧长度为 106个双字,以下称这种Xilinx FPGA硬件对应的帧为FPGA配置帧。Xilinx公司的FPGA开发软件ISE在生成配置文件bit时,也会生成一个数据屏蔽文件*. 11,在该数据屏蔽文件*. 11中列出了不允许反复写入的配置信息在配置文件 *.bit中的位置。参见图3和图4,本发明首先根据配置文件*. bit和数据屏蔽文件*. 11,使用计算机软件生成自定义二进制*. bin文件,该自定义二进制*. bin文件以固定数据帧的格式存储配置信息。具体来说,本步骤具体包括读取配置文件*. bit和数据屏蔽文件*. 11,根据数据屏蔽文件*. 11中记载的屏蔽数据在配置文件中的位置,识别配置文件中的屏蔽数据和非屏蔽数据,很重要的是,此时将ROM映射区的配置信息归为非屏蔽数据;根据预先获知的数据位置和指令位置,识别配置文件中所记载数据的类型;根据Xilinx FPGA的硬件结构,将*. bit文件中的配置信息分解一个个的数据帧,每个数据帧中包括一个Xilinx FPGA配置帧数据、对应的屏蔽字和数据帧承载的数据类型;所述屏蔽字表示数据帧是否允许在FPGA内部逻辑运行过程中被动态刷新,数据帧承载的数据类型包括指令和数据两种。然后,将数据帧存放到一个新配置文件中并转换为*. bin 二进制文件,再将bin文件烧录到ROM存储元件中。这样,在实际的FPGA 配置电路中只需使用一块ROM存储元件存储新产生的二进制文件,使得动态刷新过程的复杂性主要体现到计算机软件中,既简化了逻辑控制电路,又减少了 ROM元件使用量。本发明存储在新配置文件中的数据帧需要包括Xilinx FPGA配置帧数据,即有效数据,还需要包括该帧数据对应的屏蔽字和该帧数据所含有效数据的类型。具体数据帧格式可以根据工程需要进行设计。本发明实施例中提供了一种帧格式。如图5所示,本实施例中自定义二进制*. bin文件由若干如图5示出的格式固定的数据帧组成。数据帧划分为下述4个域1)同步域同步域记载帧同步标记,例如可以为Oxlacffcld。2)帧类型域该域记载屏蔽信息和数据帧所含数据类型。例如,OxOOOOOOff——表示该帧所含内容为命令且不需要屏蔽。逻辑控制电路读入该类数据帧时,无论是对Xilinx FPGA进行全局配置或动态刷新,该帧数据都需要转换为原始的 FPGA配置帧数据,写入Xilinx FPGA配置区;0x000000f0——表示该帧所含内容为命令且需要屏蔽。逻辑控制电路读入该类数据帧时,当对Xilinx FPGA进行全局配置时,该帧数据需要被转换为原始的Xilinx FPGA配置帧数据,写入Xilinx FPGA配置区,而当对Xilinx FPGA进行动态刷新时,该帧数据不需要被写入Xilinx FPGA配置区;0x0000000f——表示该帧所含内容为数据且不需要屏蔽。逻辑控制电路读入该类数据帧时,无论是对Xilinx FPGA进行全局配置还是动态刷新,该帧数据都需要被转换为原始的Xilinx FPGA配置帧数据,被写入Xilinx FPGA配置区,而且需要在完成写入该帧数据后,继续向Xilinx FPGA配置区填充与当前写入的配置帧长度相同的冗余数据,以保证后续数据的连续写入;0x00000000——表示该帧所含内容为数据且需要屏蔽。逻辑控制电路读入该类数据帧时,当对Xilinx FPGA进行全局配置时,该帧数据需要被转换为原始的Xilinx FPGA配置帧数据,写入Xilinx FPGA配置区,而且需要在完成写入该帧数据后,继续向Xilinx FPGA 配置区填充与当前写入的配置帧长度相同的冗余数据。当对Xilinx FPGA进行动态刷新时, 该帧数据不需要被写入Xilinx FPGA。本实施例将屏蔽信息和数据帧所含数据类型设置同一域中,从而减少帧长度,在实际中,也可以采用两个域分别表示屏蔽信息和数据帧所含数据类型。而且,这两个信息没有先后顺序。3)帧长度域该域记载本帧数据域的长度(单位双字)。在实际中,该域可以省略,而采用下一帧的同步域识别本帧的结束点。4)数据域该帧包含有效数据。当采用图5示出的格式时,使用计算机软件读入bit文件,根据Xilinx FPGA的硬件结构,以资源列为单位划分出一个个数据帧,同时也读入*. 11文件,根据*. 11文件中的屏蔽指示信息和预先获知的数据和指令位置信息填充数据帧的类型域,并且注意将ROM 映射区中的配置信息划归为非屏蔽信息,组帧完毕后将所有数据帧集合在一起合成*.bin 格式二进制文件,并将该文件烧入用以存储配置信息的ROM存储元件。在初始载入配置信息时,逻辑控制电路检测到全局配置信号有效,此时,逻辑控制电路从ROM存储元件中逐一读入数据帧,分析数据帧的类型域和帧长度域,由于是全局配置,不考虑数据帧的屏蔽信息,因此当数据帧的类型域显示数据帧所含内容为命令时,将数据帧还原为Xilinx FPGA配置时需要的标准配置帧格式,然后将标准配置帧写入FPGA的配置区。如果所含内容为数据,则在将转换后的标准配置帧写入Xilinx FPGA后,进一步向 Xilinx FPGA填充冗余数据。在写入配置帧时,由于FPGA配置区写入接口采用流水线结构,在写入了承载数据的配置帧数据之后,还需写入一个与配置帧数据同等数量的冗余数据,用以推动流水线继续运转,使得配置帧数据从配置接口流动到SRAM配置区。如果只写入配置帧数据,不写入冗余数据,这配置帧数据停留在接口处,没有真正到达配置区。冗余数据可以为全0或全F 的数据。而承载命令的配置帧不需要流动到SRAM配置区,因此不需要填充冗余数据。在动态刷新配置信息时,参见图3,逻辑控制电路检测到动态刷新控制信号有效, 此时,逻辑控制电路从ROM存储元件中逐一读入数据帧,分析数据帧的类型域和帧长度域; 如果类型域显示需要屏蔽,则该帧数据不写入Xilinx FPGA ;如果类型域显示不需要屏蔽, 则根据类型域判断数据帧所含内容为命令还是数据,如果是命令,将数据帧转换为Xilinx FPGA配置时需要的标准配置帧格式,然后将标准配置帧写入FPGA的配置区;如果是数据, 则在将转换后的标准配置帧写入Xilinx FPGA后,进一步向Xilinx FPGA填充冗余数据。由以上所述可以看出,本发明制定了一种专用二进制文件格式bin,该种文件格式由若干个有固定格式的数据帧组成。采用计算机软件将Xilinx FPGA的配置数据文件 *.bit和屏蔽字文件*. 11读入,结合ROM映射区中的数据需要被动态刷新的原则,合并成 *. bin文件并将其写入ROM存储元件;在进行动态刷新操作时,逻辑控制电路按照*. bin文件的数据帧格式逐帧读入配置信息,还原出原始的Xilinx FPGA配置帧数据并过滤掉禁止重复写入的数据,将剩下的允许重复写入的数据写入FPGA配置区;当全部*. bin文件的数据都被读入后,逻辑控制电路又从ROM存储元件的起始地址开始重复读入配置信息、写入, 从而实现了 FPGA内ROM映射区的动态刷新,而且在动态刷新过程中避免了屏蔽数据的重复写入,从而保证FPGA的正常工作。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种SRAM型FPGA内ROM映射区动态刷新纠错方法,应用于SRAM型的FPGA,其特征在于,该方法包括第一步FPGA开发软件ISE生成配置文件和屏蔽字文件;屏蔽字文件记载了屏蔽信息, 所述屏蔽信息指示出禁止在FPGA嵌入逻辑工作状态下被动态刷新的配置信息在配置文件中的位置;第二步读取配置文件中的配置信息以及屏蔽字文件中的屏蔽信息,确定配置信息中禁止被动态刷新的部分以及允许被动态刷新的部分,并且将ROM映射区的配置信息归为允许被动态刷新的部分;第三步将各配置信息记载到一个新配置文件中,并且在新配置文件中标识出各配置信息是否允许被动态刷新;将所述新配置文件转换为二进制文件烧录到存储元件中;第四步进行动态刷新操作时,逻辑控制电路从所述新配置文件中读入配置信息及其标识,仅将标识为允许被动态刷新的配置信息动态刷新到FPGA配置区。
2.如权利要求1所述的方法,其特征在于,所述第三步具体包括根据读取的配置信息和屏蔽信息组成数据帧,每个数据帧中包括一个FPGA配置帧数据、对应的屏蔽字和数据帧承载的数据类型;所述屏蔽字表示数据帧是否允许被动态刷新, 数据帧承载的数据类型包括指令和数据两种;将所有数据帧存放到一个新配置文件中,形成bin格式的二进制文件,并烧写入一个存储元件。
3.如权利要求2所述的方法,其特征在于,所述第四步具体包括在进行动态刷新操作时,逻辑控制电路从所述新配置文件中逐帧读入数据帧,根据数据帧中的屏蔽字过滤掉禁止重复写入的数据帧,仅将允许重复写入的数据帧还原为原始的 FPGA配置帧数据,并写入FPGA配置区;在写入时,如果数据帧承载的数据类型为指令,则直接写入,如果数据帧承载的数据类型为数据,则在写入数据后,进一步向FPGA填充冗余数据。
4.如权利要求2或3所述的方法,其特征在于,所述数据帧的帧格式包括同步域、帧类型域、帧长度域和数据域;所述同步域,用于记载帧同步标记;所述帧类型域,用于记载屏蔽字和数据帧承载的数据类型;所述帧类型域包括4类数据类型;第一类表示该数据帧所含内容为命令且不需要屏蔽;逻辑控制电路读入该类数据帧时,无论是对FPGA进行全局配置还是动态刷新,都将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区;第二类表示该数据帧所含内容为命令且需要屏蔽;逻辑控制电路读入该类数据帧时,当正在进行全局配置时,则将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区;而当正在进行动态刷新时,则不将该数据帧写入FPGA配置区;第三类表示该数据帧所含内容为数据且不需要屏蔽;逻辑控制电路读入该类数据帧时,无论是正在对FPGA进行全局配置还是动态刷新,都将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区,且在写入完毕后,继续向FPGA配置区填充与当前写入的配置帧长度相同的冗余数据;第四类表示该数据帧所含内容为数据且需要屏蔽;逻辑控制电路读入该类数据帧时,当正在进行全局配置时,则将该数据帧转换为原始的FPGA配置帧数据,写入FPGA配置区,且在写入完毕后,继续向FPGA配置区填充与当前写入的配置帧长度相同的冗余数据; 当正在进行动态刷新时,则不将该数据帧写入FPGA配置区; 所述数据域,用于记载有效数据。
5.如权利要求4所述的方法,其特征在于,所述数据帧进一步包括帧长度域,用于记载本帧数据域的长度。
全文摘要
本发明公开了一种SRAM型FPGA内ROM映射区配置区动态刷新纠错方法,包括读取配置文件中的配置信息以及屏蔽字文件中的屏蔽信息,确定配置信息中禁止被动态刷新的部分,以及允许被动态刷新的部分,并且将ROM映射区在配置区对应的配置信息归为允许被动态刷新的部分;将各配置信息记载到新配置文件中,并且在新配置文件中标识出在FPGA嵌入逻辑工作状态下各配置信息是否允许被动态刷新;进行动态刷新操作时,逻辑控制电路从所述新配置文件中读入配置信息及其标识,仅将允许被动态刷新的配置信息写入FPGA的配置区。使用本发明能够在循环重复刷新配置区数据时,允许动态刷新ROM映射区的数据,保证ROM内存储数据的正确性。
文档编号G06F11/10GK102508729SQ20111029560
公开日2012年6月20日 申请日期2011年9月29日 优先权日2011年9月29日
发明者张 浩, 童亚钦, 辛明瑞 申请人:中国航天科技集团公司第五研究院第五一三研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1