《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 容错系统中的自校验技术及实现方法

容错系统中的自校验技术及实现方法

2009-02-03
作者:陈胜功 宋子善

  摘 要: 阐述了自校验技术在容错系统中的作用,给出了自校验网络实现原理及实现方法,指出用VHDL语言结合FPGA/CPLD是实现大规模自校验网络的有效途径。
  关键词: 容错 自校验 完全自校验 VHDL FPGA/CPLD


  容错是容忍错误的简称,容错系统是指在发生硬件故障或存在软件错误的情况下,仍能继续正确完成指定任务的系统。设计与分析容错系统的各种技术称为容错技术。有关计算机容错技术的各种理论及研究已经发展成为计算机学科的一个重要分支,称为容错计算(Fault-tolerant Computing)。设计容错系统的指导思想是:系统发生故障时能自动检出并使系统自动恢复正常运行。
  为保证系统具有高可靠、长寿命和响应迅速,必须采用容错技术。从功能上讲,一个容错系统可用图1所示框图来描述,系统模块可由若干个功能相同的子模块并联组成,故障检测模块对系统模块的功能进行检测,检测到故障后由故障处理模块对系统模块进行重新配置,使系统在部分模块失效的情况下,仍能输出正确结果。在这个系统中,故障检测模块和故障处理模块起着至关重要的作用,它们往往是系统的薄弱点。因此,容错系统要有高的可靠性必须保证故障检测和处理模块的可靠性,故障检测系统不仅要检测系统模块的故障,而且还要能够检测自身的故障,使故障处理模块得以正确处理所发生的故障。


  自校验技术是用于故障快速检测的一种有效手段,特别是具有完全自校验性质的自校验装置,它不仅能及时检出系统模块的差错,还能检测出自身的差错。在容错系统设计中,将自校验网络置于系统中,可大大提高系统对差错的反应能力,使差错潜伏期缩短,有效地防止错误传播。
1 自校验网络定义
  一个容错系统,其所有可能的输出值组成的集合U(称输出空间)由S和U-S两部分组成。当系统中无故障时,系统输出S中的元素,一旦系统发生故障则输出U-S中的元素。
  如果一个电路的正常输出集S是一个检错码集,则该电路称为自校验电路。在无故障发生的情况下,自校验电路输出码向量;当预定故障发生时,则输出非码向量。连接在自校验电路输出端的校验器监督电路的输出,当非码向量出现时,校验器给出差错指示。自校验电路与校验器一起构成了自校验网络,其结构如图2所示。


  下面我们给出自校验网络的几个概念,设S(X)是输入向量空间,Sn(X)是合法输入向量空间,Sa(X)是非法输入向量空间,S(F)是输出向量空间,Sn(F)是合法输出向量空间,Sa(F)是非法输出向量空间,Fsc组合逻辑网络所考虑的单故障集,网络的所有输入取自其合法输入集。
  定义1:组合逻辑网络对Fsc是自测试的(简称ST),若:对任意故障f∈Fsc存在X∈Sn(X),使网络输出Gf(X)∈Sa(F)。
  该定义是说对给定单故障集中的任何一个故障,总存在一个合法输入,它将导致组合逻辑网络产生非法输出,即用该输入可检测此故障。
  定义2:组合逻辑网络对Fsc是故障保险的(简称FSE),若:对任意故障f∈Fsc、存在X∈Sn(X)、使网络输出Gf(X)=G(X),或者Gf(X)∈Sa(F),其中G(X)是网络的正确输出。
  该定义是说在合法输入条件下,对给定单故障集中的任何一个故障,组合逻辑网络将给出一个合法输出或一个非法输出,但不会给出同该合法输入不相对应的另一个合法输出。
  定义3:组合逻辑网络对Fsc是完全自校验的,若它对Fsc是自测试的和故障保险的。
  对给定单故障集中的任何一个故障,完全自校验的组合逻辑网络在合法输入的情况下,或者产生一个合法输出,或者产生一个非法输出,且后者在故障存在期间是必然要出现的。这就使得网络在不产生不正确合法输出的同时,能并发检测Fsc中的所有故障,这也正是在线测试对差错检测及时性的要求。
  若采用检错编码技术实现自校验逻辑网络时,校验器的任务是用来检查功能模块输出码字的有效性,它能区分功能模块输出是否合法,这种特性被称为码分离特性,其定义如下。
  定义4:一个逻辑网络具有码分离特性,若满足:
  (1)任给X∈Sn(X) ,有G(X)∈Sn(F)(合法输入映射为合法输出)
  (2)任给X∈Sa(X),有G(X)∈Sa(F)(非法输入映射为非法输出)
  定义5:一个逻辑网络是完全自校验器,若它具有完全自校验及码分离特性。
  设组合逻辑网络正确输入矢量为Sc(X),则矢量空间Sn(X)-Sc(X)称作错误输入空间,记作Se(X);空间S(X)-Sc(X)被称作非法及错误输入空间,记作Sae(X)。由正确输入空间Sc(X)经电路G可在S(F)中产生一个子空间,这个子空间称为正确输出空间,记为Sc(F)。同样,对于合法输入Sn(X),由组合逻辑网络可映射为合法输出空间Sn(F)、它也是输出矢量空间S(F)的子集。同样,空间Sn(F)-Sc(F)被称作错误输出空间,记作Se(F);空间S(F)-Sc(F)被称为非法及错误输出空间,表示为Sae(F)。上述输出之间有如下关系:
  S(F)=Sc(F)∪Sae(F)=Sn(F)∪Sa(F)
  Sae(F)=Sa(F)∪Se(F)
  由上面集合之间的关系我们可以看出,对于无故障组合网络的正确输入,其输出应落入正确输出空间Sc(F)中。通过对网络的输出可部分判定系统工作是否正常(无法判断某些故障)。当网络发生故障时,可分成以下几种情况:①非法及错误输入被映射成Sc(F);②输入Sc(X)被映射成为Sae(F);③Sc(X)映入Sc(F)但已不是正确的映射关系,也就是说输入输出关系发生了变化。对于一个高可靠容错系统来说,必须能够以比较高的故障覆盖率来检测出以上三类差错(最好在一拍内检出),使系统及时采取措施,隔离故障,将其影响减小到最低限度。在三类错误中,第①类和第②类与第③类相比要好检测一些,高效检测第③类错误是提高系统故障覆盖率的关键,只有设计出对以上三类错误检出率均较高的检错系统,才能保证系统有较高的可靠性。
