首页> 中国专利> 基于ECC纠错码的FPGA抗单粒子翻转快速刷新电路及方法

基于ECC纠错码的FPGA抗单粒子翻转快速刷新电路及方法

摘要

本发明涉及一种ECC纠错码的FPGA抗单粒子翻转快速刷新电路及方法,对于所述帧地址产生模块生成的任意一个帧地址,读写控制模块通过FPGA的ICAP接口读取数据帧,且每次只读取当前帧地址的帧数据,同时将读取的数据帧写入到帧缓存模块中;工作状态控制及错误解析模块从FPGA的帧ECC接口处接收的帧同步信号从低变高后,读取当前数据帧的ECC纠错的错误码来计算出数据帧中发生翻转的位置;帧纠错模块根据发生翻转的位置,从所述帧缓存模块中读取发生单粒子翻转的一段数据,对发生翻转的位取反得到纠错后的正确数据,并将正确数据重新写入到所述帧缓存模块中,再由所述读写控制模块将正确的数据帧重新写入到FPGA的当前帧地址中,完成FPGA抗单粒子翻转纠错。

著录项

  • 公开/公告号CN106293991A

    专利类型发明专利

  • 公开/公告日2017-01-04

    原文格式PDF

  • 申请/专利权人 上海无线电设备研究所;

    申请/专利号CN201610651284.X

  • 申请日2016-08-10

  • 分类号G06F11/10(20060101);

  • 代理机构31249 上海信好专利代理事务所(普通合伙);

  • 代理人苗绘;朱成之

  • 地址 200090 上海市杨浦区黎平路203号

  • 入库时间 2023-06-19 01:14:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-18

    授权

    授权

  • 2017-02-01

    实质审查的生效 IPC(主分类):G06F11/10 申请日:20160810

    实质审查的生效

  • 2017-01-04

    公开

    公开

说明书

技术领域

本发明涉及空间有效载荷中FPGA电路可靠性设计领域,特别涉及一种基于ECC纠错码的FPGA抗单粒子翻转快速刷新电路及方法。

背景技术

Virtex-4和Virtex-5系列FPGA属于SRAM型FPGA,目前SRAM型FPGA的配置刷新电路多采用反熔丝型FPGA作为主控芯片,分别连接PROM和FPGA,控制正常加载程序和正常工作后的动态刷新。其中,反熔丝型FPGA采用A54SX72A等系列FPGA,该芯片体积大,占用印制板上宝贵的空间,并且在电路设计时,需要断开FPGA和PROM的加载连线,反熔丝型FPGA跨接在断开的两端,与原电路设计相比更改多,技术实现复杂,并且由于布局布线的影响,刷新速度慢。以上方法主要针对老一代FPGA例如Virtex和Virtex-Ⅱ系列FPGA采取的电路设计,没有考虑Virtex-4和Virtex-5系列等新一代FPGA的硬件特点和技术优势。

以下的现有技术“一种基于SRAM型FPGA配置、刷新一体化装置200920110357.X”、“FPGA内ROM映射区动态刷新纠错方法201110295603.5”、“基于SELECTMAP的宇航FPGA通用刷新电路及其实现方法201410051615.7”、“基于JTAG接口的宇航FPGA通用刷新电路及其实现方法201410051652.8”、“一种SRAM型大规模FPGA抗单粒子装置及方法》201410461355.0”和“一种SRAM型FPGA的配置、刷新与程序上注一体化系统201410851497.8”中,都采用外部反熔丝型FPGA作为控制电路实现FPGA芯片动态刷新,通过片外方式访问FPGA内部存储区,数据宽度和读写速度限制了动态刷新频率,不适合在Virtex-4和Virtex-5系列等大容量FPGA上应用,并且占用宝贵的印制板空间资源。

“抗单粒子翻转的SRAM型FPGA刷新电路及刷新方法201410250530.1”使用两片PROM分别存放配置文件和刷新文件,不仅增加布线难度,而且占用更多印制板的布局空间。“一种用于SRAM型FPGA配置刷新的CRC校验方法》201410783776.5”同样使用反熔丝型FPGA作为控制电路,并且采用CRC校验方式检测FPGA是否发生单粒子翻转,该校验方式不仅增加程序设计的难度,而且校验结果不能够提供数据帧发生单粒子翻转的位置,不适合在Virtex-4和Virtex-5系列FPGA上应用。

