基于FPGA的错误检测与自动纠正的设计实现

最新更新时间:2012-03-11来源: 电源技术关键字:EDA  CVHDLF  PGA 手机看文章 扫描二维码
随时随地手机看文章

    引言

    在一些电磁环境比较恶劣的情况下,一些大规模集成电路常常会受到干扰,导致不能正常工作。特别是像RAM这种利用双稳态进行存储的器件,往往会在强干扰下发生翻转,使原来存储的"0"变为"1",或者"1"变为"0",造成的后果往往是很严重的。例如导致一些控制程序跑飞,存储的关键数据出错等等。现在,随着芯片集成度的增加,发生错误的可能性也在增大。在一些特定的应用中,这已经成为一个不能忽视的问题。例如在空间电子应用领域,单粒子翻转效应就成为困扰设计师的一个难题。

    在这种情况下,我们可以采用错误检测与纠正EDAC(ErrorDetectionAndCorrection)电路来有效地减少或避免这种情况的出现。根据检错、纠错的原理,主要思想是在数据写入时,根据写入的数据生成一定位数的校验码,与相应的数据一起保存起来;当读出时,同时也将校验码读出,进行判决。如果出现一位错误则自动纠正,将正确的数据送出,并同时将改正以后的数据回写覆盖原来错误的数据;如果出现两位错误则产生中断报告,通知CPU进行异常处理。所有这一切动作都是靠硬件设计自动完成的,具有实时性和自动完成的特点。通过这样的EDAC电路,能大大提高系统的抗干扰能力,从而提高系统的可靠性。

    当然,有一些现成的集成电路芯片可以完成上述功能,如74系列的74630芯片等。但由于嵌入式系统中,往往由于集成化的需要,要将这样的功能集成到FPGA中去实现,因此采用VHDL语言进行设计具有灵活性和通用性的特点。

    1检错与纠错原理

    首先来看看检错和纠错的基本原理。进行差错控制的基本思想是在信息码组中以一定规则加入不同方式的冗余码,以便在信息读出的时候依靠多余的监督码或校验码来发现或自动纠正错误。

    针对误码发生的特点,即错误发生的随机性和小概率性,它几乎总是随机地影响某个字节中的某一位(bit),因此,如果能够设计自动纠正一位错误,而检测两位错误的编码方式,就可以大大的提高系统的可靠性。

    现在我们以16位的CPU数据总线为例,假定信息源的位数为16,要构造一种能够纠正一位错误,检查两位错误的编码方式。根据"纠错定理",需要设计最小汉明距离≥4的码组。我们可以采用线形分组码,利用线性分组码的概念可以构造六位监督码,它们由如下线性关系产生:

    其中,d0~d15为16位数据(15为最高位MSB,0为最低位LSB),C0~C5为产生的六位监督码,表示进行异或运算。

    在数据读出时,我们只需要考察伴随式S=[S0S1S2S3S4S5],其中:

很容易证明,根据伴随式进行误差诊断,符合表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=[000000]时,数据正确无误;
当S=[001011]时,数据错一位,并且错误发生在d0位,可将d0位的数据取反加以纠正;
当S=[001101]时,数据错一位,并且错误发生在d1位,可将d1位的数据取反加以纠正;
.
.
.
当S=[110100]时,数据错一位,并且错误发生在d15位,可将d15位的数据取反加以纠正;
当S=[000001]时,数据错一位,并且错误发生在C0位;
.
.
.
当S=[100000]时,数据错一位,并且错误发生在C5位;
当S为其它情况时,至少发生两位错误。

可以看出,这种编码方式可以满足自动纠正一位错误,而发现两位错误的要求。下面就进一步讨论如何用电路来实现。


    2EDAC电路的设计

    EDAC电路必须配合CPU的读写时序进行工作,不同类型CPU的时序往往是不一样的。一般来说,总可以分为读周期和写周期。在写周期时,按照上面的设计逻辑,根据16位数据位生成6位的校验字,这时,数据位是输入,校验位是输出,并在该写周期中将数据位和校验位都存储到相应的存储器位置中去,这种情况比较简单。在读周期时,情况复杂些,可以设计成三步完成。第一步,在CPU读信号来之前,由于存储器地址和片选信号已经有效,可先将数据位和校验位读入,这时,数据位和校验位都是作为输入。第二步,在读信号来时,将数据位、校验位锁存,同时进行检测,如果无错,则不进行任何处理,直接将数据输出;如果发现二位错,则产生中断;如果是一位错,在输出上有所反应,并进入下一步。第三步,如果是数据位出错,将其自动更正,并将正确的值再回写到相应的内存地址中,将正确的数据值输出到数据总线;如果是校验位出错,可以直接将正确的数据位输出到数据总线上。这部分功能是EDAC功能的核心,可以用VHDL语言来实现,以下是设计思路。

    (1)对输入的设计