2 自校验网络的结构
  自校验网络具有在无任何外加激励的情况下能自动检测其内部是否存在故障,这些故障或是永久性的或是暂时性的。设计自校验网络的主要技术有检错编码技术,基于自对偶函数的交替逻辑技术(交织逻辑技术),基于对偶函数的互补逻辑技术,还有基于多值逻辑的实现方法,下面我们主要讨论一些实用的实现方法。
2.1 双轨码校验器
  双轨码校验器的原理图如图3所示。


  输入矢量为(Y1,Y2),其中Yi=(yil、yi2、…yin),(i=1、2),输出矢量为Ze且满足:
  Ze∈Sn(Ze)={(0、0)、(1、1)}、若Y1、且校验器无故障。
  利用双轨码校验器的上述特点,设计一对偶组合逻辑网络,使其输出向量Y1和Y2恰好反相,将Y1和Y2加到双轨码校验器输入端,根据Ze就可以判定系统是否发生故障。
2.2 可分码校验器
  可分码校验器的结构如图4所示。校验器的输入矢量为Y=(Y1,Y2),矢量Y1和Y2分别对应可分码的信息分量和校验分量。其中,信息分量宽度为‖Y1‖=I,
  ‖Y2‖=K,K=[log2(I+1)]是校验分量的宽度,且I+K=n,
  n=‖Y‖。校验位生成电路根据信息位Y1重新生成校验位W,由双轨码校验器比较W与Y2的一致性,在无故障的情况下,校验器的输出Ze指示输入矢量的有效性。下面的定理给出了图4完全自校验可分码校验器的构造条件。
  定理:图4所示的可分码校验器是完全自校验的,若校验位生成器是一个无冗余的组合逻辑网络,且比较器是完全自校验的。


2.3 互补逻辑网络
  利用互补逻辑也可以构成自校验电路,如果某一逻辑网络其输入输出关系为f=g(x1,x2、,…,xn,·,+),则可构造一互补逻辑网络,使其输入输出关系为其中f和f是互补的,在无故障的情况下,其输出是互补的;若发生输出相同,则两个逻辑电路中必定有存在故障的情况。互补逻辑网络实现原理比较直观,但对较复杂的系统,有许多故障它是检测不出来的。
2.4 交织逻辑网络
  交织逻辑网络是基于自对偶函数的自校验逻辑网络。一个二进制变量是交替的,记作(x、x)、若x在两个连续的时间间隔内所取的值互补。
  

3 自校验网络实现方法
  对于一些比较简单的应用场合,利用数字逻辑方法进行设计,使用SSI及MSI集成电路即可方便地构成自校验网络。但实际容错系统非常复杂,涉及大量逻辑设计,若仍采用传统的数字逻辑设计方法,不仅工作量大、容易出差错,而且修改和功能仿真都不方便。使用电子设计硬件描述语言VHDL(或Verilog HDL)对电路功能进行描述,用FPGA或CPLD器件实现自校验网络是比较现实的,对于大批量生产,可将VHDL描述的电路送半导体器件厂进行批量生产,VHDL硬件描述语言实现自校验网络的步骤如下:
  ①建立自校验网络的功能模型。对系统的输入/输出、状态转换、信号传递等进行详细的说明。
  ②用VHDL语言或Verilog HDL语言对电路功能进行描述。对复杂系统可采用“自上而下”的设计方法,将系统分解成不同层次的、功能较简单的模块,利用VHDL语言对系统功能进行分层描述,减少系统描述造成的错误。
  ③对不同层次的模块进行功能仿真,以检验各模块设计的正确性,最后对整个系统进行功能仿真,及早排除系统设计中的错误。
  ④用VHDL或Verilog HDL综合编译器对设计好的系统进行编译,经过逻辑化简及综合布线,生成可对FPGA或CPLD编程的数据文件。
  ⑤将数据文件通过编程器写入FPGA或CPLD,进行实际测试,若测试数据满足设计要求,则开发工作完成;否则,转①重新进行检查和设计。
  采用自校验技术后,可有效地提高容错系统的可靠性,随着集成电路技术的飞速发展,可将一些自校验功能模块进行封装,作为标准单元使用,在模块级上提高容错系统的可靠性。采用高级语言和FPGA或CPLD开发容错系统具有重要的现实意义,可有效缩短开发周期,降低开发成本,提高系统可靠性,应在工程设计中加以推广应用。

参考文献
1 袁由光编著.实时系统中的可靠性技术.北京:清华大学出版社,1995
2 杨士元编著.数字系统的故障诊断与可靠性设计.北京:清华大学出版社,1989
3 胡谋主编.计算机容错技术.北京:中国铁道出版社,1995
4 B.W.Johnson.Design and Analysis of Fault-Tolerant Digital System.A.W.Publishing Company,Inc.、1989
5 S.Habinc et al.Using VHDL for Board Level Simula-tion.IEEE Design & Test of Computers、Fall、1996

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。