发明内容

本发明的目的在于避免上述背景技术中的不足之处而提出一种基于ECC纠错码的FPGA抗单粒子翻转快速刷新电路及方法,实现Virtex-4和Virtex-5系列FPGA在硬件资源有限的平台上的抗单粒子翻转快速纠错刷新。

为了达到上述目的,本发明的一个技术方案是提供一种ECC纠错码的FPGA抗单粒子翻转快速刷新方法,其中:

帧地址产生模块依次生成需要检测纠错的帧地址;

对于所述帧地址产生模块生成的任意一个帧地址,读写控制模块通过相连接的FPGA的ICAP接口读取数据帧,且每次只读取当前帧地址的帧数据,同时将读取的数据帧写入到帧缓存模块中;

工作状态控制及错误解析模块从相连接的FPGA的帧ECC接口处接收的帧同步信号从低变高后,所述工作状态控制及错误解析模块通过所述帧ECC接口读取当前数据帧的ECC纠错的错误码,并在读取到表示发生单粒子翻转的错误码来计算出数据帧中发生翻转的位置;

帧纠错模块根据发生翻转的位置,从所述帧缓存模块中读取发生单粒子翻转的一段数据,对发生翻转的位取反得到纠错后的正确数据,并将正确数据重新写入到所述帧缓存模块中,再由所述读写控制模块将正确的数据帧重新写入到FPGA的当前帧地址中,完成FPGA抗单粒子翻转纠错;

帧地址产生模块产生下一个帧地址。

优选地,所述读写控制模块每次将读取的数据帧,写入到帧缓存模块的双口RAM中,双口RAM的数据宽度与ICAP接口的数据宽度一致,数据深度由数据帧的长度决定。

优选地,所述帧纠错模块从帧缓存模块中读取发生单粒子翻转的一段数据时,每次从数据帧中读取的数据的位数与双口RAM的数据宽度相对应;所述帧纠错模块对发生翻转的位置以该位数进行整除得到双口RAM的地址,并根据整除的余数得到发生翻转的位进行数据取反后,重新写入到双口RAM中,再由所述读写控制模块将双口RAM中的正确数据帧写入到FPGA对应的帧地址中。

优选地,所述工作状态控制及错误解析模块根据错误码判断发生单粒子翻转时,从错误码的低11位计算出发生翻转的位置:

其中,S为错误码的低11位所代表的十进制数。

优选地,FPGA健康评估模块监测FPGA错误发生的频率和程度,来对检测频率进行实时调整;之后,根据FPGA健康评估模块选定的检测频率,执行本方案所述的方法;

为了对检测频率进行实时调整,FPGA健康评估模块在选定的检测频率下获取每个检测周期整个FPGA的检测结果,判断FPGA发生的错误类型:

当判断单位检测的错误计数小于第一阈值时,降低当前的检测频率进行检测;除非当前的检测频率已经是为单位翻转设定的最低检测频率,则保持当前的检测频率进行检测;

当判断单位检测的错误计数超过第二阈值时,提高当前的检测频率进行检测;除非当前的检测频率已经是为单位翻转设定的最高检测频率,则保持当前的检测频率进行检测;

当判断多位检测的错误计数小于第三阈值时,降低当前的检测频率进行检测;除非当前的检测频率已经是为多位翻转设定的最低检测频率,则保持当前的检测频率进行检测;

当判断多位检测的错误计数超过第四阈值时,提高当前的检测频率进行检测;除非当前的检测频率已经是为多位翻转设定的最高检测频率,则保持当前的检测频率进行检测。

优选地,设第一数组P1=[1、4、8]中的数值,分别为单位翻转时对正常检测频率f0的可选倍数;FPGA健康评估模块根据单位检测的错误计数与第一阈值或第二阈值的比对结果,从第一数组P1中选取高于当前一档的频率倍数、或低于当前一档的频率倍数、或保持当前的频率倍数;第一阈值为10,第二阈值为20;

