毕业论文——基于FPGA的CRC编解码器的设计.doc

上传人:滴答 文档编号:1272259 上传时间:2019-01-25 格式:DOC 页数:43 大小:3.68MB
下载 相关 举报
毕业论文——基于FPGA的CRC编解码器的设计.doc_第1页
第1页 / 共43页
毕业论文——基于FPGA的CRC编解码器的设计.doc_第2页
第2页 / 共43页
毕业论文——基于FPGA的CRC编解码器的设计.doc_第3页
第3页 / 共43页
毕业论文——基于FPGA的CRC编解码器的设计.doc_第4页
第4页 / 共43页
毕业论文——基于FPGA的CRC编解码器的设计.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、 毕业设计说明书 基于 FPGA 的 CRC 编解码器 的设计 专业 电气工程及其自动化 学生姓名 班级 学号 指导教师 完成日期 盐城工学院本科生毕业设计 基于 FPGA 的 CRC 编解码器的设计 摘要: CRC 校验码 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。它依靠某种数学上约定的形式进行检查 。 校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。 CRC 检验的基 本思想是利用线性编码理论,在发送端根据要传送的 k 位二进制码序列,以一定的规则产生一个检验码 r位 (就是 CRC码 ),附在信息后面,构

2、成一个新的二进制码序列数共 (k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。 CRC 循环冗余校验具有比奇偶校验强得多的检错能力。在实际设计中 CRC 校验码获得了非常广泛的应用。 本论文首先介绍了 FPGA的基本知识,包括对 FPGA 的开发软件工具 Quartus II 和硬件描述语言 VHDL 的详细介绍,然后对循环校验码的原理进行了分析,给出设计方案,进行编写 VHDL 代码设计,用 Quartus II 软件自动生成封装图进行连线,利用 Modelsim 进行软件仿真,并对结果与进行验证,验证显示设计完全正确。 关键词 : CRC; VHDL; FPGA;

3、检错 基于 FPGA 的 CRC 编解码器的设计 Cyclic code circuit design based on FPGA Abstract: CRC checksum is the most common kind of error checking code in data communications, that the length of the information field and a check field can be arbitrarily selected is its feature. It checks relaying on some kind of ag

4、reement in the form of mathematics. Whether results of the check is reliable, if its reliable,then process the data, if its not reliable, then discarded and retransmitted or repair. The basic idea of CRC check is using linear coding theory, at the transmitting end according to k-bit binary code sequ

5、ence to be transmitted, in certain rules to generate a r bits -checksum(this is CRC data). And attached the information to the back, to form a new binary Total number of code sequences (k + r) bits, and finally sent. The receiving end according to the same rules check to determine whether transmissi

6、on error. CRC cyclic redundancy check error detection capability than parity much stronger. In the actual design of CRC received very wide range of applications. This thesis introduces the basic knowledge of FPGA, including details of Quartus II development software tools of FPGA and hardware descri

7、ption language VHDL. Then analysised the principle of cyclic checksum, be written in VHDL code design automatically generated by the Quartus II software package, and wiring diagram. Using Modelsim simulation software to simulate, and verif the results and the verification display design is correct.

8、Keywords: CRC ; VHDL;FPGA; error detection 盐城工学院本科生毕业设计说明书 ( 2015) 目 录 1 概述 . 1 1.1 背景意义 . 1 1.2 发展现状 . 1 1.3 EDA 技术 . 2 1.4 课题的主要工作 . 2 2 算法实现 . 4 2.1 CRC 编解码理论 . 4 2.2 模 2 运算原理 . 6 2.3 CRC 基础计算 . 6 2.4 CRC 编码方法 . 8 2.4.1 CRC 产生操作过程 . 9 2.5 循环码解码方法 . 9 2.5.1 CRC 解码操作过程 . 10 3 仿真实现 . 11 3.1 仿真实现方案分析

9、 . 11 3.1.1 查表法实现方案分析 . 11 3.1.2 逐位运算法实现方案分析 . 12 3.1.3 需求分析 . 14 3.2 编解码设计 . 14 3.2.1 编码模块 . 14 3.2.2 解码模块 . 17 3.3 仿真验证 . 19 3.3.1 编码器仿真 . 19 3.3.2 解码器仿真 . 21 3.4 分析与总结 . 23 4 结束语 . 25 参考文献 . 26 致谢 . 27 附录 1:程序清单 . 28 附录 2:设计图纸 . 31 基于 FPGA 的 CRC 编解码器的设计 1 基于 FPGA 的 CRC 编解码器的设计 1 概述 1.1 背景意义 如今科技的

10、发展突飞猛进,尤其是在通训这个方面,几乎人手一部手机、一台 PC。然而人们在物质水平提高的同时,对科技的需求也越来越高。比如在通信方面,人们会要求各种信息、数据准确无误的传达,并且一定要足够清晰,几乎不受外界的干扰。 但在实际应用中,传输数据的无线信道非常复杂。由于信道有时变性 、衰减性、带宽资源有限、干扰大等特点。信号会受到信道噪声的干扰,也会因为信道本身的复杂衰落变化而造成影响;而这两种因素也是导致接收出现误码的主要原因。对于话音或图像,误码会造成话音或图像质量的下降;而对于各种数据文件,误码则可能使得整个文件作废。差错控制中的循环码技术正是降低误比特率、提高通信质量的主要技术手段之一。

11、在本课题的研究中,我们还要涉及到 VHDL 语言的编程,利用它来实现差错控制中的循环码。即使使用当前最先进的计算机,如果使用人类语言来描述数字系统,并希望计算机能够理解设计者的意图,这仍然是不可能 的。计算机要求定义具有严格规则的语言。 VHDL 就是一种应用广泛的计算机编程语言。 通过本课题的研究,我可以深入了解循环码,熟悉并掌握其实现方法;熟悉VHDL 的编程方法,并能熟练地运用 VHDL 编程实现循环码 CRC-8 实现电路;熟悉Quatus 的基本功能,能利用它进行仿真并用其产生电路,实现循环码的功能;掌握通信原理二次开发模板上各个按钮的功能,并能在二次模板上实现循环码的实测。由此亲身

12、体验循环码在生活中的重要性。 1.2 发展现状 信息在传递数据的过程中,有可能会因为某种因素使信息所包含的数据发生错误 .为 了减少并且防止这一类错误的发生,除了从外部减弱干扰提高可靠性外,也应该在数据的编码上完成检查错误和纠正错误的过程。可以这样来完成:在要传递的数据代码中加入数个校验位,在传递的过程中如果收到干扰发生错误就会生成错误代码而被发现,更能够根据错误代码而确定错误的位置并且纠错。这就是校验码。当传递数据时校验位和数据位一起被发出,如果在传输过程中没有错误发生时,接收的一方去掉校验位而留住数据位,否则检验后得到正确的代码,或请求重传(错误检测码),其中循环冗余校验可以实现两种功能,

13、而且误差校正(关于选择和生成多项式), 是一个以数据块为对象有效和可靠的误差检测和校正方法,因为它的编解码器设计简单,强纠错功能和低的概率发生错误的判断,这已经在工业测量和控制应用程序和通信系统中应用很广。 盐城工学院本科生毕业设计说明书 ( 2015) 2 FPGA 在过去 30 年产生了长足的发展。尤其是工艺的不断提高使得 FPGA 的生产成本不断降低,同时性能却在大幅度的提升。他的应用成本已经能够为一些设计所接受。另外由于其具有通用性好,代码的可移植性强。设计的保密性和稳定性高等特点受到越来越多的设计者青睐,他们已经不再只是军工领域的专享产品。由于 FPGA 的结构可以很好的并行,适合做

14、大量的数据处理的工 作。能更有效的保证系统的实时性,另外基于 FPGA 的设计能够具有很好的灵活性和可重用性。 1.3 EDA 技术 EDA 是一门新兴技术,发展快速,它在设计上的载体主要是规模庞大并且可以编程运行的逻辑器件。主要的系统描述方式是硬件描述语言。可以自动用软件完成各种设计,非常的方便快捷。国际上对于 EDA 应用的范畴很宽。在机械、通信、航天航空、化工、电子、医学等多个领域中都有广泛的应用。相比之下国内定义的 EDA 范围就比较狭隘了 ,主要是指 IC、 PCB 以及电子电路的设计。本次设计所涉及的 EDA 技术主要是对 CRC 生成及校验进行 验证仿真 ,先通过 Quartus

15、 对设计程序进行编译无误后 ,再使用 Modelsim 仿真验证 ,确保设计可以准确无误的运行。 FPGA 是现场可编程门阵列的简称,可分为逻辑元件、输入输出元件和连线三个部分,最能代表的优点就是高集成度,高速和高可靠性。时钟延时短,在很多应用领域具有广阔的应用前景。设计完善的话,不会出现别的软件会出现的一系列问题。 而且它的集成规模很大,可以用 EDA 技术进行前期设计和后期开发。强大的兼容性使得 FPGA 可以与 EDA 技术很好的结合在一起,使得产品的设计速度大幅变快。 VHDL 语言是一种设 计数字电子系统的描述语言,在美国发起,经过一段时间的调整、完善、开发,最终标准化并且使得集成电

16、路高度系统化。 VHDL 的语法很严格,描述方法多样,对新手来说难以上手,但是对于熟练的用户来说就是一种很棒的编程语言。归纳起来 ,VHDL 语言具有以下优点 :功能强大 ,设计方式多样 ;具有强大的硬件描述能力 ;具有很强的移植能力 ;设计描述与器件无关 ;程序易于共享和复用。 Quartus II 13.1 是 Altera 公司淘汰 Maxplus II 后开发出来的一款 PLD 开发平台软件。支持多种设计以及器件的开发,并且还支持多种设计方 式,内部自带多种综合仿真器,可以完成完整的 PLD 设计。 Quartus II 与 Modelsim 结合在一起,可以实现设计,仿真的一个很好的

17、平台,并且方便。随着 Quartus II 版本不断更新 ,软件的更新主要体现在对于支持的芯片类型更多。本文设计中采用了比较可靠的 Quartus II 13.1 版本。 1.4 课题的主要工作 本论文设计了一款基于 FPGA 的循环码产生电路,通过对在 Quartus II 上进行具体的设计;完成了功能仿真和验证、分析、改进,直至能够得出功能完善并且方便的 CRC 编解码器。本论文的具体内容共分 为四节: 基于 FPGA 的 CRC 编解码器的设计 3 第一节概述主要介绍了本设计的研究背景以及意义、发展的现状以及 EDA技术的概述。 第二节主要介绍了 CRC 编解码的算法理论、实现以及各视图

18、的解释。 第三节主要介绍了编解码器的仿真验证。 第四节是结论,对整个研究工作进行归纳和综合的总结,包括研究所得结果、与已有结果的比较、本次研究中尚存在的问题、对进一步研究的见解与建议。 盐城工学院本科生毕业设计说明书 ( 2015) 4 2 算法实现 2.1 CRC 编解码理论 需要额外增加数个监督码元来完成信道的编码,可以用来检查错误和纠正错误。举个例子,用三位二进制码组来说明检查错误和纠正错误的原 理。三位二进制码组共有 8种可能的组合,下面分三种情况讨论: a) 如果这 8 种码组都用于传送消息,就是说其中的每个码组都是可用的。在传输信息的过程如果出现误码,那么一种码组会错误地成为另外七

19、个码组中的一个。这样的编码既不能检查错误 ,也不能纠正错误,没有任何抵抗抗干扰的能力。 b)如果选择其中的 000、 011、 101、 110 作为可用的码组。除上述 4种可用的码组以外,另外的 4 种码组称为不可用码组。经观察我们可以发现,可用码组中“ 1”偶数个,不可用码组中“ 1”为奇数个。如果在传输过程中发生了一位或三位 的错码,则“ 1”的个数就变为奇数个,许用码组就变为禁用码组;如果不可用码组被接收方发现,就可以说明传输过程有错。有一个或者有三个错误可以被这种简单的校验发现,但是并不能纠错。比如说,接收到的码组是 010,可以确定它是不可用码组,不过不能看出来原来的正确的码组是哪

20、个。即使原发送码组是 101 的可能性很小,但是还是会有这种情况发生的;哪怕传输信息的过程中只出现了一个误码,也有三种可能的发送码组。显然,上述编码无法发现 2 个错码。上面所描述的编码方法只是传递了三位二进制码组的前两位一共四种信息,并且第三位是额外的监督 位。这位附加的监督码位与前面两位信息码元和在一起,保证码组中“ 1”码的个数为偶数。下表示出了这种情况: 表 2-1 信息位与监督位的关系 信息位 监督位 晴 00 0 云 01 1 阴 10 1 雨 11 0 c)假设限制两种可用码组: 000 和 111。那么可以看出,这种明了的方法可以发现小于等于 2 个的误码;或者能够纠正一位错码

21、。纠正一位错码的方法是:将 8 个码组分成二个子集,其中 000、 100、 010、 001与许用码组 000 对应,111、 011、 101、 110与许用码组 111 对 应;这样,在接收端如果认为码组中仅有一个错码,只要收到第一子集中的码组即判为 000,收到第二子集中的码组即判为 111。 如果接收的码组是不可用码组 100 时,假设这个码组中只有 1 个错误的码,就可以确定这个错码发生在“ 1”位,然后吧错误纠正成 000;假设接收码组中的错码的个数小于等于两个,就可能有两种情况: 000 错一位, 111 错两位都有成为 100 的可能,所以不能纠错只能检验到错误。 分组码一般

22、用数学符号 )( k-n 表示,符号中 k 是每个码组 中信息码的数目; n基于 FPGA 的 CRC 编解码器的设计 5 是每个码组的总位数,又称为码组长度 (码长 ), rk-n 的数字是每码组中的监督码元的个数。通常,将分组码规定为具有如下图所示的结构。图中前面 k 位 (an-1ar)为信息位,后面附加个监督位 (ar-1 a0)。 1na 2na ra 1ra 0a 图 2-1 分组码的结构 在信道编码中,码重 就是码组中不是 零 的 码元的 个数,比如说, 1101 码组的码重 是 3, 1100 码组的码重为 2。两个码 组 中 所 对应码位上 所具 有 的 不同二进制码元的位数

23、 就是 两 个 码组 之间 的距离,称 为 码距。 最小码距可记为 mind 。上面三位 二进制 码组 的讨论 中, 8 种码组 都是可以 用 的 码组 的时候 ,两 个 码组 之 间的最小距离 是 1, 可以记成 1dmin 。四种码组 都是可 用码组 的话 ,最小码距式中2dmin ; 使用了 两种 可 用码组 的时候 , 3dmin 。 从上面可以知道 , 最小码距关系到 编码 码的 纠正错误和检测错误的能力 , 所以说 最小码距 在 信道编码 中是 重要参数。 没有特殊的情况下, 对于分组码有 下面几个 结论: a)为 检测 e 个误码,要求 该编码的 最小码距 min 1de b)为

24、 纠正 t 个误码,要求 该编码的 最小码距 min 21dt c)为 纠正 t 个误码,同时检测 e( e t)个误码,要求最小码距 min 1d t e “ 检测 e 个误码 的同时 纠正 t 个误码 ” , 说的是 当接收码组与某一个可用码组间的距离在纠错能达到的范围内,就 自动 纠正误码;与随意可用码组间的距离都超过 t 时,则按“纠检结合的方式”工作。 简单分析 了编码的纠错 和检错的 能力 之 后,再 看看 差错控制编码的 能力 。 如果 在信道中传输 “ 0” 和 “ l”并且发生 错误 的 概率 P 一样 , 并且 P1, 那么 在码长为 n 位的码组中 出现 r 位错码的概率

25、为 )( rpn ; 例如,当码长 n 7, 310p 时 ,则有: 37 1 7 7 10pp 257 2 3 1 2 .1 1 0pp 387 3 3 5 3 .5 1 0pp 可见,采用了差错控制编码, 哪怕仅仅 纠 正 ( 或检测 ) 出了 码组中的 一或二K 个 信息位 码长n=k+r r 个 监督位 盐城工学院本科生毕业设计说明书 ( 2015) 6 个错 误 码, 还是能够让 误码率下降 许多 。 这就能够说明 , 仅仅 纠 错 (检 测 ) 出一到二 个错码编码也 很有用,即使只是很简单的编码 。 2.2 模 2 运算原理 模 2 运算是一种二进制算法, CRC 校验技术中的核

26、 心部分,因此,我们在分析CRC 算法之前,必须掌握模 2运算的规则。与四则运算相同,模 2 运算也包括模 2加、模 2 减、模 2乘、模 2 除四种二进制运算。而且,模 2运算也使用与四则运算相同的运算符,即“”表示模 2加,“”表示模 2 减,“”或“”表示模 2乘,“”或“ /”表示模 2 除。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。 a) 模 2 加法运算定义为: 0 0 0; 0 1 1; 1 0 1; 1 1 0 b) 模 2 减法运算定义为: 0 0 0; 0 1 1; 1 0 1; 1 1 0 c) 模 2 乘法运算

27、定义为: 0 0 0; 0 1 0; 1 0 0; 1 1 1 多位二进制模 2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果(或称部分积)时采用带进位的加法,而模 2乘法对中间结果的处理方式采用的是模 2 加法。 d)模 2 除法运算定义为: 0 1 0 1 1 1 多位二进制模 2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。按带借位的二进制减法,通过计算余数减除数能不能够 减确定商 0 还是商 1,若够减则商 1,否则商 0。多位模 2除法采用模 2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义的。实际上,在 CR

28、C 运算中,总能保证除数的首位为 1,则模 2除法运算的商是由余数首位与除数首位的模 2除法运算结果确定。因为除数首位总是 1,按照模 2 除法运算法则,那么余数首位是 1 就商 1,是 0就商 0。 2.3 CRC 基础计算 循环码属于分组码也记为 (n,k),可分为线性循环码和非线性循环码两种。循环码仍是线性分组码,但另有循环移位不变特性。 循环码的码字和多项式: 设循环码的任一个码字为: 0121 aaaaa inn 在二元情况下, ia 只取 1或 0,为了完整描述一个码字,需要知道 ia 的取值及其在码字中的位置。用多项式来描述码字是很方便的,于是 0121 aaaaa inn 表示的码字用 1n 次多项式来表示,即:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。