首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于FPGA的TMR方法改进策略
来源:本站整理  作者:佚名  2011-09-10 07:35:22



2 改进的TMR方法

  2.1 TMR与Scrubbing结合

  由于TMR本身不具备错误模块修复能力,若仅一个模块出现错误时,系统功能不受影响,但如果在另一个模块出现错误前不能对已出现的错误模块进行修复,那么冗余方法会失效。所以当出现一个错误的时候,必须及时地对出错的模块进行修复。

  随着动态可重构技术的发展,出现了Scrubbing这种对FPGA进行配置的方法。由于对于空间电子系统来说影响最严重的是SEU等软故障,而软故障可以通过重构来解决,所以周期性地对配置存储器进行刷新可以实现对这类错误的修复。

  Scrubbing和TMR配合使用对防止SEU的产生可以起到很好的效果。但很多研究同样只考虑到单个错误的影响,而忽略了多个SEU同时出现的可能性。理论上一个快速的刷新率可以保证某一时间内只有一个错误的存在。然而实际中错误的出现是随机的,这意味着任何刷新率都不能保证在一个刷新周期内最多只出现一个错误。在实际中使用这种方法时,必须通过复杂的实验过程对SEU出现的概率进行估计。选取Scru-bbing的刷新率的经验原则是使刷新率比估算的出错率高一个数量级。而现在随着FPGA的规模越来越大,用来装载整个配置位流的时间会达到几百毫秒,刷新率更得不到保障,且系统功耗增大。

  随着部分TMR的实现,可以设计出具有检错和定位功能的表决器,当某个模块出错时,表决器的信号直接触发重构功能,动态地只对出错部分的电路进行重构。这样可以解决Scrubbing时间和功耗的问题,并为防止错误积累提供了解决途径。

  为了防止表决器出错,表决器可以采用对辐射不敏感的器件来实现而替代基于SRAM的材料,这样提高了表决器的稳健性。文献也提出了一种改进的表决器。它不再使用多数表决器对三个冗余模块的输出进行表决,而是将三个冗余模块相应的输出通过三态缓冲器和少数表决器后分别由FPGA的三个输出管脚输出,最后在印刷电路板(PCB)上“线或”为一个信号。少数表决器电路负责判断本冗余模块的信号是否是少数

  值,如果是少数值,则相对应的缓冲器输出高阻,如果不是,则使相应的信号正常输出。

  Readback是在Scrubbing的基础上发展起来的。它是指将配置数据回读与最初的配置数据进行比较,发现错误后进行重构。文献中使用了这样的方法,另外它还采用了纠错码来保护配置数据。每一个配置帧的数据被12位的see-dec汉明码保护,而且FPGA中每个基本单元的识别码都不一样,通过ICAP(InternalConfiguration ACCess Port)回读配置文件后,纠错码可以给出错位的位置。

  Scrubbing可以在不中断电路工作的情况下修复SEU在LUT、布线矩阵和CLB中所造成的功能错误。但是它不能改变LUT中触发器中的内容,所以它也就不能重置寄存器的状态。当存储单元的值发生了翻转,此时只能通过系统复位来得到修复。然而系统复位将使系统功能中断,严重影响系统的性能。

  2.2 小粒度TMR技术

  随着部分动态重构技术的出现,产生了小粒度的TMR方法。可以以较小的粒度为步长,采用合理的布局与布线实现TMR以达到要求的资源开销并得到最大的可靠性。文献中对在出现多个错误的情况下不同粒度TMR的容错性能进行了实验分析,结果表明小粒度TMR比以整个系统为粒度进行TMR的效果好。

  在全局TMR不可行的情况下(例如资源有限),小粒度TMR是一个较好的选择,可以在使用较少资源的情况下提高系统的可靠性。由于不是对所有的模块都采用冗余措施,所以在实现的时候必须着重于对那些可以相对更高地提高系统可靠性的模块应用TMR技术。此时表决器的数量和位置也是一个需要考虑的问题。由于采用三模冗余的模块前后需要额外的布线,而逻辑电路和布线资源都对SEU敏感,所以这样的结果会降低系统可靠性。如图2所示,图中阴影部分是对SEU敏感的,由图可以看出(c)中敏感的部分比(b)中多,这是由于表决器和额外的布线造成的。所以需要限制三模冗余电路和未采用三模冗余的电路的转变,这样可以通过集中使用三模冗余技术而提高系统可靠性。

  

  为了选择需要进行三模冗余的模块并进行合理的布局布线,将系统出现的错误分为持续性错误和非持续性错误。持续性的错误是指由SEU产生的改变了电路内部状态的错误;非持续性错误是指可以通过FPGA重构而消除的错误,而持续性错误在重构后依然存在。

  结合以上的分析,实施部分TMR的优先级别如下:

  第一级是会产生持续性错误的部分。

  第二级是会导致能产生连续性错误电路部分出错的电路,以降低TMR和非TMR之间的转换为准则。

  第三级是会产生持续性错误电路的前向部分,同样以降低TMR和非TMR之间的转换为准则。

  第四级是与会产生持续性错误电路部分独立的部分。

  可以通过静态的分析来对电路进行划分。这里存在的问题是在标准的全局TMR中,所有的输入、输出以及时钟都进行了三模冗余,而使用部分TMR时,对I/O以及时钟的冗余有可能不能被实现。和没有采用TMR的逻辑电路一样,没有进行TMR的时钟和I/O同样可以产生不能被检测的错误。

  由实验结果来看,由于此方法主要着重于能产生持续性错误的电路部分,所以当所使用的冗余资源增多时,持续性的错误出现的几率很快的降低,最终几乎全部被克服掉。所以采用部分TMR可以在资源和可靠性间达到平衡,在最小限度影响可靠性的条件下,最大限度地提高资源利用率。

  另外,一个翻转有可能改变配置存储器中控制布线的配置位,而使得两个不同冗余模块间的连线短路,这样一个翻转影响了TMR中不止一个模块,导致输出错误。而配置资源中的90%都用来控制布线,所以这个问题是需要考虑的。产生这种错误的可能性还依赖于TMR的布局,而TMR的布局直接依赖于多数表决器的数量。当表决器增多时,模块之间需要额外的连接,所以各模块必须靠得很近,这样使得一次翻转导致模块之间短路的可能性增加。为了降低会影响TMR稳健性的产生改变布线的错误的可能性,必须最大可能地减少各个模块之间的连接。如果多数表决器的数量可以被降下来,那么模块之间的连接可以减少。

  解决这个问题的方法是采用较大粒度的TMR以降低它们之间的连接,且表决器只应用在电路输出部分。但同时又出现了一个新的问题,例如为对存储单元的状态进行修复,Xilinx提出了将表决器应用在有寄存器的地方并加入反馈以纠正翻转对寄存器中值的影响的XTMR方法,如果内部的表决器被去掉,那么出错部分存储单元的错误将得不到纠正,所以重构后它与其他模块工作的状态不同步。

  文献中解决这个问题的方法是通过从外部存储器中读取存储的工作状态。但是这个方法需要三个模块离线后才能进行状态的存储和重置进而达到同步。显然可行性不高,尤其是对实时性要求高的电路。

  针对此问题,文献提出了一种同步技术,该技术TMR系统中采用状态寄存器复制机制,并在三个冗余模块之间引入数据通路来传输状态寄存器的数据。当某一个冗余模块发生故障被局部重构后,能够通过接受主控制器的令牌,从正常模块复制状态寄存器的数据来完成同步而及时地恢复工作。该方法缩短了故障模块从修复到重新加入系统工作的时间,从而减小发生故障积累的概率,提高冗余系统的可靠性。

  另一种方法是预测其他模块最快会达到的状态,然后对重构后的模块进行状态的预置。这时只需使要重构的模块停止工作而不影响其他两个模块的工作,当工作模块的状态和预置的状态同步时,三个模块又一起工作。此时状态选择是一个问题,这个状态到达的频率必须很高,而且会在较快时间内到达,另外多个状态可以提高效率但同时会使预置信号宽度增加。

  如果寄存器中状态不可预测,例如寄存器链和加法器,那么不能使用这个方法,所以这种方法需要改进以提高其适应性。在TMR各模块布线时,尽量将它们相隔有一定的距离,这样也可以降低一个模块出现错误后对其他模块造成影响的可能性。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:113,625.00000 毫秒