基于FPGA的故障修复方法和装置与流程

文档序号:12120251阅读:1227来源:国知局
基于FPGA的故障修复方法和装置与流程

本发明涉及基于FPGA的控制系统的技术领域,尤其是在核安全控制系统中基于FPGA的故障修复方法和装置。



背景技术:

单粒子翻转(Single Event Upsets,简称SEU)是指单个高能粒子作用于半导体器件(包括FPGA),引发器件的逻辑状态发生异常变化。SEU是空间辐射造成的多种单粒子效应中最常见和最典型的一种。SEU造成的器件错误属“软错误”,即通过系统复位、重新加电或重新写入能够恢复到正常状态。SEU不仅存在于高辐射或高空环境,在人们普通生活的大气环境中也广泛存在。因此,研究防止和修复SEU的技术显得相当重要。

现有技术中提供了的防SEU技术,通常是采用3模冗余的结构,当出现故障时,选取两路相同输出结果的值输出、舍弃不同结果的那路运算(把这路当成是受到SEU的影响而出错需丢弃的分支),但是采用这种技术方案,如果两路先后(或同时)出错、且错误结果相同,则会将错误的结果输出,这对于核安全级系统来说风险巨大。

并且发明人在实现本发明的过程中发现,现有技术中还存在只能适用于单一故障、故障难定位、系统修复时间长等技术问题。



技术实现要素:

为了解决现有技术中的控制系统存在上述问题,本发明提供一种在核安全控制系统中基于FPGA的故障修复方法和装置,能够提高控制系统的可靠性和可用性。

为了实现上述目的,本发明提供的技术方案包括:

一方面,提供一种基于FPGA的故障修复方法,所述FPGA包括第一算法单元和第二算法单元,并且所述第二算法单元与所述第一算法单元的内部设置有相同的算法模块;其特征在于,所述方法包括:

将外部测试数据向所述FPGA的测试数据存储单元导入测试数据,所述测试数据存储单元包括第一测试数据存储区和第二测试数据存储区;

对所述测试数据存储单元中的测试数据进行CRC校验,如果其中一个测试数据存储区域的测试数据出错,用另一个测试数据存储区域中正确的测试数据进行覆盖修正;如果两个测试数据存储区域的测试数据都出错,则重新加载新的测试数据;

将经过CRC校验的正确数据传输至所述第一算法单元和所述第二算法单元,并对两个算法单元内算法模块运算结果进行取样;

将取样结果与预定的运算结果比较,如果取样结果与预定的运算结果不相同,判定所述算法模块存在故障,发送故障修复信号进行修复;并且如果修复失败,则标记故障位置并输出故障信号。

优选地,所述方法还包括:在将测试数据传输至所述FPGA之前,先锁存住所述FPGA上周期的正常运算输出值,然后切换到测试状态。

优选地,所述第一算法单元和所述第二算法单元内分别设置有选择器,所述选择器根据控制信号从正常输入信号和测试数据信号中选择一种,并将选择的信号分别输入至所述第一算法单元和所述第二算法单元内的算法模块。

优选地,所述方法还包括:测试完成后切换到正常运算状态,然后所述第一算法单元和所述第二算法单元同时接收正常输入信号的输入;并且如果测试结果中,有不可修复错误、则舍弃其运算结果,然后选择诊断有效的输出值输出。

优选地,如果测试结果中,所有输出值均无效,则使本次运算结果不输出、保持上次正确运算结果输出并报警。

另一方面,本发明还提供一种基于FPGA的故障修复装置,所述FPGA包括第一算法单元和第二算法单元,并且所述第二算法单元与所述第一算法单元的内部设置有相同的算法模块;其特征在于,所述装置包括:

测试数据存储单元,设置在所述FPGA内部,用于接收外部的测试数据,并且所述测试数据存储单元包括第一测试数据存储区和第二测试数据存储区;

测试数据诊断恢复单元,用于对所述测试数据存储单元中的测试数据进行CRC校验,如果其中一个测试数据存储区域的测试数据出错,用另一个测试数据存储区域中正确的测试数据进行覆盖修正;如果两个测试数据存储区域的测试数据都出错,则重新加载新的测试数据;

中间算法结果取样单元,所述CRC校验的正确数据传输至所述第一算法单元和所述第二算法单元后,所述中间算法结果取样单元对两个算法单元内算法模块运算结果进行取样;

故障判断修复单元,用于将取样结果与预定的运算结果比较;如果取样结果与预定的运算结果不相同,判定所述算法模块存在故障,发送故障修复信号进行修复;并且如果修复失败,则标记故障位置并输出故障信号。

优选地,所述装置还包括:数据切换单元,用于在将测试数据传输至所述FPGA之前,先锁存住所述PFGA上周期的正常运算输出值,然后切换到测试状态。

优选地,所述数据切换单元为分别设置在所述第一算法单元和所述第二算法单元内的选择器,所述选择器根据控制信号从正常输入信号和测试数据信号中选择一种,并将选择的分别输入至所述第一算法单元和所述第二算法单元内的算法模块。

