基于FPGA的错误检测与纠正电路的方案设计
控制端 | 存储器周期 | 功能描述 | 数据位 | 校验位 | 错误标记输出 | ||
C0 | C1 | ERR | INT | ||||
0 | 0 | 写周期 | 产生校验位,并输出 | 输入 | 输出 | 0 | 0 |
0 | 1 | 读周期 | 读入数据位和校验位 | 输入 | 输入 | 0 | 0 |
1 | 1 | 读周期 | 锁存数据位和校验位并进行错误检测 | 锁存 | 锁存 | 0/1 | 0/1 |
1 | 0 | 读周期 | 校正错误并输出诊断结果 | 输出 | 输出伴随式S | 0/1 | 0/1 |
图1为EDAC部分逻辑等效图。
由于逻辑关系已经非常明确了,下面讨论采用VHDL语言实现上述EDAC模块的功能。可以有两种方法来实现VHDL编程,即RTL级语言描述和行为级语言描述。其中RTL级描述的实现难度比较大,需要根据前面设计的逻辑功能,转换为基本的门来描述;有效率高和受逻辑综合软件的影响小等优点,但可读性差,实现起来比较困难。因此我们采用的是行为级描述,根据四个输入作敏感量,用一个进程(process)就可以实现。编程思路是:根据控制端C0和C1进行判断,如果是写周期,直接将输入的数据相应位进行异或后输出;如果是读周期,先生成伴随式S,然后判断S,用CASE语句执行相应的输出。需要强调的是在不需要输出的时候,要把输出端用高阻封住。
利用这个EDAC模块再辅以简单的外围电路就可以实现较强的EDAC功能,可以把这一部分整个电路都集成到FPGA中。
3 仿真结果
仿真环境:MAX+plus II 10.0。
仿真模拟器件:FLEX 10K系列,EPF10K10LC84-3。
信号功能说明见表3。
表3 仿真信号说明
信号名称 | 功 能 说 明 |
CLK | 模拟CPU时钟,在该仿真中设定时钟频率为10MHz |
WRITE | 模拟CPU发出的写信号 |
READ | 模拟CPU发出的读信号 |
MEMW | 由EDAC电路发出的内存写信号,主要用于数据纠正后的回写 |
HIGH | 恒为高电平,提供芯片使能信号 |
INT | EDAC电路检测到两个以上错误时发出的中断请求信号 |
ERR | EDAC检测到错误时发出的信号,构校验位产生一位错误时不产生该信号 |
CBIN[5..0] | 6位校验位输入 |
DBIN[15..0 | 16位数据位输入 |
CBOUT[5..0 | 写周期时作校验输出,读周期时输出为伴随式S |
DBOUT[15..0 | 16位数据位输出 |
(1)写周期的仿真
图2所示仿真图中,275~500 ns仿真了一个写周期,数据输入是AA55,而校验位输出是00,通过验证是符合上面的设计逻辑的。
(2)读周期的仿真
在读周期的仿真中,我们模拟了以下四种情况。
① 正确的读周期:出现在650~975ns,校验位、数据位都是正确值。
② 数据位出现一位错误:图2中1.25~1.65 μs模拟了数据位产生一位错误的情况。数据正确的情况下应该是AA55,但现在d8位发生了错误,读入的数据变为AB55,可以看出数据已经被自动更正为AA55;同时,ERR输出1表明有错误发生,CBOUT输出为23,即100011,从表 1可以看出是d8位发生了错误。
③ 校验位出现一位错误:图2中1.8~2.0μs模拟了校验位产生一位错误的情况。校验位正确的情况下应该是00,但现在C2位发生了错误,读入的数据变为04,可以看出数据没变,仍为正确值AA55;同时,ERR没有输出,CBOUT输出为04,即000100,从表一可以看出是C2位发生了错误。
④ 发生了两位错误:图 2中2.4~2.75μs模拟了数据位产生两位错误的情况。数据正确的情况下应该是AA55,但现在d8位和d0位发生了错误,读入的数据变为AB54,可以看出EDAC电路已经无法自动更正。 ERR和INT同时输出1表明有多位错误发生,INT信号可以向CPU申请中断,用中断服务程序进行异常处理。
可以看出仿真结果可以满足设计时的思想,能够起到自动纠正一位错误和检测两位错误的功能。
结 语
本文利用纠错编码的基本知识,提出了一种简单实用的能自动纠正一位错误和检查两位错误的编码方法,并且通过VHDL语言编程,用FPGA器件来实现。在我们自己的嵌入式系统中,EDAC电路已经得到了应用和验证。现在越来越多的嵌入式系统对可靠性要求越来越高,采用EDAC技术可以简单有效地提高系统的容错能力
电路 方案设计 纠正 检测 FPGA 错误 基于 相关文章:
- DSP外围电路(10-09)
- TMS32OF2812与DIP-IPM的通用电路设计(07-31)
- TMS320F206外围电路典型设计 (04-17)
- 基于DSP芯片TMS320LF2407A的超声电源系统的控制电路(08-01)
- 多片DDC芯片HSP50214B与DSP接口电路设计(08-21)
- DSP电源系统的低功耗设计(11-13)