CRC循环冗余校验码课设(18页).doc
《CRC循环冗余校验码课设(18页).doc》由会员分享,可在线阅读,更多相关《CRC循环冗余校验码课设(18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-CRC循环冗余校验码课设-第 13 页实践教学 兰州理工大学计算机与通信学院2014年秋季学期计算机通信课程设计 题 目:循环冗余校验码(CRC)的编译码仿真实现 专业班级: 通信工程(1)班 姓 名: 学 号: 指导教师: 成 绩: 摘 要CRC即循环冗余校验码(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。本次课程设计研究了纠错码及循环冗余校验码的原
2、理, 以及利用MATLAB对其进行了编码和译码仿真,实现了CRC循环冗余校验码的编码及校验,在接收端收到通过校验的码,从而确定传输过程是否出错,得到的结论和理论上是一致的。关键词:循环冗余校验码;检错码; matlab软件目录前言1第1章 循环冗余校验码(CRC)的基本原理21.1 循环冗余校验码的基本介绍21.2 循环冗余校验码的几个基本概念21.3 循环冗余校验码的基本原理3第2章 MATLAB软件基本介绍52.1 MATLAB的介绍52.2 MATLAB的组成部分52.3 MATLAB的语言特点52.4 MATLAB的优势6第3章 循环冗余校验码(CRC)的详细设计73.1 CRC循环冗
3、余校验码的编码模块73.2 CRC循环冗余校验码的译码模块73.3 CRC循环冗余校验码的性能分析83.4 CRC循环冗余校验码的生成器和校验器83.5 CRC循环冗余校验码的程序流程图93.6 运行结果及其分析10总结12参考文献13附录14致谢16前言 数据通信中的编码可以分为两大类,分别是信源编码和信道编码。在实际应用中,为了提高数据通信的可靠性而采取的编码称为信道编码,也称做抗干扰编码。一般来讲,数据通信要求传输过程中的误码率应该足够低,这样才能真正符合实际应用的具体要求,为了降低数据通信线路传输的误码率,通常有改善数据通信线路传输质量和差错检测控制两种方法。 实现差错检测控制的方法很
4、多,CRC校验码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来“确认信息”的困惑,所以对通信的可靠性检查就需要“校验”,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。CRC校验码码的作用是:发送方发送的数据发送给
5、了接收方,但是由于在传输过程中信号干扰,可能出现错误的码,造成的结果就是接收方不清楚收到的数据是否就是发送方要发的数据,所以就有了CRC校验码。保证了发送跟接受的数据是否一样,要纠错的话,还需对软件进行设计,毕竟传输的是2进制,如果知道了哪一位出错了,可以把那一位取反,需要对软件进行优化。CRC也是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。它是利用除法及余数的原理来作错误侦测的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。 本次课程设
6、计主要设计(16,12)校验码的编码与解码,本次课程设计是介绍如何通过matlab软件,采用原理图输入法,分别完成相应的编码和解码;最后,检查编码解码过程是否发生错误,通过课程设计验证CRC校验码的编码译码过程。第1章 循环冗余校验码(CRC)的基本原理1.1 循环冗余校验码的基本介绍 CRC码是由两部分组成的,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。CRC 校验的基本思想是利用线性编码理论,在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的监督码(CRC 码)r 位,并附在信息后边,构成一个新的
7、二进制码序列数共 (k+r) 位,最后发送出去。在接收端,则根据信息码和CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。 16 位的CRC 码产生的规则是先将要发送的二进制序列数左移16 位后,再除以一个多项式,最后所得到的余数既是CRC 码。求CRC 码所采用模2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和CRC 码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误。1.2 循环冗余校验码的几个基本概念
8、1.2.1 多项式与二进制数码 多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。多项式包括生成多项式G(x)和信息多项式f(x)。如生成多项式为,可转换为二进制数码11011。而发送信息位 1111,可转换为数据多项式为。1.2.2 生成多项式 生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错
9、误位置。应满足以下条件: a、生成多项式的最高位和最低位必须为1; b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0; c、不同位发生错误时,应该使余数不同; d、对余数继续做模2除,应使余数循环。1.2.3 模2除(按位除) 第一步,要在数据位(被除数)后边补 0 ,0 的个数比除数(生成多项式)少一位;第二步,做除法,从被除数的头五位减去五位的除数。除数的每一位都与被除数的对应位在不涉及上一位的情况下独立进行减法(实际进行的是模 2 加)。在本此课程设计中,除数11101 与被除数的前五位10111进行的是模 2 加,得到1010 (余数 1 前面的
10、0 被省略)。在被除数中下一个没有使用过的比特接着被抄录下来,使得余数的位数和除数的位数相同。如果位数不够,在商位补0(这与一般除法相同),因此,下一步就是 11110 11001 ,结果是 111 ,依次类推。在二进制除法中,除数总是以 1 开头的,然后从上一次的被除数 / 余数中与除数位数相同的部分中减去除数,并且只能从最左位是 1 的被除数 / 余数中减去除数。每当被除数 / 余数的最左位是 0 时,就在该步骤中把 0 丢弃,再把被除数中的下一个未使用比特抄录下来填充余数,同时对应的商数位补一个零,并按上述方法进行二进制除法运算,一直重复这个过程直到被除数中所有比特都被使用过。1.3 循
11、环冗余校验码的基本原理CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是: 1移位将原信息码序列(kbit)左移r位(k+r=n) 2相除运用一个生成多项式G(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。 非常简单,要说明的是:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是: 0+0=1+1=0,1+0=0+1=1 即异则真,非异则假。由此得到定理:a+b+b=a 也就是模2减和模2加真值表完全相同。 有了加减法就可
12、以用来定义模2除法,于是就可以用生成多项式G(x)生成CRC校验码。1.3.2 CRC码生成和校验第一步:在数据单元(k位)的末尾加上r个0。r是一个比预定除数的比特位数(r十1)少1的数。第二步:采用二进制除法将新的加长的数据单元(k+r位)除以除数。由此除法产生的余数就是循环冗余码校验码第三步:用从第二步得到的r个比特的CRC码替换数据单元末尾附加的r个0。如果余数位数小于r,最左的缺省位数为0。如果除法过程根本未产生余数(也就是说,原始的数据单元本身就可以被除数整除)那么以r个0作为CRC码替换余数所在的位置。产生的比特模式正好能被除数整除。2.CRC码校验到达接收方的数据单元首先到达的
13、是数据,然后是CRC校验码。接收方将整个数据串当作一个整体去除以用来产生循环冗余校验余数的同一个除数。如果数据串无差错地到达接收方,循环冗余校验器将产生余数0。因此数据单元将通过检验。如果在传输中数据单元被改变,除法将产生非零余数,因此数据单元将通不过检验。3应用举例发送端:例如:已知:信息码:1 1 0 1 0 0 1 1 0 1信息多项式:,生成码:1 1 0 0 1 0生成多项式:。解: 1)* 的积是对应的码字是1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02) 积G(X)(按模二算法) 由计算结果知冗余码是1 1 0 0 1 1
14、 0 0 0 0 1 1 1 0 1 0,CRC码(码字)就是1 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0接收端:例如:已知:接受码字:1 0 1 0 0 1 1多项式:生成码:1011 生成多项式:(r=3) 求:码字的正确性。若正确,则指出冗余码和信息码。解:1) 用CRC 码(码字)除以生成码,余数为0 ,所以CRC 码(码字)正确。2) 因r=3,所以冗余码是:011,信息码是:1010。 第2章 MATLAB软件基本介绍2.1 MATLAB的介绍在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一
15、类是数值计算型软件,如 MATLAB、Xmath、Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,如Mathematica、Maple等,这类软件以符号计算见长,能给出解析解和任意精度解,其缺点是处理大量数据时效率较低。MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算、文字处理、可视化建模和实时控制能力,开发了适合多学科、多部门要求的新一代科技应用软件MATLAB。经过多年的国际竞争,MATLAB 已经占据了数值型软件市场的主导地位。在MATLAB进入市场前,国际上的许多应用软件包都是直接以FO
16、RTRAN和C语言等编程语言开发的。这种软件的缺点是使用面窄、接口简陋、程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的20世纪80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。2.2 MATLAB的组成部分(1)开发环境(development Environment):一组图形化用户接口工具和组件的集成:MATLAB桌面、命令窗口、命令历史窗口、编辑调试窗口及帮助信息、工作空间、文件和搜索路径等浏览器;(2)MATLAB数学函数库:(Math Functio
17、n Library)基本函数:求和、正弦、余弦和复数运算等;特殊函数:矩阵求逆、矩阵特征值、贝塞尔函数和快速付里叶变换等;(3)MATLAB 语言:(MATLAB Language)一种高级编程语言,包括控制流的描述、函数、数据结构、输入输出及面对对象编程;(4)句柄图形:(Handle Graphics) 可以对各种图形对象进行更为细腻的修饰和控制,建立完整的图形界面的应用程序;(5)应用程序接口:(Applied Function Interface) MATLAB的应用程序接口允许用户使用C或FORTRAN语言编写程序与MATLAB连接。2.3 MATLAB的语言特点语言简洁紧凑,使用方
18、便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说, MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短,具体运算符见附表。MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向
19、对象编程的特性。语法限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。功能强劲的工具箱是MATLAB的另一重大特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CRC 循环 冗余 校验码 18
限制150内