优选地,所述数据切换单元在测试完成后切换到正常运算状态,然后所述第一算法单元和所述第二算法单元同时接收正常输入信号的输入;并且如果测试结果中,有不可修复错误、则舍弃其运算结果,然后选择诊断有效的输出值输出。

优选地,所述故障判断修复单元如果诊断出测试结果中,所有输出值均无效,则使本次运算结果不输出、保持上次正确运算结果输出并报警。

采用本发明提供的上述技术方案,能够至少有以下有益效果中的一种:

1、本发明提供的故障修复方法和装置,既适用于单故障的情况,也适用于多故障同时发生的情况。

2、当出现两个冗余部分都出现错误、且错误结果相同时,能够及时判断出FPGA存在故障,不输出错误结果。

3、当判断出FPGA内部算法模块存在错误时,能够精确定位错误位置,快速修复相应的出错算法模块,不影响系统的正常工作。

发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书变得显而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。

附图说明

图1为本发明实施例提供的一种基于FPGA的控制系统的局部示意图;

图2为本发明实施例提供的一种基于FPGA的故障修复方法的流程图;

图3为本发明实施例提供的一种基于FPGA的故障修复装置的结构框图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,这些具体的说明只是让本领域普通技术人员更加容易、清晰理解本发明,而非对本发明的限定性解释;并且只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

另外,在附图的流程图示出的步骤可以在诸如一组控制器可执行指令的控制系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

下面通过附图和具体实施例,对本发明的技术方案进行详细描述:

实施例

如图1所示,本实施例提供的基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的控制系统中,FPGA中包含测试数据第一存储区域(亦可称第一测试数据存储区域)101、测试数据第二存储区域(亦可称第二测试数据存储区域)102、测试数据诊断恢复单元103、第一正常数据输入单元104、第二正常数据输入单元105,第一算法单元110、第二算法单元120、正常输出值选择单元130;其中,测试数据第一存储区域101和测试数据第二存储区域102都存储有相同的测试数据,该测试数据从外部的Flash(闪存,存储器的一种)导入,优选地,第一存储区域测试数据第一存储区域101和测试数据第二存储区域102采用RAM(random access memory,随机存取存储器),测试数据的数据量规模较小时,可以考虑全数据覆盖;测试数据诊断恢复单元103对测试数据进行CRC校验,并将CRC运算结果与RAM中存储的与测试参数对应的预定结果进行比较,确认测试参数是否正确;第二算法单元120完全复制第一算法单元110内部结构,分别设置有选择正常数据或者测试数据的选择器,与选择器连接的多个运算模块,并且两个算法单元还分别设置有存储器(未示出),该存储器能够但不限于用于存储算法单元中各个算法模块的运算结果;与两个算法单元110、120连接的正常输出选择单元130,正常输出选择单元130的具体选择输出过程,下文会有详细的介绍。

如图2所示,本实施例提供一种基于FPGA的故障修复方法,该方法包括:

S201、向两个存储区域导入测试数据:

将外部测试数据向FPGA的测试数据存储单元导入测试数据,测试数据存储单元包括第一测试数据存储区101和第二测试数据存储区102;然后执行步骤S202;

S202、对测试数据进行CRC校验:

通过测试数据诊断恢复单元103对测试数据存储单元中的测试数据进行CRC校验,然后执行步骤S203;

S203、判断CRC校验是否出错:

第一测试数据存储区101和第二测试数据存储区102的最后几个字节在设计初期根据测试数据的长度选定CRC多项式的长度,通常选CRC16、CRC32或CRC64,它们分别占2、4或8个字节,最后几个字节对应存储的是所有测试数据的CRC预定运算结果,测试数据诊断恢复单元103依据约定好的CRC多项式对除测试数据存储区的最后几个字节的CRC预定结果之外的所有测试数据进行运算,如果运算结果与测试数据存储区中最后几个字节存储的数值完全相同、则说明测试数据正常,则执行步骤S204,否则,执行步骤S205;

S204、算法单元对测试数据进行逻辑运算:

将经过CRC校验的正确数据传输至第一算法单元110和第二算法单元120;然后执行步骤S207;

S205、判断两路CRC校验是否都出错,如果是,返回步骤S201重新从外部加载测试数据,否则执行步骤S206;

S206、用正常的测试数据覆盖修正出错的测试数据:

如果其中一个测试数据存储区域的测试数据出错,用另一个测试数据存储区域中正确的测试数据进行覆盖修正;然后执行步骤S204、

S207、对算法单元内每个运算模块的运算结果取样:

分别对第一算法单元110和第二算法单元120中的多个算法模块的数据结果进行取样;然后执行步骤S208;

S208、判断取样结果是否与预定结果一致:

从第一测试数据存储区101和第二测试数据存储区102中取出的测试向量依次输入到算法入口,然后采集其后的各级运算结果,并与测试数据存储区域中存储的相应预定结果进行比对,进行逐级全面对比诊断,如果两者的结果(数值)相同,具体地,假设在当前测试向量输入的情况下,图1中第一算法单元110和第二算法单元120中的六个算法块依次输出1、101、10、0、1、10,而其相应预期结果也是1、101、10、0、1、10,则说明两者的结果相同,否则不相同。相同则执行步骤S209;不相同则执行步骤S210,具体地,假设在当前测试向量输入的情况下,图1中第一算法单元110中的六个算法块依次输出1、101、10、0、1、10,但第二算法单元120中的六个算法块依次输出1、101、10、0、1、11,而其相应预定结果是1、101、10、0、1、10,则说明第二算法单元120中的第六算法块错误,则精确定位错误(数值不相同部分)的位置;在上述假设的情况下,是第二算法单元120中的第六算法块错误;

S209、结束测试;可以切换至正常的运行状态;

S210、故障修复及故障信号发送:

如果取样结果与预定的运算结果不相同,判定算法模块存在故障,发送故障修复脉冲信号,试图修复故障;具体地,发送与现有数据相反的脉冲信号,将跳变的数据重复写入故障部分电路,可快速修复因单粒子翻转等原因而产生的“软错误”;如果修复不成功,则标记错误位置并发送故障信号;然后执行步骤S209。

优选地,该方法还包括:在步骤S204,将测试数据传输至FPGA之前,先锁存住FPGA上周期的正常运算输出值,然后切换到测试状态。

优选地,第一算法单元110和第二算法单元120内分别设置有选择器,选择器根据控制信号从正常输入信号和测试数据信号中选择一种,并将选择的信号分别输入至第一算法单元和第二算法单元内的算法模块。

优选地,方法还包括:在步骤S209,测试完成后切换到正常运算状态,然后第一算法单元和第二算法单元同时接收正常输入信号的输入;并且如果测试结果中,有不可修复错误、则舍弃其运算结果,然后选择诊断有效的输出值输出。其中,绝大部分算法单元的错误可以通过修复脉冲进行修复,例如SEU引起的错误,极少部分未能修复的错误可能是器件内部某单元的烧毁或断裂等不可修复的原因引起。

优选地,如果测试结果中,所有输出值均无效,则使本次运算结果不输出、保持上次正确运算结果输出并报警。

如图3所示,本实施例还提供一种基于FPGA的故障修复装置,该装置包括:

测试数据存储单元301,设置在FPGA内部,用于接收外部的测试数据,并且测试数据存储单元301包括图1中的第一测试数据存储区110和第二测试数据存储区120;

测试数据诊断恢复单元302,即图1中的测试数据诊断恢复单元103,用于对测试数据存储单元301中的测试数据进行CRC校验,如果其中一个测试数据存储区域的测试数据出错,用另一个测试数据存储区域中正确的测试数据进行覆盖修正;如果两个测试数据存储区域的测试数据都出错,则重新加载新的测试数据;

中间算法结果取样单元303,CRC校验的正确数据传输至第一算法单元和第二算法单元后,中间算法结果取样单元对两个算法单元内算法模块运算结果进行取样;

故障判断修复单元304,用于将取样结果与预定的运算结果比较;如果取样结果与预定的运算结果不相同,判定算法模块存在故障,发送故障修复信号。

优选地,该装置还包括:数据切换单元,用于在将测试数据传输至FPGA之前,先锁存住PFGA上周期的正常运算输出值,然后切换到测试状态。

优选地,数据切换单元为分别设置在第一算法单元110和第二算法单元120内的选择器,选择器根据控制信号从正常输入信号和测试数据信号中选择一种,并将选择的分别输入至第一算法单元110和第二算法单元120内的算法模块。

优选地,数据切换单元在测试完成后切换到正常运算状态,然后第一算法单元和第二算法单元同时接收正常输入信号的输入;并且如果测试结果中,有不可修复错误、则标记错误位置并舍弃其运算结果,然后选择诊断有效的输出值输出。

优选地,故障判断修复单元304如果诊断出测试结果中,所有输出值均无效,则使本次运算结果不输出、保持上次正确运算结果输出并报警。

采用本实施例提供的上述技术方案,能够至少有以下有益效果中的一种:

1、本实施例提供的故障修复方法和装置,既适用于单故障的情况,也适用于多故障同时发生的情况。

2、当出现两个冗余部分都出现错误、且错误结果相同时,能够及时判断出FPGA存在故障,不输出错误结果。

3、当判断出FPGA内部算法模块存在错误时,能够精确定位错误位置,快速修复相应的算法模块,不影响系统的正常工作。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、FLASH、磁碟或者光盘等各种可以存储程序代码的介质。

最后需要说明的是,上述说明仅是本发明的最佳实施例而已,并非对本发明做任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围内,都可利用上述揭示的做法和技术内容对本发明技术方案做出许多可能的变动和简单的替换等,这些都属于本发明技术方案保护的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1