①数据位和校验位的输入。
②控制端的输入。经过前面的分析,一共有四种状态(写一种状态、读三种状态),可以设计两个控制端,设为C0、C1。其功能见表2。

    (2)对输出的设计
①数据位和校验位的输出。其中校验位的输出在读周期和写周期有所不同:在写周期校验位输出是生成的校验位;而读周期就没有必要输出校验位了,可以设计为输出伴随式S。
②错误标记输出。在应用中,可以设计两种错误标记输出,分别记为ERR和INT。其中ERR输出"1"表示数据位有错误产生,包括可自动纠正的一位错误和两位或两位以上错误。INT输出"1"则表示发生了两位或以上错误,无法自动纠正,向CPU申请中断,由CPU进行异常处理。
在表2中,总结了上面所描述的功能设计。

    表2EDAC模块功能表

控制端

存储器周期

功能描述

数据位

校验位

错误标记输出

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+plusII10.0。
仿真模拟器件:FLEX10K系列,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~500ns仿真了一个写周期,数据输入是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技术可以简单有效地提高系统的容错能力;但针对不同系统,EDAC和CPU的时序配合可能会有所不同。例如,对于一些时钟频率比较高的CPU,可能需要插入等待周期等等,但由于采用VHDL语言进行设计,有很大的灵活性,稍加改动就可以满足不同场合的需求

关键字:EDA  CVHDLF  PGA 编辑:探路者 引用地址:基于FPGA的错误检测与自动纠正的设计实现

上一篇:掉电保护在嵌入式系统中的设计应用
下一篇:配合智能手机等便携应用要求安森美电源管理方案

推荐阅读最新更新时间:2023-10-18 16:29