设第二数组P2=[32、128]中的数值,分别为多位翻转时对正常检测频率f0的可选倍数;FPGA健康评估模块根据多位检测的错误计数与第三阈值或第四阈值的比对结果,从第二数组P2中选取高于当前一档的频率倍数、或低于当前一档的频率倍数、或保持当前的频率倍数;第三阈值为10,第四阈值为30。

优选地,由所述帧地址产生模块产生的帧地址与FPGA的结构相对应,帧地址的分配信息通过帧地址解析电路获得;

在帧地址解析电路中,当监测FPGA的配置完成标志信号表示该FPGA已经完成正常加载时,开始帧地址解析,对帧地址进行初始化赋0表示从数据帧的首地址开始读取;

帧地址解析电路从当前帧地址完成对一帧数据的读取后,得到下一个相邻数据帧的帧地址并通过串口通信送出,当判断送出的帧地址超过范围后停止,否则继续通过串口通信送出下一个相邻数据帧的帧地址,直到数据结尾。

本发明的另一个技术方案是提供一种基于ECC纠错码的FPGA抗单粒子翻转快速刷新电路,其包含:读写控制模块、帧地址产生模块、帧缓存模块、帧纠错模块、工作状态控制及错误解析模块、FPGA健康评估模块;

其中,所述帧地址产生模块,依次生成需要检测纠错的帧地址;

所述读写控制模块,根据帧地址产生模块生成的当前帧地址,从相连接的FPGA的ICAP接口处读取当前帧地址的数据帧;以及,将帧缓存模块获得纠错后正确的数据帧,重新写入到FPGA的当前帧地址;

所述帧缓存模块,从所述读写控制模块获得读取的数据帧进行存储,以及对存在位翻转的数据帧经纠错得到的正确数据写入对应帧地址;

所述帧纠错模块,根据发生翻转的位置,从帧缓存模块读取发生翻转的数据,并对数据帧中的位翻转进行纠正后,将纠错后的正确数据重新写入到所述帧缓存模块;

所述工作状态控制及错误解析模块,控制整个电路的工作状态,根据其从相连接的FPGA的帧ECC接口处读取当前数据帧的ECC纠错的错误码,解析出数据帧中发生翻转的位置;

所述FPGA健康评估模块,判断错误发生的频率和程度,对刷新周期进行调整。

优选地,由所述帧地址产生模块产生的帧地址与FPGA的结构相对应,帧地址的分配信息通过帧地址解析电路获得;所述帧地址解析电路进一步包含:帧指令产生模块,完成帧地址初始化、读取数据帧和读取帧地址的指令包生成,使所述读写控制模块执行指令包的写入、数据帧和帧地址的读取;以及,通信模块,将获得的帧地址以串口通信的方式送出,通过分析获得帧地址的分配信息。

优选地,所述方法及电路适用于Virtex-4和Virtex-5系列FPGA。

本发明不再使用反熔丝型FPGA作为FPGA动态刷新的硬件载体,有效克服了传统SRAM型FPGA动态刷新电路的不足,新设计的电路具有刷新速度快,刷新率智能调整和结构紧凑的特点,非常适合在印制板空间资源有限的硬件平台上使用。

附图说明

图1是表示本发明所涉及的电路示意图。

图2是表示本发明所涉及的工作状态控制流程图。

图3是表示本发明所涉及的FPGA健康评估模块的处理流程图。

图4是表示本发明所涉及的FPGA帧地址解析电路示意图。

图5是表示本发明所涉及的FPGA帧地址解析电路的处理流程图。

具体实施方式

以下,利用附图来说明本发明所涉及的基于ECC纠错码的FPGA抗单粒子翻转快速刷新电路的优选实施方式。

图1是表示本发明所涉及的电路示意图。图1中的电路包括:读写控制模块1、帧地址产生模块2、帧缓存模块3、帧纠错模块4、工作状态控制及错误解析模块5和FPGA健康评估模块6。

