基于EDAC模块嵌入到ARINC 659用来提高总线控制器的容错处理能力

基于EDAC模块嵌入到ARINC 659用来提高总线控制器的容错处理能力,第1张

摘 要: 航天应用中,单粒子翻转引发SRAMFPGA的错误最多,而EDAC设计在纠错模块中有着广泛的应用。将依据扩展海明码设计的[40,32]EDAC模块嵌入到ARINC 659的双口数据DPRAM和指令SRAM中,提高了总线控制器的容错处理能力。

0 引言

集成电路的应用领域在不断深入扩大,航空航天方面要求系统能长期可靠地运行,其运行的环境辐射比地面辐射严重,集成电路很容易受到干扰,导致设备不能正常工作。单粒子翻转是指高能粒子射入集成电路的PN结,会发生PN结电离、电荷积累、能量转移等。存储器件某一位数据会从一个稳态转变为另外一个稳态,是引发航天器故障的主要因数。

为了最大限度地减少单粒子效应对FPGA的影响,通常采用三模冗余的加固结构,尽管三模冗余结构可以将错误暂时隔离,但是在长期工作的情况下冗余单元也可能继续发生错误。近年来国内外采用EDAC电路来减少或避免错误的发生。常见的EDAC电路都是采用专用芯片配上时序来工作的,这不利于系统的集成小型化和低功耗。本文基于ARINC 659控制器的设计,利用Verilog HDL实现EDAC的功能,使设计朝着高集成、低功耗的方向发展[1]。

1 ARINC 659总线技术简介

ARINC 659[2]是一种航空电子模块化设计的背板总线标准,有鲁棒分区,具有确定的时间和空间性。霍尼韦尔公司根据ARINC 659标准设计的SAFEbus用于波音777的飞机信息管理系统中,从1993年被采纳成为行业标准至今已经稳定运行30多年。它能够应用于大型客机的电子系统,表明ARINC 659是一种较为可靠的内总线,适用于航天系统的综合电子平台。

在ARINC 659标准中,每一个可插拔的子板被称作在线可更换模块(Line Replaceable Module,LRM)。每个LRM有两个总线接口(Bus Interface Unit,BIU)。在该标准中,一条659总线上最多允许连接32个LRM。ARINC 659使用时间触发的调度方式称为表驱动比例访问协议(Table Driven ProporTIonal Access,TDPA),并将决定总线时分复用特性的调度表保存在每个BIU中,维护协议的数据开销非常小。ARINC 659的4线交叉校验机制可以对每一位进行校验。

ARINC 659假设每个BIU使用独立的时钟,储存相同的TDPA表,因此在总线工作时是没有中心控制的分布式系统的。同时,ARINC 659也支持LRM的冗余,协议中最多允许某项功能有4个LRM做备份。

目前见到的航空总线标准中,ARINC 659总线的实时性、可靠性和冗余度是最高的,但霍尼韦尔公司只提供整机解决方案,不提供芯片,因此研究该总线能为我国航空电子系统开发与应用提供帮助。

2 EDAC的原理与实现

2.1 海明码的基本原理

海明码是一种广泛使用的可以纠正单个错误和检测任意两位错误的线性分组码。常见的海明码应满足不等式2m≥n+m+1,其中n为数据码的位数,m为校验码的位数,如果要求既要能纠正一位错位又能检测出两位错位,则至少需要m+1位校验码。该控制器中传输32 bit数据,依据海明码的原理,使用8 bit校验位,构成[40,32]扩展海明码。依据规则,在数据位的第2k(k=0,1,2,3,4,5) bit上放置校验码。

2.2 EDAC模块的设计与实现

EDAC模块在CPU与RAM之间[3],保护控制器RAM的数据,CPU对RAM *** 作时,EDAC模块已经对RAM中的数据进行了预处理,同时EDAC模块中也加入了使能信号。EDAC主要工作在写周期和读周期,如图1所示,EDAC主要包括发送和接收两个部分。

基于EDAC模块嵌入到ARINC 659用来提高总线控制器的容错处理能力,一种基于FPGA的航空总线容错机制设计,第2张

 

上面发送模块负责海明码编码,用控制电路寄存器中的数据位确定校验位,然后依据海明码的长度和编码方案编码。将并行转成串行数据发出去。接收模块主要负责海明码纠错与解码,解码过程就是依据已知校验位数确定码字长度;而纠正就是用已经生成的校验码和形成该校验码的编码方程再进行一次异或 *** 作,如果该等式为0,则代表没有发生错误,若等式为1,说明有错,可以从等式的值判断具体的出错位,纠正后再从码字中选出数据位。

EDAC模块通过Verilog HDL在FPGA中实现,其总体框架如图2所示,其各变量的含义如下:

wr:CPU读写信号,0和1分别表示为写和读。

c_data[7:0]:CPU的传送和接收数据。

mem_data[39:0]:存储器数据包括32 bit数据位和8 bit校验位。

er_out[1:0]:错误类型,分别为无错误、1 bit错、2 bit及2 bit以上错、校验位错误。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2605327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存