抗SEU存储器的FPGA设计实现
空间;而当系统工作在汉明码模式时,它们则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个功能模块。
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的存储空间上即可。
在上述TMR和扩展汉明码模块的设计中,对出错数据的回写是设计中的重点和难点,主要应考虑是否回写和何时回写两个问题。这两个问题可由时序控制模块来解决。它主要根据CPU的控制信号,适时的发出错误标示输出使能信号flag_oe,从而改变CPU对RAM的读写状态,完成
修正数据的正确回写。
另外,电路中的错误标示信号对整体设计的稳定性至关重要。为了保证错误标示信号的稳定,可在双向传输门B的读入端加一个锁存器,锁存器的锁存使能端也可由时序控制模块的flag_latch来控制。
4.3 模式选择模块
模式选择模块用于接收来自CPU的配置信号config和片选信号cs_fpga,以便将32位的配置数据写入配置寄存器。该寄存器的低18位数据为模式配置数据,地址信号通过与该数据进行比较,可使小于该地址的存储器空间工作于TMR模式,大于该地址的存储空间工作于扩展汉明码模式。
本电路采用软件故障注入
- 3DES算法的FPGA高速实现(06-21)
- 基于DSP的Max-Log-MAP算法实现与优化(05-27)
- DSP中DMA操作的无阻塞请求实现(06-18)
- 二维DCT编码的DSP实现与优化(09-08)
- 基于DSP处理器上并行实现ATR算法(01-29)
- 基于DSP的H.324终端设计(05-27)