《基于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。由上例可知,-种编码的最小码距直接关系到这种码的检错和纠错能力,码距实际上是由一种码组变成另一种码组必须变化的比特数。因此最小码距是信道编码的一个重要参数。在一般情况下,对于分组码有以下结论:为检测e个误码,要求该编码的最小码距i11+12.1-1)为纠正t个误码,要求该编码的最小码距in2r+12.1为纠正t个误码,同时检测e(et)个误码,要求最小码距in之+1(2.1-3J所渭纠正t个误码,同时检测e个误码,是指假设接收