Simucad发布LDMOS和HV MOS紧凑Spice模型
EDA供应商Simucad Design Automation日前宣布,提供LDMOS和HV MOS紧凑Spice模型,面向其SmartSpice模拟仿真器和SmartSpiceRF谐波仿真器。 LDMOS(横向扩散金属氧化物半导体)基于飞利浦的LDMOS的简洁模型,这是针对高电压和RF应用的专用模型,由飞利浦研究实验室开发。HV MOS简洁模型基于流行的加州大学的BSIM3。该公司CEO Ivan Pesic表示:“对于LDMOS和高压MOS晶体管没有必要使用繁琐的宏模型。这些紧凑的模型和我们单一供应商的电路仿真环境在电源、功率管理和板驱动电路设计上提供了较高的精确度、伸缩性、融合性和性能。” Simucad表示,L
[新品]
美国的EDA产业是如何走向辉煌的
用最小气力而可以一剑封喉的,一定是江湖上最毒辣的武器。电子设计自动化EDA软件,正是半导体江湖上这样的毒器。EDA软件在整个全球不过区区100亿美元的产值,却主宰着全球5000亿美元的全球集成电路市场,和它背后近1.5万亿美元的整个电子产业。仅仅从EDA对集成电路的影响而言,杠杆力高达50倍。而在中国,这个杠杆效应更大。作为全球规模最大、增速最快的中国集成电路市场规模,2018年已经达到2万亿元人民币,而EDA在中国的市场体量仅为35亿人民币,笼统计算可以认为这个杠杆力为570倍。如果这是一种毒素的话,它的毒性效应将近600倍。如果考虑到中国95%市场份额都集中在国外厂家,尤其是全世界70%的EDA产值都垄断在三家美国公司手中(尽
[半导体设计/制造]
美国的<font color='red'>EDA</font>产业是如何走向辉煌的
EDA厂商:中国IC设计业落后两代
  尽管中国IC设计公司在过去的数年中已经取得了长足的发展和进步,然而相对于目前在市场上占据主导地位的领先的国际半导体公司来说,无论在规模还是在技术上,本土公司都无法与之相提并论。Cadence公司全球副总裁亚太区总裁居龙不久就表示,与美国相比,中国IC设计公司的整体水平要落后两代。“在半导体行业,如何实现从制造打过向设计大国的转变,我们还有很长的一段路要走。”他指出,大陆IC设计业应该向台湾地区的同行学习,在打造品牌影响力上做足功夫。而在这个过程中,政府部门能够发挥的作用应该比现在更多。 “设计大国”任重道远   中国IC设计产业在近几年经历了令人瞩目的高速发展:2003年~2007年,中国IC设计产业规模从44.9
[焦点新闻]
<font color='red'>EDA</font>厂商:中国IC设计业落后两代
Semiengineering: 2019Q2 EDA 收入增长6.6%
人工智能、汽车和系统设计公司继续推动EDA行业的增长。 ESD Alliance Market Statistics Service数据显示,随着半导体知识产权和亚太地区的增长,EDA行业在2019年第二季度的营收增长了6.6%,至24.721亿美元,而2018年第二季度的营收为23.185亿美元。 与前四个季度相比,最近四个季度的移动平均值增长了6%,也就是说除服务以外的所有类别都出现了增长。 在2019年第二季度,被追踪的公司雇佣了44,342名专业人士,比2018年第二季度的41,706名增加了6.3%,比2019年第一季度增加了1.9%。 按产品类别划分,在2019年第二季计算机辅助工程(CAE)的营收为7
[半导体设计/制造]
新思科技:EDA技术赋能数字化 在机遇中及锋而试
集微网报道 伴随着新冠疫情在全球的蔓延以及国际贸易形势的不确定变化,我们走过了2020。让人振奋的是,在复杂国际形势驱动下,去年国内半导体行业投融资掀起一股小高潮,总融资金额超过1000亿元,预示着半导体集成电路未来发展的火热前景。作为芯片设计的上游,EDA行业更是迎来了难得的先机。 全球电子自动化设计(EDA)领导厂商新思科技十分看好新一年的发展,在接受集微网采访时,新思科技回顾了过去一年产业状况,对新的一年技术、市场发展趋势给出自己的研判,新思科技预计,得益于中国半导体市场的良好表现以及产业数字化的强大需求,后疫情时代,EDA行业将迎来快速发展。 得益中国半导体市场良好表现 EDA行业持续增长 2020年初爆发的新冠疫情,
[手机便携]
台积电联合EDA仿真厂商能带来ADAS芯片的突破?
先进驾驶辅助系统(Advanced Driver Assistant System),简称ADAS,是利用安装于车上的各式各样的传感器, 在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。ADAS 采用的传感器主要有摄像头、雷达、激光和超声波等,可以探测光、热、压力或其它用于监测汽车状态的变量, 通常位于车辆的前后保险杠、侧视镜、驾驶杆内部或者挡风玻璃上。下面就随汽车电子小编一起来了解一下相关内容吧。 先进驾驶辅助系统(ADAS)系统逐步迈向大众化,ADAS芯片的需求于近年明显大增。 不过,相较于手机芯片,
[汽车电子]
基于FPGA 的高阶全数字锁相环的设计与实现
1 引言   锁相环在通信、雷达、测量和自动化控制等领域应用极为广泛,已经成为各种电子设备中必不可少的基本部件。随着电子技术向数字化方向发展,需要采用数字方式实现信号的锁相处理。因此,对全数字锁相环的研究和应用得到了越来越多的关注。   传统的数字锁相环系统是希望通过采用具有低通特性的环路滤波器,获得稳定的振荡控制数据。对于高阶全数字锁相环,其数字滤波器常常采用基于DSP 的运算电路。这种结构的锁相环,当环路带宽很窄时,环路滤波器的实现将需要很大的电路量,这给专用集成电路的应用和片上系统SOC(system on chip)的设计带来一定困难。另一种类型的全数字锁相环是采用脉冲序列低通滤波计数电路作为环路滤波器,如随机
[嵌入式]
英诺达国内首个EDA硬件验证云平台投入使用了
6月21日,英诺达(成都)电子科技有限公司(简称:英诺达)宣布,位于成都高新西区的EDA硬件云平台第一期完工,Palladium Z1机柜进场安装调试完毕。英诺达表示,这标志着全国首家,也是目前唯一一家基于异构计算的云机房按期交付,可以立即为国内的广大客户提供服务。 据英诺达介绍,机房的建设把数据安全性、网络稳定性放在首位,在Cadence美国Palladium云机房建设经验的基础上,采用了Palo Alto Networks在云上安全保障方面排名第一的防火墙设备,并配有大容量UPS保证供电,防止数据丢失。 客户数据隐私方面,在Palladium内置防火墙之外,用户数据访问须经多参数认证;设置客户访问白名单限制;可通过公有云V
[手机便携]
小广播
最新电源管理文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved