找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 抗SEU存储器的设计的FPGA实现

[复制链接]
admin 发表于 2013-3-21 03:46:13 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
  O 引言
     随着我国航空航天事业的迅猛发展,卫星的应用越来越广泛。然而,太空环境复杂多变,其中存在着各种宇宙射线与高能带电粒子,它们对运行于其中的电子器件会产生各种辐射效应。辐射效应对电子器件的影响不可忽视,因为辐射会使器件的性能参数发生退化,以至失效,从而影响卫星的可靠运行,缩短卫星的使用寿命。辐射效应对电子器件的影响很多,其中最主要的有总剂量效应(TID)和单粒子效应(S-EE)。SEE按产生的影响主要包括单粒子翻转(SEU)、单粒子闩锁(SEL)和单粒子烧毁(SEB)等三种类型,其中以SEU最为常见。在各种辐射效应当中,存储器对SEU最为敏感,所以,对存储器的抗辐射设计首先要考虑的就是抗SEU设计。
     事实上,不同的空间环境和应用需求,对存储器的数量与质量也有不同的要求。例如:在上传指令与下载星载仪器仪表的状态时,要求数据有很高的可靠性,此时对内存容量则没有特别的要求;而在处理某些用途的图像数据时,对数据可靠性的要求则相应较低,此时则需要较大的内存容量。所以在采用具体的抗SEU方法时,也要因其不同情况而做出适合的选择。
     本文将采用扩展汉明码编码(Extended Hamming Code)与三模冗余(Triple Modular Redundancy,TMR)相结合的方法,并利用二者检错纠错的不同特点,来对SRAM进行检错纠错模式可调的抗SEU设计。这样既可实现存储器的抗SEU设计。又可满足对存储器使用灵活性的要求。
     1 扩展汉明码与TMR检错纠错原理
     1.1 扩展汉明码检错纠错原理
     扩展汉明码是一种常用的能检测两位错同时能纠正一位错的编码方法。它是在汉明码的基础上.在码字上再加入一个对所有码元都进行校验的校验位而得到的,故称为扩展汉明码。
     扩展汉明码是线性分组码的一种,其信息位和监督位的关联可由一组线性代数方程组表示。(n,k)线性分组码的编码就是去建立由r(其中r=n-k)个生成冗余位的方程式构成的方程组,再由此方程组转化为kxn的生成矩阵G。编码时,可将信息位向量(k维)乘以生成矩阵G,从而得到码字向量(n维),如下式所示:
     
   
     将式(1)表示的方程组作移位变换,可以得到式(2),通常称H为监督矩阵。
      20121107053424790702986.jpg
   
     解码时,通过监督矩阵H与读出的码字向量C的乘积结果可判断该码字是否出错。若读出的码字向量C乘上监督矩阵H后得到一个零向量,则表示没有出错;否则表示码字在存储之后受到了单粒子效应的影响,有错误发生。通常将监督矩阵与读出的码字向量C的乘积记作S,称为校验子。当码字中某一位发生错误时,就会得到唯一的S向量,该向量只与码字出错的位置有关,而与码字C无关。通过S向量可以定位出错的位置,并对出错数据进行改正。
     作为线性分组码的一种,扩展汉明码的分组编码总长为2r位,信息位长度为2r-1-r位,即(2r,2r-l-r)扩展汉明码。本设计采用了16位RAM存储器,所以对应使用(22,16)扩展汉明码。
     1.2 TMR检错纠错原理
     TMR是一种常见的硬件冗余技术。它的原理是在相同的一组硬件单元上同时发生错误的概率要比在单一硬件单元上发生错误的概率小。它的基本方法是将所需容错的硬件单元增加到三倍或更多,并将各个单元的输出连接到一个表决器上,由表决器选择所有硬件单元中的绝大多数输出值作为整体的输出值。图1所示为三模冗余系统结构图。
      20121107053424821952987.jpg
   
     图1中,A1、A2、A3三个模块同时执行同样的操作,并将其输出送给表决器,然后由表决器对接收到的三路数据进行比较。如果三个模块同时给出三个相同的输出,则表决器输出任何一路作为正确输出。如果其中任一模块出错,其输出不同于其它两个模块,则表决器依然输出正确结果。如果有两个模块同时出错,且变成相同的状态,表决器则会误认为这是正确的结果并输出,不过这种情况的出现虽然可能,但概率非常小。当然,如果这两个模块同时出错,但出错状态不同,则表决器此时将无法做出选择,但可以产生中断。
     2 内存配置方案
     通过上面对扩展汉明码与TMR两种检错纠错方式的介绍,可以发现其二者各有优势,分别适用于不同的环境条件和应用需求。但是,这两种方案对于内存配置的要求是不同的,所以在对整个电路的设计之前,首先要对内存作如下配置。
     本设计中使用了3片16bit的SRAM。并分别采用(22,16)汉明码和TMR两种检错纠错方法。对于(22,16),一般采用(16+8)位的存储器来实现,而TMR,则采用16位的存储器来实现。若要支持这两种方法,则必须首先为存储器设计一种特别的内存配置方式。本设计采用如图2所示的内存配置方案。
      20121107053424868822988.jpg
   
     对于图2所示的内存配置方案,当系统工作在TMR模式时,所有的片选信号都被相同的信号驱动,这样就构成了TMR需要的3个16位内存空间;而当系统工作在汉明码模式时,它们则ah、al、bh为一组,bl、ch、cl为另一组,并分别被相同的片选信号驱动,从而构成了两个独立的(16+8)位的内存空间。本设计采用了3片128 K×16bit的SRAM,如果设置每片SRAM的低4K×16bit空间工作在TMR模式,则从图中可以看出,该SRAM芯片组中还有两个124 K×(16+8) bit的空间可以工作于扩展汉明码模式。
     3 电路设计
     基于上述内存配置方案,本文设计了如图3所示的抗SEU存储器电路。该电路包含了4个功能模块。
      20121107053424900072989.jpg
   
     3.1 TMR模块
     在TMR工作模式下可完成数据的写入操作和读取操作中的冗余判决。如果在读取过程中发现有一片RAM中的数据与其它三片不同,则对该片RAM进行正确数据的回写;如果发现三片RAM中的数据都不相同,则产生中断信号。
     3.2 扩展汉明码模块
     在扩展汉明码工作模式下,当写入数据时,则对其进行编码;当读取数据时,则对其进行相应的解码,并判断数据是否出错。如果一位错则自动回写正确值,如果两位以上的错误,则产生中断信号。
     3.3 模式选择模块
     在该模块内部设置有一个32位的模式配置寄存器。通过给模式配置寄存器的低18位进行预先置数,可以设置检错纠错电路的工作模式,同时也就设置了RAM的内存配置情况。根据CPU的不同应用要求,模式控制模块可以让检错纠错电路在扩展汉明码方式与TMR方式二者之间进行灵活的切换。
     3.4 控制逻辑模块
     该电路模块可根据电路所处的检错纠错模式来控制相应的读写信号和内存片选信号,以便正确访问RAM内容。
     4 FPGA的编程与实现
     接下来对每个模块在设计过程的具体考虑进行重点介绍。
     4.1 TMR模块
     对于TMR模块的设计较为简单。需要特别指出的是,考虑到对电路有效性的验证,在写通道上另外添加了错误注入模块。图4所示是其设计框图,图中,ctrl_err为错误注入控制信号,当ctrl_err为0时,表示不注入错误;当ctrl_err为1时,表示注入错误。这样可以通过对ct-rl_err信号的控制来实现对SEU效应的模拟。add_err[7..0]为注错数据信号。将add_err的低四位用0000~1111表示,可用于表示给数据添加错误的位置,它的高四位甩XX01~XX11表示,则可分别表示要给RAM组中的某个RAM添加错误。
      20121107053424946952990.jpg
   
     4.2 扩展汉明码模块
     扩展汉明码模块的设计主要包括编码模块、伴随式生成模块以及差错校验模块等。编码模块可使用式(1)进行编码,可生成r个校验位。并将它们依次添加到码元序列的第2i-1(其中i=0,…,r-1)个位置上。伴随式生成模块使用式(2)进行解码,可对应生成校验子S。差错控制模块可根据生成的校验子S来判断数据是否出错,以及出错的位数,并用sef与def表示。如果数据没有出现错误,则直接送出;如果数据中有一位出现错误,则对其进行回写,同时将修正的数据送出;如果两位出现错误,则输出中断信号int。
     需要注意的是,扩展汉明码模式下的地址信号需要进行额外的处理。由于本设计采用了128K×16bit的SRAM芯片,它有17位地址信号。但是,正如上面提到过的,SRAM芯片组中将有4KB的存储空间工作于TMR模式,还有248KB的存储空间将工作于扩展汉明码模式,而248KB的空间需要18位地址信号,这就要求有一个对地址信号进行变换的模块。当地址小于4KB 时,电路工作于TMR模式下而无需对地址进行变换;当地址大于等于4 KB同时小于128 KB时,电路工作于扩展汉明码模式,地址信号会选中第一个124 Kx(16+8)bit的空间,此时也无需地址变换;而当地址大于等于128 KB,电路也工作于扩展汉明码模式下,此时地址信号应选中第二个124 Kx(16+81bit的空间,此时则应将地址值加上4KB,然后取新的地址的低17位加到第二个124 Kx (16+8) bit的存储空间上即可。
     在上述TMR和扩展汉明码模块的设计中,对出错数据的回写是设计中的重点和难点,主要应考虑是否回写和何时回写两个问题。这两个问题可由时序控制模块来解决。它主要根据CPU的控制信号,适时的发出错误标示输出使能信号flag_oe,从而改变CPU对RAM的读写状态,完成
     修正数据的正确回写。
     另外,电路中的错误标示信号对整体设计的稳定性至关重要。为了保证错误标示信号的稳定,可在双向传输门B的读入端加一个锁存器,锁存器的锁存使能端也可由时序控制模块的flag_latch来控制。
     4.3 模式选择模块
     模式选择模块用于接收来自CPU的配置信号config和片选信号cs_fpga,以便将32位的配置数据写入配置寄存器。该寄存器的低18位数据为模式配置数据,地址信号通过与该数据进行比较,可使小于该地址的存储器空间工作于TMR模式,大于该地址的存储空间工作于扩展汉明码模式。
     本电路采用软件故障注入法来进行电路的有效性验证,所以,在电路设计中,可将模式配置寄存器的其余14位用于注入外部干扰数据,并将其连接到ctrl_err与add_err信号,以用来进行软件故障的注入,模拟SEU对电路的影响。
     4.4 控制逻辑模块
     该模块可接收模式选择模块的模式信号mode,以对TMR模块和扩展汉明码模块输出的读写信号和片选信号进行选择,然后输出到RAM芯片的引脚上去,从而实现CPU对RAM的正确访问。尤其是当电路工作于扩展汉明码模式时,还需根据地址信号判断当前对哪个124 Kx (16+8)bit的存储空间片选有效。其具体电路如图5所示。
      20121107053424978192991.jpg
   
     5 结束语
     本设计中的抗SEU存储器的设计可通过ACTEL的ProAsic系列A3P400 FPGA实现,并可使用与其配套的Libero8.5 EDA工具进行代码的编辑和原理图的绘制,并进行功能仿真与电路的综合。通过仿真可以看到,本设计可以达到预期的目的,它既可实现存储器的抗SEU设计,又可以满足对存储器使用灵活性的要求,而且具有功能完善、适应性强、电路简单等特点,非常适用于星载RAM的抗辐射电路设计。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 04:35 , Processed in 0.056154 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表