一种fpga单粒子翻转防护方法
【专利摘要】一种FPGA单粒子翻转防护方法,采用状态机的方式对FPGA的逻辑状态进行控制,所述的状态机包括一个空闲状态和N个逻辑状态,所述的N个逻辑状态依次转换,每一个逻辑状态都对应FPGA中设定的一个逻辑状态;FPGA上电或者复位完成后,状态机初始处于空闲状态;当设定的FPGA所要跳转的逻辑状态的触发条件不满足时,状态机控制FPGA保持当前的逻辑状态,当设定的FPGA所要跳转的逻辑状态的触发条件满足时,状态机控制FPGA进入对应的逻辑状态;当发生单粒子故障导致FPGA跳转至无效状态或者非设定的下一个逻辑状态时,状态机控制FPGA复位并返回初始状态,等待对下一次触发条件进行判断并对FPGA的逻辑状态进行控制。
【专利说明】—种FPGA单粒子翻转防护方法
【技术领域】
[0001]本发明涉及一种FPGA单粒子翻转防护方法。
【背景技术】
[0002]目前,在星载电子产品中大量采用了FPGA设计。由于FPGA会受到空间辐射环境影响引起单粒子翻转(SEU),导致逻辑错误,造成产品功能失效。因此,在选择空间应用的FPGA时,需要采用抗辐射加固的FPGA芯片。但由于国外对我国的抗辐射加固FPGA芯片实施禁运,在星载电子产品设计中需要采取相应的抗辐射加固设计措施来提高FPGA的抗单粒子翻转能力。
[0003]现有的设计往往通过FPGA内部逻辑的三模冗余和动态刷新重配置技术提高FPGA的抗单粒子翻转能力,由此带来FPGA规模的大幅度增加和硬件设计复杂度的大幅提高,功耗、重量、成本等也相应的大幅提闻。
【发明内容】
[0004]本发明的技术解决问题是:克服现有技术的不足,提供了一种FPGA单粒子翻转防护方法,通过状态机的复位接口设计,增强了 FPGA空间应用的抗辐射能力,提高了星载电子产品中FPGA空间应用的可靠性,可以很好地克服单粒子翻转对星载电子产品的影响问题。
[0005]本发明的技术解决方案是:一种FPGA单粒子翻转防护方法,采用状态机的方式对FPGA的逻辑状态进行控制,所述的状态机包括一个空闲状态和N个逻辑状态,所述的N个逻辑状态依次转换,每一个逻辑状态都对应FPGA中设定的一个逻辑状态;FPGA上电或者复位完成后,状态机初始处于空闲状态;当设定的FPGA所要跳转的逻辑状态的触发条件不满足时,状态机控制FPGA保持当前的逻辑状态,当设定的FPGA所要跳转的逻辑状态的触发条件满足时,状态机控制FPGA进入对应的逻辑状态;当发生单粒子故障导致FPGA跳转至无效状态或者非设定的下一个逻辑状态时,通过状态机复位接口使FPGA返回初始状态,等待对下一次触发条件进行判断并对FPGA的逻辑状态进行控制。
[0006]本发明与现有技术相比的优点在于:
[0007](I)本发明方法无需采用FPGA寄存器的三模冗余设计,减少了同等复杂度逻辑设计的FPGA资源使用量,能够优化FPGA布局布线结果,提高了 FPGA的评估频率;
[0008](2)本发明方法配合FPGA内部的状态机复位接口,主动定期对FPGA内部的状态机进行复位初始化,将SEU引起的状态机混乱恢复至初始态,保证FPGA的逻辑功能;
[0009](3)本发明方法能够在FPGA不重新上电或者重新复位的情况下,恢复由SEU单粒子翻转引起的FPGA状态机逻辑转换错误,而FPGA其他逻辑功能不受影响;
[0010](4)本发明方法部分弥补了 FPGA元器件抗SEU指标不足情况下的卫星应用。
【专利附图】
【附图说明】[0011]图1为本发明方法的流程图;
[0012]图2为本发明无SEU情况下的状态机切换流程图;
[0013]图3为本发明发生SEU情况下的状态机切换流程图。
【具体实施方式】
[0014]本发明方法主要从以下三个方面进行设计:
[0015](I) FPGA代码设计时采用安全状态机的防护设计;
[0016](2) FPGA设计时增加状态机复位接口设计;
[0017](3)配合FPGA逻辑设计,每次FPGA设计逻辑启动前,操作状态机复位接口重新初始化状态机;
[0018]状态机包括一个空闲状态和N个逻辑状态。空闲状态主要负责完成FPGA内部逻辑的初始状态设置;其他N个逻辑状态和FPGA实现的逻辑功能以及硬件电路的设计相关,每一个逻辑状态都对应FPGA中设定的一个逻辑状态,FPGA在该状态下需要进行的不同操作,如FPGA对外输出一个脉冲信号或者启动一个定时器工作等;这N个逻辑状态与FPGA具体应用相关。
[0019]具体工作过程为:FPGA复位完成后,状态机处于初始空闲(IDLE)状态;当状态机转换条件满足时,转入某一个状态等待下一个触发条件;当状态机转换条件满足时,依次进行FPGA的状态转换,按照FPGA设计逻辑完成预定功能后回到初始空闲(IDLE)状态,完成一次完整的FPGA逻辑功能,等待FPGA启动下一次工作时序。当状态机的转换受到SEU影响造成状态机死锁,则将FPGA内部的状态机逻辑恢复至初始状态(例如通过软件复位的方式),等待FPGA启动下一次工作时序。
[0020]如图1所示,本发明方法的完整工作过程如下:
[0021](I) FPGA上电或者复位完成后,状态机处于初始空闲(IDLE)状态;
[0022](2) FPGA停留在初始状态等待外部输入的状态机转换触发条件,当状态机转换条件满足时,FPGA逻辑转入状态I ;当SEU故障导致状态机非预期跳转至无效状态时,通过安全状态机设计安全返回至初始状态;当SEU故障导致状态机非预期跳转至状态M时,状态机依靠复位安全返回至初始状态;
[0023](3)根据外部状态机转换触发条件,依次进行FPGA的状态转换后,状态机进入状态M;
[0024](4)FPGA停留在逻辑状态M,等待外部输入的状态机转换触发条件;当状态机转换条件满足时,FPGA逻辑转入状态N ;当SEU故障导致状态机非预期跳转至无效状态时,通过安全状态机设计安全返回至初始状态;
[0025](5)FPGA停留在逻辑状态N,等待外部输入的状态机转换触发条件;当状态N的状态机转换条件满足时,FPGA逻辑正常回到初始状态,完成一次完整的状态转换;当SEU故障导致状态机非预期跳转至无效状态时,通过安全状态机设计安全返回至初始状态;
[0026](6) FPGA等待启动下一次工作时序,并重复上述过程。
[0027]如图2所示,本发明中状态机在未发生SEU单粒子翻转情况下的工作过程如下:
[0028](I) FPGA上电或者复位完成后,状态机处于初始空闲(IDLE)状态;
[0029](2)启动FPGA逻辑工作前,通过复位将FPGA进行初始化操作;[0030](3) FPGA停留在初始状态等待外部输入的状态机转换触发条件;当状态机转换条件满足时,FPGA逻辑转入状态I ;
[0031](4)FPGA停留在逻辑状态I,等待外部输入的状态机转换触发条件;当状态I的状态机转换条件满足时,FPGA逻辑转入状态2 ;
[0032](5)根据外部状态机转换触发条件,依次进行FPGA的状态转换,按照FPGA设计逻辑完成预定功能后回到初始空闲IDLE状态,完成一次完整的FPGA逻辑功能;
[0033](6) FPGA等待启动下一次工作时序,并重复上述过程。
[0034]如图3所示,本发明中状态机在发生SEU单粒子翻转情况下的工作过程如下:
[0035](I) FPGA上电或者复位完成后,状态机处于初始空闲(IDLE)状态;
[0036](2) FPGA停留在初始状态等待外部输入的状态机转换触发条件;当状态机转换条件满足时,FPGA逻辑转入状态I ;
[0037](3)当发生SEU单粒子翻转时,FPGA状态机编码翻转成一种无效编码状态时,通过安全状态机编码设计,将FPGA状态直接返回至初始IDLE状态,结束本次FPGA逻辑操作,等待启动下一次FPGA逻辑操作;
[0038](4)当从FPGA上电或者复位后,FPGA之前都未发生异常的情况下,FPGA的状态机已经运转并停留在逻辑状态1,并等待外部触发条件时,发生了 SEU单粒子翻转,FPGA在无外部触发条件的情况下,FPGA错误地进入了状态3 ;
[0039](5)由于FPGA内部状态机的转换受到SEU影响造成状态机逻辑混乱,使得FPGA跳过了状态2而直接进入了状态3,因此会造成FPGA状态机3的转换条件永远无法满足,引起FPGA的状态机死锁,再也无法继续进行FPGA的状态转换,造成FPGA功能失效;只有通过FPGA重新上电或者复位的方法才能恢复;
[0040](6)通过复位将FPGA状态机恢复至初始状态,等待启动下一次状态机正常转换工作时序,FPGA其他逻辑功能不受影响。
[0041]本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
【权利要求】
1.一种FPGA单粒子翻转防护方法,其特征在于:采用状态机的方式对FPGA的逻辑状态进行控制,所述的状态机包括一个空闲状态和N个逻辑状态,所述的N个逻辑状态依次转换,每一个逻辑状态都对应FPGA中设定的一个逻辑状态;FPGA上电或者复位完成后,状态机初始处于空闲状态;当设定的FPGA所要跳转的逻辑状态的触发条件不满足时,状态机控制FPGA保持当前的逻辑状态,当设定的FPGA所要跳转的逻辑状态的触发条件满足时,状态机控制FPGA进入对应的逻辑状态;当发生单粒子故障导致FPGA跳转至无效状态或者非设定的下一个逻辑状态时,通过状态机复位接口使FPGA返回初始状态,等待对下一次触发条件进行判断并对FPGA的逻辑状态进行控制。
【文档编号】G06F11/00GK103530196SQ201310439347
【公开日】2014年1月22日 申请日期:2013年9月24日 优先权日:2013年9月24日
【发明者】胡洪凯, 施蕾, 田宇斌, 吴琨, 刘波, 任宪朝, 孙强, 程铭 申请人:北京控制工程研究所