微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种FPGA单粒子软错误检测电路设计

一种FPGA单粒子软错误检测电路设计

时间:09-12 来源:互联网 点击:

自身所在的功能模块的故障,以及其一定物理相邻区域内功能电路的故障。即高能粒子的影响通过单粒子效应的空间分布特性产生了传递,并被记录在其他功能模块中。

因此,单粒子效应故障的检测可以考虑在待检测电路附近,合理放置状态已知的检测电路。通过其状态的变化,推断待检测电路是否发生单粒子故障。这样的方法,除了可以准确检测、定位故障电路,还能以降低故障检测带来的资源或者性能损失。

3 FPGA单粒子软错误检测电路设计

FPGA单粒子软错误的检测和诊断的关键是寻找已知状态点进行比较。因此,FPGA检测点的选择需筛选出本身状态已知的点,或设计已知状态点,以实现状态的对比分析。即若筛选出的待检测点状态已知,则该点选择为检测点;若筛选出的待检测点状态未知,则选择与该检测点耦合关系最紧密的状态已知点为检测点。

由第2节的分析可知,当一束高能粒子轰击到FPGA的某一区域时,发生单粒子软错误的区域是以该被轰击区域为中心、直径远大于该轰击区域直径的一圆形区域。因此,当某一待检测点发生了单粒子软错误,基于空间上的分布特性,其相邻区域内的电路也将发生单粒子软错误。由此,基于单粒子效应的空间分布特性,本文设计了如图1所示的状态已知的检测电路,用于检测状态未知的功能电路的状态。同时,该检测电路对状态已知功能电路同样可用。

此时,无论待检测点状态是否已知,均可在其周围放置图1所示的原理电路,完成FPGA单粒子软错误的检测。其中,检测电路的设计可采用触发器沿敏感复位或采用锁存器电平敏感复位两种设计,分别如图2、图3所示。

图2、图3所示检测电路中。每个检测电路存储一个已知的初始值(0、1均可)。初始状态、复位之后以及当前值与初始值相同时,Q端向外输出低电平;当检测点的当前值与初始值不同时(即将当前值与初始值进行异或操作),认为发生了SEU翻转,Q端向外输出高电平并保持,直到rst信号有效,检测点恢复到初始状态(rst上跳沿或下跳沿复位可采用图2所示电路;rst高电平或低电平复位可采用图3所示电路。设计中选用一种即可)。检测电路的真值表如表2所示。

由此,每个检测点可以由多级、多个检测电路组成,每级可以有多个检测电路,如在图1中,检测点0由两级检测电路组成,第一级包含1个检测电路,第二级包含2个检测电路。同级之间的多个检测电路之间、多级之间,产生的输出信号通过或门,产生新的输出,最终,每个检测点输出1跟SEU信号,送往SEU状态寄存器。

SEU状态寄存器的个数、每个寄存器的位数,可以根据自己的实际情况确定,只需“寄存器个数×寄存器位数=检测点数量”即可。

状态读取模块根据用户实际情况进行设计,可使用用户芯片中原有的数据读取通路。图1的示例中,使用并行接口对SEU状态寄存器进行读取,数据线、地址线的位数可根据实际情况进行设定。

SEU状态读取完毕后,通过该接口,设置复位寄存器的值,产生rst信号,对所有检测点中的检测电路进行复位,将其恢复到初始状态。

当完成一次检测后,由SEU状态寄存器记录当次检测结果,该结果可以由状态读取模块根据需求读出。同时,根据检测结果,驱动FPGA完成局部电路刷新,以恢复期正常状态。

显然,该检测电路可以推广到所有FPGA组成模块的检测,只需将其放置在待检测电路的附近,利用单粒子效应的空问特性,均可根据检测模块的状态变化,获得待检测电路发生单粒子软错误的情况。

4 仿真验证

本文利用图1所示的检测电路,并在Modelsim下进行了仿真测试,结果如图4所示。

图4中,通过tb向第31和第2个SEU检测点,即SEU31、SEU2注入了SEU故障。可以看到,SEU内部状态寄存器的值已经改变,通过状态读取模块,可以将SEU状态读出(读出的结果为seu_status_readout)。仿真结果证明了本文设计的检测电路的可用性和有效性。

5 结论

本文分析了FPGA器件发生单粒子效应的空间分布特性,设计并实现了一种检测电路。将该电路放置在FPGA待检测电路的附近,利用单粒子效应的空间特性,均可根据检测模块的状态变化,获得待检测电路发生单粒子软错误的情况。仿真实验表明,该电路是可行、有效的检测电路,具有很小的资源或者性能损失,具有很好地应用价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top