其中,帧地址产生模块2,根据FPGA结构产生相应的帧地址,该地址可通过帧地址解析电路获得;帧缓存模块3,存储读取的一帧数据,如果数据帧存在位翻转,经过纠错后会被写入对应帧地址;帧纠错模块4,根据发生错误的位置,纠正帧数据中的位翻转;工作状态控制及错误解析模块5,控制整个抗单粒子翻转纠错刷新的工作状态,通过获得的错误码解析出错误发生的位置;FPGA健康评估模块6,根据错误发生的频率和程度,估算空间辐照对FPGA的影响,实时调整刷新周期。

所述工作状态控制及错误解析模块5与FPGA的帧ECC接口7连接,读写控制模块1与FPGA的ICAP接口8连接,以上模块都在FPGA中实现,不需要额外的反熔丝型FPGA作为硬件载体。

帧地址产生模块2依次生成需要读取的帧地址,读写控制模块1每次读取一帧数据,同时把数据写入到帧缓存模块3中,当FPGA的帧ECC接口7输出的帧同步信号从低变高后,工作状态控制及错误解析模块5读取ECC纠错码,根据错误码计算出帧数据中发生翻转的位置。帧纠错模块4根据发生翻转的位置,从帧缓存模块3中读取发生单粒子翻转的一段数据,数据的长度与内部使用的双口RAM数据宽度有关,把发生翻转的位取反后,重新将纠错后正确的数据写入到帧缓存模块3中。

帧缓存模块3数据完成单粒子翻转纠错后,读写控制模块1将正确的数据帧重新写入到FPGA当前帧地址中,即完成FPGA抗单粒子翻转纠错功能。帧地址产生模块2产生下一个需要检测纠错的帧地址,根据Virtex-4和Virtex-5系列FPGA帧结构,地址低位可能是不连续的,帧地址分配可通过帧地址解析电路获得。

FPGA健康评估模块6根据检测结果实时调整检测频率。假设正常检测频率为f0,FPGA健康评估模块6可以按照f0的整数倍频率检测FPGA单粒子翻转。本发明对整数倍取值做了限制,根据检测结果,如果发生单位翻转,则在P1=[1、4、8]数组中选择检测频率f0的倍数,如果发生多位翻转,则在P2=[32、128]数组中选择检测频率f0的倍数。默认系数为P1=1,即正常检测频率f0,P1中的2、4、8和P2中的32、128代表正常检测频率f0的倍数,数字越大表示当前检测频率越快。

按照图3的流程图,说明本发明的所涉及的健康评估模块6的工作处理流程:

步骤A1、设置当前的检测频率为f0,即正常检测频率;

步骤A2、在每个检测周期获取整个FPGA的检测结果;

步骤A3、根据检测结果,判读FPGA发生的错误类型,如果发生多位翻转,则进入多位错误检测模式,进入到步骤A3.1,如果发生单位翻转,则进入单位错误检测模式,进入到步骤A4。

步骤A3.1、判断多位检测的错误计数是否超过阈值V4,根据经验V4可设置为30,如果超过V4,提高当前的检测频率,当f0的倍数小于32时,则f0的倍数赋值为32;当f0的倍数为32时,则f0的倍数赋值为128;当f0的倍数为128时,则f0的倍数保持不变,最后进入步骤A2。如果不满足该条件,进入步骤A3.2;

步骤A3.2、判断多位检测的错误计数是否小于阈值V3,根据经验V3可设置为10,如果小于V3,降低当前的检测频率,当f0的倍数为128时,则f0的倍数赋值为32;当f0的倍数为32时,则f0的倍数保持不变。如果不满足该条件,进入步骤A2;

步骤A4、判断单位检测的错误计数是否超过阈值V2,根据经验V2可设置为20,如果超过V2,提高当前的检测频率,当f0的倍数为1时,则f0的倍数赋值为4;当f0的倍数为4时,则f0的倍数赋值为8;当f0的倍数为8时,则f0的倍数保持不变,最后进入步骤A2。如果不满足该条件,进入步骤A4;

