错误检测和纠正电路的设计实现

错误检测和纠正电路的设计实现

ID:25160365

大小:62.50 KB

页数:8页

时间:2018-11-18

错误检测和纠正电路的设计实现_第1页
错误检测和纠正电路的设计实现_第2页
错误检测和纠正电路的设计实现_第3页
错误检测和纠正电路的设计实现_第4页
错误检测和纠正电路的设计实现_第5页
资源描述:

《错误检测和纠正电路的设计实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、错误检测和纠正电路的设计实现.freel这种利用双稳态进行存储的器件,往往会在强干扰下发生翻转,使原来存储的"0"变为"1",或者"1"变为"0",造成的后果往往是很严重的。例如导致一些控制程序跑飞,存储的关键数据出错等等。现在,随着芯片集成度的增加,发生错误的可能性也在增大。在一些特定的应用中,这已经成为一个不能忽视的问题。例如在空间电子应用领域,单粒子翻转效应就成为困扰设计师的一个难题。在这种情况下,我们可以采用错误检测与纠正edac(errordetectionandcorrection)电路来有效地减少或避免这种情况的出现。根据检错、纠错的原

2、理,.freelsb,0为最低位lsb),c0~c5为产生的六位监督码,表示进行异或运算。在数据读出时,我们只需要考察伴随式s=s0s1s2s3s4s5,其中:很容易证明,根据伴随式进行误差诊断,符合表1所列情况。表1误差诊断码表伴随式错误位置数据位校验位无错d0d1d2d3d4d5d6d7d8d9d10d11d12d13d14d15c0c1c2c3c4c5s011011000111001001000000s110110110100100100100000s201101101010010010010000s3111000110011100000010

3、00s400011111000001110000100s500000000111111110000010当s=000000时,数据正确无误;当s=001011时,数据错一位,并且错误发生在d0位,可将d0位的数据取反加以纠正;当s=001101时,数据错一位,并且错误发生在d1位,可将d1位的数据取反加以纠正;...当s=110100时,数据错一位,并且错误发生在d15位,可将d15位的数据取反加以纠正;当s=000001时,数据错一位,并且错误发生在c0位;...当s=100000时,数据错一位,并且错误发生在c5位;当s为其它情况时,至少发生两位

4、错误。可以看出,这种编码方式可以满足自动纠正一位错误,而发现两位错误的要求。下面就进一步讨论如何用电路来实现。2edac电路的设计edac电路必须配合cpu的读写时序进行工作,不同类型cpu的时序往往是不一样的。一般来说,总可以分为读周期和写周期。在写周期时,按照上面的设计逻辑,根据16位数据位生成6位的校验字,这时,数据位是输入,校验位是输出,并在该写周期中将数据位和校验位都存储到相应的存储器位置中去,这种情况比较简单。在读周期时,情况复杂些,可以设计成三步完成。第一步,在cpu读信号来之前,由于存储器地址和片选信号已经有效,可先将数据位和校验位读

5、入,这时,数据位和校验位都是作为输入。第二步,在读信号来时,将数据位、校验位锁存,同时进行检测,如果无错,则不进行任何处理,直接将数据输出;如果发现二位错,则产生中断;如果是一位错,在输出上有所反应,并进入下一步。第三步,如果是数据位出错,将其自动更正,并将正确的值再回写到相应的内存地址中,将正确的数据值输出到数据总线;如果是校验位出错,可以直接将正确的数据位输出到数据总线上。这部分功能是edac功能的核心,可以用vhdl语言来实现,以下是设计思路。(1)对输入的设计①数据位和校验位的输入。②控制端的输入。经过前面的分析,一共有四种状态(写一种状态、

6、读三种状态),可以设计两个控制端,设为c0、c1。其功能见表2。(2)对输出的设计①数据位和校验位的输出。其中校验位的输出在读周期和写周期有所不同:在写周期校验位输出是生成的校验位;而读周期就没有必要输出校验位了,可以设计为输出伴随式s。②错误标记输出。在应用中,可以设计两种错误标记输出,分别记为err和int。其中err输出"1"表示数据位有错误产生,包括可自动纠正的一位错误和两位或两位以上错误。int输出"1"则表示发生了两位或以上错误,无法自动纠正,向cpu申请中断,由cpu进行异常处理。在表2中,了上面所描述的功能设计。表2edac模块功能表

7、控制端存储器周期功能描述数据位校验位错误标记输出c0c1errint00写周期产生校验位,并输出输入输出0001读周期读入数据位和校验位输入输入0011读周期锁存数据位和校验位并进行错误检测锁存锁存0/10/110读周期校正错误并输出诊断结果输出输出伴随式s 0/10/1图1为edac部分逻辑等效图。由于逻辑关系已经非常明确了,下面讨论采用vhdl语言实现上述edac模块的功能。可以有两种方法来实现vhdl编程,即rtl级语言描述和行为级语言描述。其中rtl级描述的实现难度比较大,需要根据前面设计的逻辑功能,转换为基本的门来描述;有效率高和

8、受逻辑综合软件的影响小等优点,但可读性差,实现起来比较困难。因此我们采用的是行为级描述,根据四个输入作敏感量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。