- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
一种抗SEU存储器电路的FPGA设计
3 电路设计
基于上述内存配置方案,本文设计了如图3所示的抗SEU存储器电路。该电路包含了4个功能模块。
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添加错误。
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的存储空间上即可。
作者:卜雷雷 兰家隆 来源:国外电子元器件