步骤A5、判断单位检测的错误计数是否小于阈值V1,根据经验V1可设置为10,如果小于V1,降低当前的检测频率,当f0的倍数为8或者大于8时,则f0的倍数赋值为4;当f0的倍数为4时,则f0的倍数赋值为1;当f0的倍数为1时,则f0的倍数保持不变,最后进入步骤A2。如果不满足该条件,进入步骤A2。

接着,按照图2的流程图,进行本发明所涉及的Virtex-4系列FPGA抗单粒子翻转纠错刷新装置中的工作处理流程:

步骤B1、监测FPGA的配置完成标志Done信号,等待信号变高后即FPGA已完成正常加载,抗单粒子翻转检测纠错程序开始运行,对帧地址进行初始化赋0,表示从数据帧的首地址开始检测。

步骤B2、判断帧地址是否超出范围,如果超出范围,对帧地址进行初始化赋0;如果未超出范围,则进入数据帧读取的工作状态。

步骤B3、通过ICAP接口8读取数据帧,每次只读取当前地址的帧数据,同时将读取的数据帧写入到帧缓存模块3的双口RAM中,双口RAM的数据宽度与ICAP接口8数据宽度一致,数据深度由数据帧的长度决定。

步骤B4、在读取数据帧时,FPGA会对数据帧经ECC纠错,纠错的结果和完成标志通过帧ECC接口7输出。当帧同步信号变高后,工作状态控制及错误解析模块5读取当前数据帧的ECC纠错码,根据错误码判断是否发生单粒子翻转,如果发生单粒子翻转,从错误码的低11位计算出发生翻转的位置,假设错误码的低11位所代表的十进制数为S,其计算公式如下:

步骤B5、如果数据帧发生单粒子翻转,则进入纠错处理状态,否则开始准备检测下一个相邻的数据帧。

步骤B6、帧纠错模块4对接收到错误翻转位置转换成内部双口RAM的地址,通常数据帧的长度为1312位,双口RAM存放数据的地址从0到40,每个地址数据位数为32位。帧纠错模块4每次只能读取32位数据,对翻转位置S2求32整除得到双口RAM的地址,对翻转位置S2求32整除的余数得到该地址32位数据中某一位发生翻转的位置,将该位数据取反得到正确的数据,重新写入双口RAM中,最后将双口RAM的正确数据写入到FPGA对应的帧地址中。

步骤B7、将帧地址指向下一个需要检测的相邻数据帧。帧地址主要由主地址和次地址组成,FPGA的配置文件是由不同类型的数据帧组成,不同类型的数据帧决定主地址的分配,主地址加1还是次地址加1由事先获得的帧地址分配信息决定。

图4是本发明所涉及的FPGA帧地址解析电路示意图,该电路包括:帧指令产生模块、读写控制模块1和通信模块,其中读写控制模块1与FPGA的ICAP接口8连接,以上模块都在FPGA中实现。

帧指令产生模块完成帧地址初始化、读取数据帧和读取帧地址的指令包生成。读写控制模块1执行指令包的写入、数据帧和帧地址的读取。通信模块将获得的帧地址以串口通信的方式送出,通过分析获得帧地址的分配信息。

按照图5的流程图,说明本发明所涉及的Virtex-4和Virtex-5系列FPGA帧地址解析电路的工作处理流程:

步骤C1、监测FPGA的配置完成标志Done信号,等待信号变高后即FPGA已完成正常加载,帧地址解析程序开始运行,对帧地址进行初始化赋0,表示从数据帧的首地址开始读取。

步骤C2、从当前帧地址读取一帧数据,舍弃数据帧内容,等待一帧数据读取完成后,此时帧地址指向下一个相邻数据帧,写入帧地址读取的指令包,即得到下一个相邻数据帧的帧地址。

步骤C3、通常帧地址长度为32位,串口通信例如RS422每次传送8位,总共需要传送4个字节,对接收到的帧地址进行分析即可得到帧地址分配信息。

步骤C4、判断帧地址是否超出范围,如果超出范围停止程序运行,否则继续执行步骤C2和步骤C3,串口通信会一直输出下一个相邻数据帧的地址,直到数据的结尾。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号