【两会访谈】补短板让教育更优质更公平
引 言
在一些电磁环境比较恶劣的情况下,一些大规模集成电路常常会受到干扰,导致不能正常工作。特别是像RAM这种利用双稳态进行存储的器件,往往会在强干扰下发生翻转,使原来存储的0变为1,或者1变为0,造成的后果往往是很严重的。例如导致一些控制程序跑飞,存储的关键数据出错等等。现在,随着芯片集成度的增加,发生错误的可能性也在增大。在一些特定的应用中,这已经成为一个不能忽视的问题。例如在空间电子应用领域,单粒子翻转效应就成为困扰设计师的一个难题。
在这种情况下,我们可以采用错误检测与纠正EDAC(Error Detection And Correction)电路来有效地减少或避免这种情况的出现。根据检错、纠错的原理,主要思想是在数据写入时,根据写入的数据生成一定位数的校验码,与相应的数据一起保存起来;当读出时,同时也将校验码读出,进行判决。如果出现一位错误则自动纠正,将正确的数据送出,并同时将改正以后的数据回写覆盖原来错误的数据;如果出现两位错误则产生中断报告,通知CPU进行异常处理。所有这一切动作都是靠硬件设计自动完成的,具有实时性和自动完成的特点。通过这样的EDAC电路,能大大提高系统的抗干扰能力,从而提高系统的可靠性。
当然,有一些现成的集成电路芯片可以完成上述功能,如74系列的74630芯片等。但由于嵌入式系统中,往往由于集成化的需要,要将这样的功能集成到FPGA中去实现,因此采用VHDL语言进行设计具有灵活性和通用性的特点。
1 检错与纠错原理
首先来看看检错和纠错的基本原理。进行差错控制的基本思想是在信息码组中以一定规则加入不同方式的冗余码,以便在信息读出的时候依靠多余的监督码或校验码来发现或自动纠正错误。
针对误码发生的特点,即错误发生的随机性和小概率性,它几乎总是随机地影响某个字节中的某一位(bit),因此,如果能够设计自动纠正一位错误,而检测两位错误的编码方式,就可以大大的提高系统的可靠性。
现在我们以16位的CPU数据总线为例,假定信息源的位数为16,要构造一种能够纠正一位错误,检查两位错误的编码方式。根据纠错定理,需要设计最小汉明距离≥4的码组。我们可以采用线形分组码,利用线性分组码的概念可以构造六位监督码,它们由如下线性关系产生:

其中,d0~d15为16位数据(15为最高位MSB,0为最低位LSB),C0~C5为产生的六位监督码,表示进行异或运算。
在数据读出时,我们只需要考察伴随式S=[S0 S1 S2 S3 S4 S5],其中:

很容易证明,根据伴随式进行误差诊断,符合表1所列情况。
表1 误差诊断码表
表1 误差诊断码表
伴随式 | 错 误 位 置 | ||||||||||||||||||||||
数 据 位 | 校 验 位 | 无错 | |||||||||||||||||||||
d0 | d1 | d2 | d3 | d4 | d5 | d6 | d7 | d8 | d9 | d10 | d11 | d12 | d13 | d14 | d15 | C0 | C1 | C2 | C3 | C4 | C5 | ||
S0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
S1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
S2 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
S3 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
S4 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
S5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
当S = [0 0 0 0 0 0]时,数据正确无误;
当S = [0 0 1 0 1 1]时,数据错一位,并且错误发生在d0位,可将d0位的数据取反加以纠正;
当S = [0 0 1 1 0 1]时,数据错一位,并且错误发生在d1位,可将d1位的数据取反加以纠正;
.
.
.
当S= [1 1 0 1 0 0]时,数据错一位,并且错误发生在d15位,可将d15位的数据取反加以纠正;
当S = [0 0 0 0 0 1]时,数据错一位,并且错误发生在C0位;
.
.
.
当S = [1 0 0 0 0 0]时,数据错一位,并且错误发生在C5位;
百度
当S为其它情况时,至少发生两位错误。
相关推荐
技术专区
咖啡色五行属什么 | g1p1是什么意思 | 鸭胗是什么器官 | 子宫附件包括什么 | ns是什么单位 |
兰花长什么样 | 为什么肚子总是胀胀的 | 炖牛肉什么时候放盐 | 什么农药最毒 | 人文是什么意思 |
spi是什么意思 | 1938年属什么生肖属相 | 什么是膝关节退行性变 | 梦见流鼻血是什么征兆 | 冷泡茶用什么茶叶 |
过度什么意思 | 舅舅是什么关系 | 积食是什么意思 | mpr是什么意思 | 黄辣丁吃什么 |
男朋友有什么用hcv9jop5ns6r.cn | 鸡飞狗跳是什么意思hcv8jop6ns8r.cn | 无后为大的前一句是什么hcv8jop3ns2r.cn | 频繁打哈欠是什么原因hcv9jop1ns8r.cn | 慌张的近义词是什么hcv9jop8ns0r.cn |
孕妇牙龈出血是什么原因hcv8jop8ns4r.cn | 一个鸟一个衣是什么字hcv8jop6ns6r.cn | 梦见下大雪是什么预兆sscsqa.com | 空调外机很响是什么原因hcv7jop9ns0r.cn | 宫颈锥切术是什么意思hcv7jop5ns2r.cn |
lv中文名叫什么hcv9jop3ns2r.cn | 收支两条线是什么意思hcv9jop0ns0r.cn | 额头上长痘是什么原因hcv8jop8ns5r.cn | 孕妇血糖高有什么症状hcv9jop2ns1r.cn | q12h医学上是什么意思huizhijixie.com |
pdc是什么意思fenrenren.com | 生理期可以吃什么水果96micro.com | 韧带拉伤有什么症状youbangsi.com | 手指甲上有竖纹是什么原因hcv9jop5ns8r.cn | 黑便是什么原因cj623037.com |
评论