新闻中心

EEPW首页>EDA/PCB>设计应用> 具有64位数据检纠错功能的FPGA模块设计

具有64位数据检纠错功能的FPGA模块设计

作者: 时间:2009-05-19 来源:网络 收藏

CCl校验位相异对应出错位列号倒数第二位为1;CC2对应列号倒数第3位为1,可以推出错误位的列号为110,同理行号相关的几个校验位中CC4,CC5出现相异可以推出错误位的行号为0110,由此可以知道出错的数据位是DA22,再对确认出错的数据位取反就实现了纠正1位错误的功能。而如果出现2位错误,比如数据位DAl和DA34同时出错,如图2中所示,这会引起新老校验位中的CC0,CCl,CC3,CC4,CC6同时出现相异。这时如果还按照上述纠正1位错误时的算法,就会推出出错数据位的行号为1011列号为011,这样,就会认为是数据为DA51发生了翻转,从而产生错误的检结果,如图2中粗箭头所示。以前的测试数据表明,若在近地轨道中,SRAM存储器中的每一个存储数据位一天之内发生SEU概率约是10-7(位・天),则可以推导出这个SRAM中1组64位的数据,在一天时间内有2位同时出现错误的可能性约为10-10(次・天),在南大西洋辐射异常区和太阳活动高峰期,这种情况的发生率可能还会提高1~2个数量级。
为了避免在发生双位元错误时出现错检错纠的情况,需要增加1个校验位CC7,它是所有数据位的奇偶校验结果,即CC7=DA0DAlDA2DA3…DA63。这样在每次出现1个数据位错误时,新生成的NCC7也都会与先前的值相异,而当数据位中有2个存储单元出错,其他校验位会检测有错误出现,但NCC7不会发生变化,NCC7CC7=0,这时就可以判断出有双位错误,从而使系统实现了检测双位错误的功能。


2 设计实现
将所有与主存储器中数据一一对应的校验位(CCl~CC8)存储在另一个独立的8位SRAM中,系统的硬件结构如图3所示。

存储校验位的8位数据SRAM2同样遇到出现SEU效应得可能,通过分析可以知道,SRAM2出现1位数据翻转时,只有对应的一位数值与通过数据位新生成的校验位数值相异,而其他的7个校验位数据都没有变化,此时对对应的校验位取反就实现了功能。对于出现双位元错误的可能,通过理论分析,可以知道一组8位的校验数据在一天中出现这种情况的概率约为7×10-13。,相比于主存储器而言降低了两三个数量级,暂时可以不予考虑。
的检逻辑设计采用VHDL语言实现。设计使主存储器SRAMl中的64位数据新生成的NCC[7:0]与SRAM2中的7位校验位CC[7:0]一起经过异或运算,生成8位的校正子,其中前7位就对应于前述定位错误数据的行号和列号的值,第8位用于判断是否出现双位元错误。8位校验子的值可以求出1个64位纠错掩码(Mask),用以校正单位元错误。如果未检测到错误,此掩码的所有位都为零。如果检测到单位元错误,相应掩码会屏蔽除错误位之外的所有位。下一阶段,使用原始数据对此掩码进行异或运算。最终,错误位被反转(或校正)至正确状态。如果检测到双位元错误,所有掩码位也都为零。使用1个双位的数组(ER[1,O])用于报告检测的错误类型(“OO”表示无错、“01”表示单位元错误、“10”表示双位错误、“11”表示无法判断的多位错误)。整个纠错逻辑的工作过程如图4所示。生成错误类型报告数组和相应的校正掩码的工作都在同一时钟周期内完成,体现了采用进行并行处理的独特优势。

3 结 语
对综合后进行仿真的结果进行分析,期间人为地加入1位、2位、3位随机分布的数据位错误,该系统能够在2个系统时钟周期内对1位错误的情况成功地检测并予以纠正;对2位和3位错误情况也都进行了正确的类别判定。仿真结果表明,设计的系统比较理想,能满足设计要求。
然而对于整个星载计算机系统而言,空间中的应用环境非常苛刻,辐射和粒子冲击造成的影响绝不仅只在SRAM上,对,DSP等芯片同样也会带来各种复杂的影响,要消除这些影响,确保计算机系统可靠的工作,还需要广大科技工作者进行大量的工作。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