基于VHDL的CRC编解码设计.docx
《基于VHDL的CRC编解码设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的CRC编解码设计.docx(26页珍藏版)》请在三一办公上搜索。
1、摘要循环冗余校验码是一种广泛应用检错编码,本设计以MaXPIUSII为开发平台利用VHDL语言完成了CRC编解码设计。设计采用了模块化的方法,给出了CRC编解码的结构框图和局部仿真结果,结果说明该系统的设计方案正确。关键词:VHDL;循环冗余校验(CRC);检错ABSTRACTCyclicredundancycheckcodeisawidelyusederrordetectioncode,thedesignoftheMaxPlusIIdevelopmentplatformforthecompletionoftheCRCusingVHDLlanguagecodecdesign.Designuse
2、samodularapproach,giventhestructureofCRCdecodingblockdiagramandsomesimuIationresults,theresultsshowthatthesystemisdesignedcorrectly.Keywords:VHDL;Cyclicredundancycheck(CRC);Errordetection目录摘要ABSTRACT第1章引言O1.1 概述O1.2 内容概要2第2章CRC编解码理论22.1 纠错编码的根本原理22.2 模2运算原理52.3 3CRC分类52.3.1 标准的CRC62.3.2 非标准的CRC62. 4
3、循环码理论根底63. 5循环码编码方法73.1.1 CRC产生操作过程82. 6循环码解码方法82.1.1 CRC解码操作过程9第3章方案设计93. 1实现方案分析93.1.1 查表法实现方案分析IO逐位运算法实现方案分析113.1.3 现实需求分析123.2 系统硬件设计133.2.1 电源模块133.2.2 时钟模块143.2.3 调试测试接口143.2.4 复位电路设计143.3 设计工具及开发流程14第4章程序模块设计及仿真154.1 程序设计与仿真154.1.1 编码模块设计与仿真174.1.2 解码模块设计与仿真184.1.3 循环冗余码编码模块与解码模块联合运行19第5章结束语1
4、9致谢20参考文献20附录A20附录B22第1草引言1.1 概述通信,指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,方瞪模拟信息源“5一或多1调制器_某方- + l g 百 F H 上信道解调 传送器一TFk用何种 受信者模拟通信是利用正弦波的幅用L箜抽0鸟的变化,或者利用脉冲的幅度、宽度或位置变化来模拟原始信号,11噪赢一j目的。RT模拟通信系图1-2数字通信系统模型与模拟数据通信相比拟,数字数据通信具有以下优点: 数字技术的开展较模拟技术更快,数字设备通过集成电路很容易实现,并与计算机相结合,而由于超大规模集成电路技术的迅速开展,数字设备的体积与本钱的下降速度大大超过模拟设
5、备,性能价格比高; 来自视频、声音和其他信息源的各类数据均可统一为数字信号的形式,并通过数字通信系统传输; 在长距离数字通信中可以通过中继器放大和整形来保证数字信号的完整性而不累积噪音: 以数据帧为单位传输数据,并通过检错编码和重发数据帧来发现与纠正通信错误,从而有效保证通信的可靠性; 使用加密技术可有效增强通信的平安性; 多路光纤技术的开展大大提高了数字通信的效率。“信息社会信息经济等名称越来越多的出现在我们的生活中,生活离不开信息,随着社会生产的开展,科学技术的进步,人们对传输信息的要求急剧增加到了20世纪20年代,如何提高传递信息的能力和可靠性己成为普遍重视的课题,在传输过程中发生错误后
6、能在收端自行发现或纠正的码。数字信号在传输过程中,由于受到干扰的影响,码元波形变坏。接收端收到后可能发生错误的判决。由于乘性干扰引起的码间串扰,可以采用均衡的方法纠正.而加性的影响那么需要用其他的方法解决。在设计数字数字通信系统时,应该首先从合理选择调制制度,解调方法以及发生功率等方面考虑,使加性干扰缺乏以影响到达误码率的要求,在仍不能满足要求是,就要考虑采用查错控制措施了。一些通用的系统,其误码率要求因用途而异,也可以把查错控制作为附加手段,在需要时加用。从查错控制角度看,按照加性干扰引起的错码分布规律的不同,信道可以分为三类。即随机信道、突发信道和混合信道。在随机信道中,错码的出现是随机的
7、,而且错码之间的统计是独立的。在突发信道中,错码是成串集中出现的,即在一些短促的时间段内会出现大量错码,而在这些短促的时间段之间存在较长的无错码区间。查错控制技术主要有以下四种:检错重发:在发生码元序列中参加过失控制码元,接收端利用这些码元检测到有码元时,利用反相信道通知发送端,要求发送端重发,直到正确接收为止。所谓检测到有码错,是指在一组接收码元中知道有一个或一些错码,但是不知道该错码该如何纠正。采用检错重发技术时,通信系统需要有双向信道传送重发指令。前向纠错:前向纠错一般简称FEC(ForwardErrorCorrection)这时接收端利用发送端在发送码元序列中参加的过失控制码元,不但能
8、够发现错码,还能将错码恢复其正确取值。在二进制码元的情况下,能够确定错码的位置,就相当于能够就纠正错码。采用FEC是,不需要反相信道传送重发指令,也没有因反复重发而产生的时延,故实时性好。但是为了能够纠正错码,而不是仅仅检测到有错码,和检测重发相比,需要参加更多的过失控制码元。故设备要比检测重发设备复杂。反应校验(FeedCheckout):这时不需要在发送序列中参加过失控制码元。接收端将接收到的码元原封不动地转发回发送端。在发送端将它和原发送码元逐一比拟。假设发现有不同,就认为接收端收到的序列中有错码,发送端立即重发。这种技术的原理和设备都很简单。但是需要双向信道,传输效率也比拟低,因为每个
9、码元都需要占用两次传输时间。检错删除(deletion);它和检错重发的区别在于,在接收端发现错误码后,立即将其删除,不要求重发。这种方法只适用在少数特定系统中,在那里发送码元中有大量多余度,删除不分接收码元不影响应用。循环码是线性分组码中最重要的一个子类,它的结构完全建立在有限域的根底上,可以用近似代数的方法精确描述,循环码是1957年由普兰奇(Prange)提出的,此后几十年中得到了充分的研究和开展。起初人们认识到并感兴趣的是循环码的外在特点,即循环码码字的循环移位后仍然是码字,这个特点给循环码的编译码实现带来了便利。在以后的实践中,人们从循环群的角度,在代数机构、纠错性能控制等方面找到了
10、循环码更加吸引人的优越之处。目前,使用查错控制系统中使用的线性分组码几乎都是循环码或循环码的子类。循环冗余校验码(CRC)是一种系统的缩短循环码,广泛应用于帧校验。1.2 内容概要本设计主要分析循环冗余码理论,在理论根底上探讨其运用VHDL语言实现其算法,设计主要分为两个模块,即循环冗余码编码模块和循环冗余解码模块,主要编程工具为MaxPlusIlo本设计主要内容首先从了解循环冗余校验码的实际应用入手,然后分析纠错编码的根本原理,研究程序设计中的根本运算规那么(模2运算)入手,深入分析循环冗余码的编解码理论及其工程实现算法。提出编解码方案并进行比拟分析,选出符合本设计要求的实现方案,进行硬件设
11、计,最后进行程序的模块化设计,并进行仿真验证,模块仿真验证无误进行模块组合调试仿真。分析仿真结果得出结论。第2章CRC编解码理论2.1 纠错编码的根本原理信道编码是在被传送的信息中附加一些监督码元,来检错和纠错。下面以三位二进制码组为例,说明检错纠错的根本原理。三位二进制码元共有2二8种可能的组合;000、001、010、OlK100101110Ill=下面分三种情况讨论如果这8种码组都用于传送消息,即每个码组都是许用码组。在传输过程中假设发生一个或多个误码,那么一种码组会错误地变成另一种码组。这样的编码既不能检错,也不能纠错,完全没有抗干扰能力;(2)假设只选其中的OO0、011、101、1
12、10四种码组作为许用码组。除上述4种许用码组以外的另外4种码组001、010、100、Ill称为禁用码组。经观察我们可以发现,许用码组中“1的个数为偶数个,禁用码组中“1的个数为奇数个。如果在传输过程中发生了一位或三位的错码,那么1的个数就变为奇数个,许用码组就变为禁用码组;接收端一旦发现这些禁用码组,就说明传输过程中发生了错误。用这种简单的校验关系可以发现一个和三个错误,但不能纠正错误。例如,当接收到的码组为OlO时,我们可以断定这是禁用码组,但无法判断原来的正确码组是哪个许用码组。虽然原发送码组为IOI的可能性很小(因为发生三个误码的情况极少),但不能绝对排除;即使传输过程中只发生一个误码
13、,也有三种可能的发送码组:000、Oll和110。显然,上述编码无法发现2个错码。以上编码方法相当于只传递00、01、10、Il四种信息,而第三位是附加的监督位。这位附加的监督码位与前面两位信息码元和在一起,保证码组中I码的个数为偶数。下表示出了这种情况:表2I信息位与监督位的关系信息位监督位晴000云Ol1阴101雨110(3)如果进一步将许用码组限制为二种:000和111。那么不难看出,用这种方法可以发现所有不超过2个的误码:或能纠正一位错码。纠正一位错码的方法是:将8个码组分成二个子集,其中000、100、010,001与许用码组OoO对应,111、011、101、110与许用码组Ill
14、对应;这样,在接收端如果认为码组中仅有一个错码,只要收到第一子集中的码组即判为000,收到第二子集中的码组即判为Illo例如,当收到的码组为禁用码组100时,如果认为该码组中仅有I个错码,那么可判断此错码发生在1位,从而纠正为Oo0:假设认为上述接收码组中的错码数不超过两个,那么存在两种可能性:000错一位和Ill错两位都可能变成10(),因而只能检测出存在错码而无法纠正它。分组码一般用符号(n,k)表示,其中k是每个码组中二进信息码元的数目;n是每个码组的总位数,又称为码组长度(码长);n-k=r为每码组中的监督码元数目,或称监督位数目。通常,将分组码规定为具有如以下图所示的结构。图中前面k
15、位(an-Ia1)为信息位,后面附加个监督位(ar-ao)。图2-1分组码的结构在信道编码中,码组的重量就是码组中非零码元的数目,简称码重,例如OOIO码组的码重为1,OOll码组的码重为2。汉明(Hamming)距离就是两个码组中对应码位上具有不同二进制码元的位数定义为两码组的距离,简称码距。我们把某种编码中各个码组间距离的最小值称为最小码距,可记为min。在上述三位二进制码组例子中,8种码组均为许用码组时,两码组间的最小距离为1,常记作dnlin=1。在选四种码组为许用码组情况下,最小码距式中min=;采用两种许用码组时,4nin=3。由上例可知,-种编码的最小码距直接关系到这种码的检错和
16、纠错能力,码距实际上是由一种码组变成另一种码组必须变化的比特数。因此最小码距是信道编码的一个重要参数。在一般情况下,对于分组码有以下结论:为检测e个误码,要求该编码的最小码距i11+12.1-1)为纠正t个误码,要求该编码的最小码距in2r+12.1为纠正t个误码,同时检测e(et)个误码,要求最小码距in之+1(2.1-3J所渭纠正t个误码,同时检测e个误码,是指假设接收码组与某一许用码组间的距离在纠错能力范围t内,那么按前向纠错方式工作,自动将误码予以纠正;而当与任何许用码组间的距离都超过t时,那么按检错方式工作。也就是按纠检结合的方式工作。在简要讨论了编码的纠(检)错能力后,再来分析一下
17、过失控制编码的效用。假设在信道中传输“0和I的错误概率P相等,且pVVl,那么在码长为n位的码组中发生r位错码的概率(误码率)夕以NN0厂小/34例如,当码长n=7,P=l时,那么有可见,采用了过失控制编码,即使只能纠正(或检测)码组中的12个错0码,也可以使误码率下降几个数量级。这就说明,只能纠(检)12个错码的简单编码也有很大实用价值。事实上,常用的过失控制编码大多数也只能纠正(或检测)码组中的12个错码。2. 2模2运算原理模2运算是一种二进制算法,CRC校验技术中的核心局部,因此,我们在分析CRC算法之前,必须掌握模2运算的规那么。与四那么运算相同,模2运算也包括模2力口、模2减、模2
18、乘、模2除四种二进制运算。而且,模2运算也使用与四那么运算相同的运算符,即+表示模2加,“一表示模2减,X或“表示模2乘,子或/表示模2除。与四那么运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。模2加法运算定义为:0+0=0;0+1=1;1+0=1;1+1=0模2减法运算定义为:0-0=0;0-1=1;1-0=1;I-I=O模2乘法运算定义为:00=0;0l=0;1X0=0;1X1=1多位二进制模2乘法类似于普通意义上的多位二进
19、制乘法,不同之处在于后者累加中间结果(或称局部积)时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。模2除法运算定义为:0l=01l=l多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规那么。后者按带借位的二进制减法,根据余数减除数够减与否确定商1还是商0,假设够减那么商1,否那么商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义的。实际上,在CRC运算中,总能保证除数的首位为1,那么模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是I,按照模2除法运算法那么,那么余
20、数首位是1就商1,是0就商0。3. 3CRC分类在线性分组码中,有一种重要的码称为循环码(CyCIiCcode)。循环码是建立在严密的代数学理论根底上之上的。这种码的检纠)错能力较强,而且编码和解码设备都不太复杂。循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环移位以后,仍是该码中的一个码组。作为数据传输中过失控制的根本方法之一,循环冗余校验(CyclicRedundantCheck)已被广泛用于通信应用中。目前CRC的应用分为非标准和标准两种,己被国际标准化组织规定的标准生成多项式为标准,用户自定义的生成多项式为非标准,这也是目前广泛使用的几种。3.3 .1标准的CRC
21、在通信协议中常见并被广泛使用的标准列于表中。表2-2标准CRC多项式名称多项式简记应用CRC-4X4+%+10x13ITUG.704CRC-16X16+X15+x2+10x8005IBMSDLCCRC-CCIttX16+X12+10x1201ISOHDLC,ITUX.25,SD1.C.V.34/V.41/V.42.PPP-FCSCRC-32/+/+/+i6+/+yO+f+X+A+X+X+10x104C11DB7ZIP,RAR,IEEE8021.AN/FDDI,IEEE1394.PPP-FCSCRC-32C产+户+/+户+/+产+产+产+/+/+/+/+产+0+l0x11EDC6F41SCTP2
22、.3.2非标准的CRC非标准的CRC一般是为了某种用途而采用不同于标准的生成多项式,而实际的操作原理是相同的,主要用于需要CRC而需要低本钱的应用,或者为了减轻设计算机处理负担而又能够保证数据可靠性的折中方法,此外,局部的加密算法也是采用CRC来生成。3.4 循环码理论根底循环码属于分组码也记为(n,k),可分为线性循环码和非线性循环码两种。循环码仍是线性分组码,但另有循环移位不变特性。循环码的码字和多项式:设循环码的任一个码字为:在二元情况下,只取1或0,为了完整描述一个码字,需要知道?的取值及其在码字中的位置。用多项式来描述码字是很方便的,于是4-四-2ai.ai表示的码字用7次多项式来表
23、示,即:上式表示一个n位长的码字可以用一个x1次多项式来表示。可见多项式仅是码字的一个数学描述工具,但不是码字本身,但两者有一一对应的关系。如果a11-ian-244()改写为.-2-341()-1那么表示码字中码元循环左移-位,其对应的多项式相对于乘X:上式中采用了模多项式运算,说明码字的左移,相对于多项式乘x(升幕)后取亡+1的模剩余。同理左移i位相对于乘X:两多项式间一个常用的运算是加法,应为同嘉次项系数相加,在二元的情况下应做模2加,例如:那么:其中的一对V和1由于模2加消掉了,也可以认为做了减法。多项式另一个常用的运算是除法,可排竖式长除法。多项式:Ga)=解+寸+工+1列竖式做:可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL CRC 解码 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6680127.html