毕业设计(论文)-数据通信技术.doc_第1页
毕业设计(论文)-数据通信技术.doc_第2页
毕业设计(论文)-数据通信技术.doc_第3页
毕业设计(论文)-数据通信技术.doc_第4页
毕业设计(论文)-数据通信技术.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

陕西理工学院毕业设计(论文)学生姓名 学 号 专业班级 电子1104指导教师 2015年6月 摘 要数据通信技术是计算机网络技术发展的基础,已经成为现代生活中必不可少的一部分。但通过通信信道传输的数据往往会有差错的产生,且不可避免。因此我们必须要进行数据校验。校验的方法有很多,其中CRC校验码是一种重要的循环码,编码和解码方法简单,容易实现,检错能力强,是一种效率极高的数据校验方法。本文意义在于检测数据传输中的错误信息码,其目的是使数据信息码在接收端能够准确的接收,利用CRC校验的编码和解码原理和具体实现步骤,用VHDL语言编程实现,在对程序进行仿真时,在发送端发送信息时,将校验码R(X)加到信息码C(X)之后一同发出。并将这时发出的信息称为T(X)码,T(X)正好能被G(X)整除。接收方收到信息码为T(X)。如果传输中未发生错误,则接收码T(X)与发送码T(X)相同,故能被G(X)整除;如果传输中发生错误,则接收码T(X)与发送码T(X)不相同,且不能被G(X)整除。因此,我们就以T(X)除以G(X)的余数是否为0来判断接收码元中是否有错误。也有可能收到的错误码元除以G(X)余数为0,这种问题是CRC所不能解决的,只能通过选择G(X)和增加冗余位来降低这种错误的概率。基于EDA技术的现场可编程门阵列FPGA集成度高,结构灵活,采用FPGA较好地实现了仿真,并对数据作了一定的处理,本设计中为CRC校验。另外,可以利用FPGA的在线可编程特性,对本设计电路进行功能扩展,以满足更高的要求。关键字:CRC检验;编码原理;解码原理;VHDLAbstractData communication technology is the foundation for the development of the computer network technology, has become an indispensable part of modern life. But through the communication channel transmission of data often can have the mistake produce, and inevitable. So we have to have some data validation. Calibration method are many, including CRC check code is a kind of important circulation yards, encoding and decoding method is simple and easy to implement, fault ability, detection is a highly efficient data calibration method. This paper significance lies in the error detection data transmission of information yards, the purpose is to data information code can accurately on the receiving end of receiving, use the CRC check encoding and decoding principle and specific implementation steps, with VHDL language programming realization, convenient readers understand and use. In the procedure simulation, after the sender sends the information, will check code R(X) added to the information code C(X) issued together after. And the message will then called T(X) yards, T(X) just can be G(X) division. The receiving party received information code for T (X). If the transmission errors, then not receiving yards T (X) and send yards T (X) same as can be G(X) divisible by; If transmission errors occur, is receiving yards T (X) and send yards T(X) are not identical, and cannot be G(X) division. Therefore, we are with T (X) divided by G(X) the remainder to judge whether receiving yards for 0 whether any mistakes. Also may have error code divided by G(X) remainder is 0, this problem is CRC can solve, only by choosing G(X) and increase redundant bits to reduce this error probability. Based on the EDA technology field programmable gates array FPGA integration is high, flexible, based on FPGA achieved, and the data simulation made certain processing, this design for CRC checking. In addition, we can use the FPGA online programmable properties, this design circuit function expansion, to meet the higher request.Key Words: CRC check; coding theory; decoding theory; FPGA; VHDL目 录第1章 绪论11.1 数据传输检测方法现状及趋势11.2 本论文的研究内容2第2章 CRC原理32.1 CRC的分类32.2 CRC编码的基本原理4第3章 循环冗余校验相关仿真技术研究73.1 FPGA的特点73.2 HDL语言8第4章 程序模块设计及仿真204.1 程序设计与仿真204.1.1 编码模块设计与仿真214.1.2 解码模块设计与仿真234.1.3 循环冗余码编码模块与解码模块联合运行25第5章 CRC的应用205.1在HDLC协议的应用205.2 CRC的DSP实现20第6章 总结与展望22参考文献23致谢24附录2532第1章 绪论数据通信技术是计算机网络技术发展的基础,已经成为现代生活中必不可少的一部分。但通过通信信道传输的数据往往会有差错的产生,且不可避免。因此我们必须要进行数据校验。校验的方法有很多,其中CRC校验码是一种重要的循环码,编码和解码方法简单,容易实现,检错能力强,是一种效率极高的数据校验方法。本文介绍了CRC校验的编码和解码原理和具体实现步骤,并在理论的基础上列举了一个具体的例子来更好的诠释,方便读者理解和运用。1.1 数据传输检测方法现状及趋势在数据通信和计算机通信过程中,由于通道传输特性不理想,并且受到噪声或干扰的影响,传输到接收端后可能发生错误判决影响,使接收端收到的信息与发送端发送的信息不一致,即接收端收到的信息产生了误码。用误码率(PC)来度量信道传输信息的准确度,即PC=错误接收码元数/接收码元数。为了尽可能地降低通信的误码率,提高数字通信的可靠性,往往要采用差错控制编码(又叫信道编码)。用差错控制编码可以发现可能产生的误码(检错码),或发现并纠正错(纠错码)。差错控制的目的是提高通信的可靠性。差错控制最常用的方法有三种:自动请求重发方式(ARQ)、向前纠错方式(FEC)和混合纠错方式(HEC)。其中FEC和HEC是基于纠错编码,而ARQ是基于检错编码。FEC依赖于在发送码字中有控制地加入冗余信息。信号在噪声信道中进行传输时会产生误码现象,从而需要进行误码检测和纠正。不管接收码字的译码是否成功,接收机都不进行任何进一步处理。因此,使用于FEC的信道编码技术只要求发射机和接收机之间是单向的链接。ARQ的基本思想完全不同于FEC。ARQ采用冗余的目的仅仅是为了进行误码检测。当在传输的码字中检测到错误时,接收机就要求重传错误的码字,这就需要使用一条返回路径(反馈信道)。因此,ARQ只能用于半双工或全双工的链路。实现检错功能的差错控制方法有很多,常用的有:奇偶校验、校验和检测、重复码检验、横比码校验、行列冗余码校验等。HEC是FEC和ARQ的结合。为了不破坏数据的完整性,差错控制借助于前向纠错FEC的方法来实现。离散信源产生二进制的信息,发射几种的信道编码器收到比特信息后,按照指定的规则加上冗余发送到接收端。接收机中的译码器对收到的数据进行误码检测和纠错。循环冗余校验CRC是由分组线性码的分支而来,其主要应用是二元码组。由于检错能力强,误判概率很低等优点,被广泛应用于工业测控和数据通信领域 曹雪虹, 张宗橙. 信息论与编码M. 北京: 清华大学出版社, 2004.。差错控制编码的基本思想是:发送端在传输的信息码元序列中附加一些冗余的监督码元(校验码),这些监督码和信息码之间按编码规则形成一定的关系, 接收端则通过检查这种关系来发现或纠正可能产生的误码。循环冗余校验CRC (Cyclic Redundancy Check)方法是以数据块为对象进行校验的,是一种高效、可靠的检错和纠错方法 金素梅, 王家礼. 基于FPGA的CRC编码器的实现J现代电子技术, 2005(24):l820。随着通信技术、计算机技术和控制技术(3C技术)的快速发展。多位数据的并行处理成为了人们关注的焦点,如何对多位并行数据进行快速编码及校验成为了数据处理中的研究热点。如果采用一般的串行CRC编码处理方式,在处理速度方面必定会大打折扣, 若要满足快速的处理能力,就必须提高系统时钟频率,这样就增加了系统的功耗也增加了系统的硬件实现难度。针对以上问题本文以具有更强差错校验能力的CRC- 16校验码为例,用FPGA实现了32位并行数据的CRC- 16编码。这一实现使得系统能够在较低时钟频率下,对32位并行数据进行快速编码和差错控制,保证了多位数据的快速处理和传输的可靠性 蒋安平. 循环冗余校验码(CRC)的硬件并行实现J. 微电子学与计算机, 2007, 24(2): 107- 112.。1.2 本论文的研究内容介绍了循环冗余码CRC校验码的原理,算法及用VHDL语言实际校验码的设计,并介绍了FPGA/CPLD,VHDL,Verilog HDL语言,性能分析并用FPGA进行CRC -4与CRC-16的仿真,给出了CRC校验码的具体计算过程和使用硬件描述语言VHDL来实现CRC编码的流程图,在程序中实现的是串行移位计算,并以Altera公司开发的EDA工具Quartus作为编译、仿真平台,选用Cyclone系列中的EP1C6T 144C6器件,完成了CRC编码器的FPGA实现,其实现速度可达397MHz。本论文还提出了CRC在实际中的应用,包括在HDLC协议及DSP系统中的应用。第2章 CRC原理 CRC由线性分组码的分支而来,是一种检错能力很强的循环码。循环冗余校验对传送数据作错误侦测是利用除法及余数的原理。编码和解码方法简单,容易实现,检错能力强,误判概率几乎为零,而且这种方法取得校验码的方式具有很强的信息覆盖能力,是一种效率极高的错误校验法。这种高效的差错控制方法,在测控及数据通信中得到了广泛的应用。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。在计算机系统中,内存与外设、内存与硬盘交换数据及计算机网络中以报文组方式传送数据时,都可采用循环冗余校验(CRC)码来检测并纠正数据传输中出现的错误。2.1 CRC的分类目前CRC的使用分为标准和非标准两种,非标准为用户自定义CRC的生成多项式,而标准是已被国际标准化组织规定的标准生成多项式。1. 标准的CRC在通信协议中常见并被广泛使用的主要有以下几种(见表2.1)。表2.1 CRC生成多项式的标准表生成CRC的名称多项式CRC-4x4+x+1CRC-8x8+x2+x+1CRC-10x10+x9+x5+x4+x2+1CRC- 12x12+x11+x3+x2+x+1CRC-16x16+x15+x2+1CRC- CCITTx16+x12+x5+12. 非标准的CRC非标准的CRC一般是为了某种用途而采用的不同于标准的生成多项式,而实际的操作原理是相同的。主要是用于需要CRC但需要低成本的应用,或者为了减轻计算机的处理负担,又能保证数据可靠性的折中办法。此外,部分的加密算法也用CRC来生成。2.2 CRC编码的基本原理 1. CRC算法原理CRC码是一种线性、分组的系统码。在K位信息码之后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。CRC校验采用多项式编码方法,被处理的n比特的数据块可以看作是一个n-1阶的二进制多项式。例如一个8比特的二进制数10111001可以表示为:x7+x5+x4+x3+1。多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进、借位,和逻辑异或运算一致。模2除步骤如下:(1)用除数对被除数最高几位做模2减,没有借位。(2)除数右移一位,若余数最高位为商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。(3)一直做到余数的位数小于除数时,该余数就是最终余数。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(X)。根据G(X)可以生成K位信息的校验码,而G(X)叫做这个CRC码的生成多项式。假设待发送的K位信息多项式用C(X)表示,将C(X)左移R位,则可表示为C(X)*2R,这样C(X)的右边就会空出R位,这就是校验码的位置。通过C(X)*2R除以生成多项式G(X)得到的余数就是校验码。Q(X)为商,R(X)为余数。即 xrM(x)/G(x)=Q(x)+R(x)/G(x)在发送端发送信息时,将校验码R(X)加到信息码C(X)之后一同发出。并将这时发出的信息称为T(X)码,其码元形式如下。T(X)正好能被G(X)整除。 123kk+1n图2.1 CRC码格式接收方收到信息码为T(X)。如果传输中未发生错误,则接收码T(X)与发送码T(X)相同,故能被G(X)整除;如果传输中发生错误,则接收码T(X)与发送码T(X)不相同,且不能被G(X)整除。因此,我们就以T(X)除以G(X)的余数是否为0来判断接收码元中是否有错误。也有可能收到的错误码元除以G(X)余数为0,这种问题是CRC所不能解决的,只能通过选择G(X)和增加冗余位来降低这种错误的概率 程军, 陈贵灿, 姜飞. USB数据传输中CRC校验码的并行算法实现J. 微电子学与计算机, 2003,(3): 77- 80.。2. CRC编解码常见算法(1)直接计算法:直接计算法又可以分为并行计算法和串行计算法,这两种方法里面又可以用3 种设计思想即矩阵法、代入法和流水线法来设计。并行算法对于高速的通信实时性要求非常强;同时对于长帧结构,采用并行算法有利于减少算法时间,但需要严格的数学算法模型。(2)查表法:对于查表法生成CRC校验码,预先计算好所要的全部有效信息位,存放信息位表中,接着按信息位的顺序计算好所有校验位,并存放于表中,待要使用时查表使用,其原理是:CRC查表法原理图和直接计算法相反,表法生成CRC校验码的优点是运算量小、速度快;不足点是需要大量地存储空间,活性不高。但这几种算法需要的逻辑资源较多,需要多级组合逻辑的反馈及各种数学运算,较复杂,不易实际应用。设计拟采用模拟人的思维方式进行串行设计,时减少串行设计所要的时间 冯向科. 基于MODBUS RTU 通信协议下的CRC 算法实现J. 电脑知识与技术, 2006 (8) : 87 - 88.。要处理的信息位得出查表索引从校验表中取校验值与信息表的值比较图2.2 查找表法步骤3. CRC算法分析CRC码是用待发送的二进制数据C(X)左移R位,然后除以生成多项式G(X),得到的余数就是CRC码。CRC的具体生成步骤如下:(1)将x的最高幂次为R的生成多项式G(X)转换成对应的R+1位二进制数。(2)将待发送的二进制数据C(X)左移R位,相当于对应的信息多项式C(X)* 2R。(3)用生成多项式二进制数对信息码做模2除,得到R位的余数R(X)。(4)将余数拼接到信息码左移后空出的位置,得到完整的CRC码。例如,假设使用的生成多项式是G(x)=x3+x+1,4位的原始报文为1010,求编码后的报文。解的过程如下:(1)将生成多项式G(x)=x3+x+1转换成对应的二进制数1011。(2)生成多项式有4位,要把原始报文C(X)左移3位变为1010000。(3)用生成多项式对应的二进制数对左移3位后的原始报文进行模2除。(4)得到余数0 1 1,即校验码。(5)编码后的报文(CRC码)为1010011。通过CRC编码规则可以看出,CRC编码实际上是将待发送的K位二进制数据C(X)转换成了可以被生成多项式G(X)除尽的K+R位的二进制多项式C(X)*2R,所以,解码时,可以用接收到的数据除以G(X),如果余数为0,则表示传输过程没错误,如果余数不为0,则表示传输过程肯定存在错误。解码时,将接收到的二进制数据去掉尾部的R位数据,得到的就是原始的二进制数据信息 王新梅, 肖国镇. 纠错码原理与方法(修订版)M. 西安: 西安电子科技大学出版社, 2002.。4. CRC 算法性能分析生成多项式的选取会影响检错纠错的性能。生成多项式应该满足下列要求;任何一位发生错误都应使余数不为0;不同位发生错误应当使余数不同;应满足余数循环规律。生成多项式的幂次越高,其检错能力越强。若生成多项式G(X)的最高幂次为R,则该CRC校验码的检错性能如下 P GutmannData Remanence in Semiconductor Devices CProceedings of the 10th Conference Oil USENIX Security Symposium, Washington DC:Berkeley, CA, USA, USENIX Association, 2001:(1)可检测出所有奇数个错误。(2)可检测出所有单个突发错误。(3)可检测出所有两个错误。(4)可检测出所有长度小于等于R个比特的突发错误。(5)对于长度等于R+1个比特的突发错误,其漏检率仅为1 / 2 r - 1。(6)对于长度大于等于R+1个比特的突发错误,其漏检率仅为1/2r。第3章 循环冗余校验相关仿真技术研究 近年来迅速发展的FPGA技术改变了基于芯片集成的数字系统设计理念,在使用FPGA实现复杂数字系统时,可以利用FPGA的剩余资源实现一些简单的功能模块(如UART,CRC等)以替代专用集成电路芯片(ASIC),从而提高系统的集成度。EDA能蓬勃发展的关键技术之一就是采用了硬件描述语言(HDL)描述电路系统,这也是计算机应用的一次重大突破,硬件描述语言的出现使电子系统的设计可以像编C程序一样简单易学,从而让软件工程人员很容易了解硬件的设计。对于FPGA和CPLD开发而言,比较流行的HDL主要有Verilog HDL、VHDL和AHDL等,其中VHDL和Verilog HDL因适合标准化的发展方向而最终成为IEEE标准。但与VHDL相比Verilog HDL有个最大的优点是:一种非常容易掌握的硬件描述语言,只要有C语言的编程基础,一般经过2到3个月的认真学习和实际操作就能掌握这种设计技术。并且完成同一功能它的程序条数一般仅为VHDL1/3。3.1 FPGA的特点FPGA(现场可编程门阵列)与CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL,GAL等相比较,FPGACPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。这样的FPGACPLD实际上就是一个子系统部件。这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占用了较大的PLD市场 任晓东. CPLDFPGA高级应用开发指南 M. 北京: 电子工业出版社, 2003。FPGACPLD芯片都是特殊的ASIC芯片,与其它PLD的结构各有其特点和长处,但概括起来,他们是由三大部分组成的:(1)二维的逻辑块阵列,构成了PLD器件的逻辑组成核心;(2)输入输出块,连接逻辑块的互连资源;(3)连线资源,由各种长度的连线线段组成,其中也有一些可编程的逻辑开关,用于逻辑块之间、逻辑块与输入输出块之间的连接。它们除了具有ASIC的特点之外,还具有以下几个优点:(1)随着VLSI(very Large scale IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管,FPGACPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。(2)FPGACPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以,FPGACPLD的资金投入小,节省了许多潜在的花费。(3)用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGACPLD试制样片,能以最快的速度占领市场。FPGACPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出FPGACPLD的优势。电路设计人员使用FPGACPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识,FPGACPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场 Shukla S, Bergmann N W. Single bit elT or eorrection implementation in CRC一16 on FPGAl C I. FieldProgrammable Technology. 2004. Proceedings. 2004 IEEE International Conference, 2004: 319322。一般FPGA的开发大体有如下几个步骤:设计输入一功能仿真一代码综合一实现一下载。其中最重要的显然是设计部分,因为产品的功能就是在设计上体现出来的;而仿真主要针对设计,采用EDA工具进行波形仿真,只有波形仿真通过才能说明设计的正确性与合理性;综合主要是将用HDL语言所作的硬件描述对应到FPGA芯片上的单位逻辑电路上;实现是将综合后生成的逻辑网表与具体的FPGA相适配;最终生成的位流文件通过某种下载途径下载到FPGA中 王诚, 吴继华, 范丽珍. Alter FPGACPLD设计(基础篇)M. 北京: 人民邮电出版社. 2005。3.2 HDL语言硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构 候伯亨, 顾新. VHDL硬件描述语言与数字逻辑电路设计M. 西安: 西安电子科技大学出版社. 1997.。目前,这种高层次(highleveldesign)的方法已被广泛采用。据统计,目前在美国硅谷约有90以上的ASIC和FPGA采用硬件描述语言进行设计。硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。1. VHDL语言的特点:VHDL是一种独立于实现技术的语言,它不受某一特定工艺的束缚,允许设计者在其使用范围内选择工艺和方法。为了适应未来的数字硬件技术,VHDL还提供了将新技术引入现有设计的潜力。VHDL语言的最大特点是描述能力极强,覆盖了逻辑设计的诸多领域和层次,并支持众多的硬件模型。具体而言,VHDL有一些特点 邢建平, 曾繁泰. VHDL程序设计教程M. 北京: 清华大学出版社, 2O05: 3768:(1)支持从系统级到门级电路的描述,同时也支持多层次的混合描述;描述形式可以是结构描述,也可以是行为描述,或者二者兼而有之。(2)既支持自底向上的设计,也支持自顶向下的设计。(3)既支持模块化设计,也支持层次化设计;支持大规模设计的分解和设计重用。(4)既支持同步电路,也支持异步电路;既支持同步方式,也支持异步方式,(5)支持传输延迟,也支持惯性延迟,可以更准确地建立复杂的电路硬件模型。(6)数据类型丰富,既支持预定义的数据类型,又支持白定义的数据类型。2. Verilog HDL语言的特点:Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。Verilog HDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述 J Bhasker著, 孙海平等译. Verilog 综合实用教程M. 北京: 清华大学出版社2004.。下面列出的是Verilog硬件描述语言的主要能力:(1)基本逻辑门,例如and、or和nand等都内置在语言中。(2)用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。(3)开关级基本结构模型,例如pmos和nmos等也被内置在语言中。(4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。(5) 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式一使用连续赋值语句方式建模;结构化方式一使用门和模块实例语句描述建模。(6)Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。(7)能够描述层次设计,可使用模块实例结构描述任何层次。(8)设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。3. 两种HDL语言的比较:VHDL语言语法描述严谨,给阅读和使用都带来了极大的好处,对超大规模系统级电路描述能力强于Verilog HDL语言,但是在门级、RTL级、算法级上的描述不如Verilog HDL语言灵活、简便。VHDL语言支持基于库(LibraryBased)的设计方法,而且还支持同步电路、异步电路、FPGA以及其他随机电路的设计。其可应用范围之广是Verilog HDL语言所不能比拟的。由于VHDL很早就成为IEEE的标准公开发布,所以目前大多数EDA工具几乎都支持VHDL语言。这样就给VHDL语言进一步推广和应用创造了良好的环境。VHDL语言系统硬件描述能力强,具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。例如,在PC机扩展槽上设计一块接口卡,该接口卡的硬件设计应满足主机的接口要求。此时,主机部分功能可以用行为方式描述,而接口卡可以采用RTL方式描述。在系统仿真时就可以验证接口卡的工作是否正确。这样,在接口卡设计出来以前就可以知道接口卡的工作是否满足系统要求。VHDL语言能进行系统级的硬件描述,这是它最突出的优点。而且,VHDL语言可以自定义数据类型,这样也给编程人员带来了较大的自由和方便。而Verilog HDL语言由于早在1983年被提出,因而具有广泛的设计群体,成熟的资源较VHDL语言要丰富,更为关键的是其语言从C语言衍生出来的,所以比较容易掌握,不像VHDL语言比较晦涩难懂 侯伯亨, 顾新. VHDL 硬件描述语言与数字逻辑电路设计M. 西安: 西安电子科技大学出版社, 1999.。在国外,欧洲人多用VHDL语言,美国人多用Verilog HDL语言;国内院校内多用VHDL,企业内多用Verilog HDL语言。这两种语言在硬件设计时都与工艺无关,当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工艺(MOS,CMOS)。这样,在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具就行了。第4章 CRC校验码设计与实现CRC校验的基本思路是利用线性码原理,对需要进行传输的原始n位二进制数据按照一定的规则处理,产生一个r位的校验码并附加在原始数据后面,形成一个n+r位的二进制数据,最后一起发送出去。4.1 程序设计与仿真本设计完成12位信息加5位CRC校验码发送、接收,由两个模块构成CRC校验生成模块(发送)和CRC校验检错模块(接收),其中CRC生成多项式采用,二进制表示为110101。输入、输出都为并行的CRC校验生成方式。程序模块设计端口数据定义: CRC校验生成模块datacoded_dataclkloadsendCRC校验校验模块coded_datadecode_dataclkreceptionerror1datafini图4-1 CRC编解码模块框图data:12位的待发送信息; clk:时钟信号;load:data的装载信号;error1:误码警告信号 ; datafini:数据接收校验完成;send、reception:生成、检错模块的握手信号,协调相互之间关系;decode_data:接收模块(检错模块)接收的12位有效信息数据;coded_data:附加上5位CRC校验码的17位CRC码,在生成模块被发送,在接收模块被接收;4.1.1 编码模块设计与仿真根据前面的论述,用VHDL代码实现逐位运算的程序如下:process(clk) variable crcvar : std_logic_vector(5 downto 0);begin if(clkevent and clk = 1)then if(st=0and load=1)then dtemp=data; sdatam=data;cnt0);send=0; st=1; elsif(st=1 and cnt7)then cnt=cnt+1; if(dtemp(11)=1)then crcvar:=dtemp(11 downto 6)xor multi_coef; dtemp=crcvar(4 downto 0)& dtemp(5 downto 0) & 0; else dtemp=dtemp(10 downto 0) & 0; end if; elsif(st=1 and cnt=7)then coded_data=sdatam & dtemp(11 downto 7); send=1;cnt=cnt+1; elsif(st=1 and cnt=8)then send=0; st=0;end if;end if;end process; end hev; 图4-2 CRC生成模块仿真波形:添加激励信号clk时钟信号周期为10ns,数据装载load为1,输入数据data:110011010101,激励信号添加完成按照软件设计进行仿真输出数据为11001101010101000,同时按照理论公式进行计算验证结果相同,CRC编码模块功能正常。110011010101多项式表示为:110101多项式表示为:多项式五位二进制表示01000编码后的CRC编码:11001101010101000用信息多项式表示为图4-3 CRC生成模块仿真4.1.2 解码模块设计与仿真根据前面的论述,程序校验采用CRC码中包含的数据信息位与生成多项式相除,将得到的结果与CRC码中的校验位作比较,如果相等则判为数据传输无误,反之判为数据传输错误,用VHDL代码实现运算的程序如下:process(clk,reception) variable rcrcvar : std_logic_vector(5 downto 0);begin if(clkevent and clk = 1)then if(rt=0and reception=1)then rdtemp=coded_data(16 DOWNTO 5);rdatacrc=coded_data;rcnt0);error1=0;rt=1; elsif(rt=1and rcnt7)then datafini=0;rcnt=rcnt+1;rcrcvar:=rdtemp(11 downto 6)xor multi_coef; if(rdtemp(11)=1)then rdtemp=rcrcvar(4 downto 0)& rdtemp(5 downto 0)& 0; elserdtemp=rdtemp(10 downto 0) & 0; end if; elsif(rt=1 and rcnt=7)then datafini=1; decode_data=rdatacrc(16 downto 5); rt=0; if(rdatacrc(4 downto 0) /=rdtemp(11 downto 7) then error1=1;end if;end if; end if;end process; end hev;解码功能模块 图4-4 CRC解码模块仿真波形:添加激励信号clk时钟信号周期为10ns,数据装载reception为1,输入数据coded_data: 11001101010101000,激励信号添加完成,按照软件设计进行仿真输出数据decode_data为110011010101,将解码器模块仿真数据与编码器仿真数据做对比,可以看出编码模块的输出数据coded_data输入解码模块后解码出的数据与编码器的输入数据相同,可以证明解码器模块功能能够准确实现。 图4-5 CRC解码仿真4.1.3 循环冗余码编码模块与解码模块联合运行模块联合连接示意图:图4-6 CRC编解码模块连接联合仿真波形图:将CRC编码器与CRC解码器两个程序模块进行组合,编码和解码一次仿真中完成,从仿真波形整数据可以看出数据结果与两个模块单独工作时产生的数据相吻合,经过多组数据的验证,表明CRC编解码模块联合工作正常,数据结果正确可靠。图4-7 CRC编解码联合仿真第5章 CRC的应用CRC校验码实际上是一种线性码,它是由分组线性码的分支而来,将任意CRC校验码循环移位后仍是一个CRC校验码。因其具有良好的结构,捡错能力强,容易实现,得到了广泛的应用。在卫星测控与通信系统中采用CRC校验也是为了提高系统的数据传输质量和差错控制能力。本节主要讲CRC在HDLC和DSP中的应用。5.1在HDLC协议的应用1. HDLC协议HDLC是一个第二层协议,它用于来连接点到点的串行设备,它运行在广域网两个不同的地方。每个路由器将会解封装HDLC的数据包对它们进行转发到LAN或者是丢弃。 HDLC完整的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成 谢希仁. 计算机网络M. 北京: 电子工业出版社, 2008.。2. 生成过程(1)在开始时CRC寄存器的每一位都预置为1,把CRC寄存器与8bits的数据进行异或运算;(2)CRC寄存器内的数据从高到低进行第一次移位,在最高位补零,而最低位(已被移出CRC寄存器)如果为1,则把寄存器与生成多项式码进行异或运算,如果LSB为零,则保持;(3)重复8次步骤2的移位,则第一个8bits数据处理完毕,用此时CRC寄存器的值与下一个8bits数据异或并进行如前一个数据似的8次移位;(4)所有的字符处理完成后CRC寄存器内的值即为最终的CRC值(FCS内的值)。5.2 CRC的DSP实现用DSP实现CRC的设计思想:不同CRC码的生成多项式各不相同,CRC码的比特数也不同,且在有的通信协议中要求将余数寄存器先初始化为全0,另外的则须初始化为全1。因此,在程序设计时必须充分利用CRC码的共性及所用DPS指令具体代码简洁、容易实现、运算速度快等特点 申敏, 邓矣兵, 郑建宏等DSP原理及其在移动通信中的应用M. 北京: 人民邮电出版社, 2001。CRC的编解码用到模2的多项式除法,而多项式除法可以采用带反馈的移位寄存器来实现,因此,用DSP来实现CRC编解码的关键是通过DSP来模拟一个移位寄存器(也就是模拟手写多项式除法)。可以用一个40位累加器A作为移位寄存器,若CRC码不够40位(设为K位),则仅用到A的最高K位,无用位就用0填充。在CRC的编码和解码中均涉及到码的移位和异或操作,这可以通过C54x系列的SFTA(算术移位)和XOR(异或)两条指令来实现。C54x系列还提供了特殊指令bitt和XC。bitt指令利用寄存器T,取出一个16位数据中的第(15)位,并送入TC(TC是特殊寄存器中的一位)。XC指令是条件执行语句,此指令先判断所列条件是否满足,再决定是否执行其后的2条单周期指令或1条双周期指令。其实现步骤如下:(1)先将CRC移位寄存器(即余数寄存器)A的每一位有效位均初始化为全0或全1(与协议有关),而不用位清0;(2)将CRC移位寄存器中的值左移一位,判断移出的第一位与输入序列的最高位异或之后是否为1;(3)若是1,则将A与生成多项式进行异或再跳到步骤(2)处理下一位;否则,直接跳到步骤(2)继续处理下一位。在手写多项式除法的过程中可以发现,生成多项式即除式一共为K+1位,而余数寄存器A里仅有K位有效位,这可以视为余数寄存器的K+1位永远为0,因此,在实际的异或运算时,生成多项式的最高位即是K+1位不必参与运算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论