CRC循环冗余校验码课设145605

上传人:仙*** 文档编号:109383539 上传时间:2022-06-16 格式:DOC 页数:20 大小:1.45MB
收藏 版权申诉 举报 下载
CRC循环冗余校验码课设145605_第1页
第1页 / 共20页
CRC循环冗余校验码课设145605_第2页
第2页 / 共20页
CRC循环冗余校验码课设145605_第3页
第3页 / 共20页
资源描述:

《CRC循环冗余校验码课设145605》由会员分享,可在线阅读,更多相关《CRC循环冗余校验码课设145605(20页珍藏版)》请在装配图网上搜索。

1、*实践教学*兰州理工大学计算机与通信学院2014 年秋季学期计算机通信课程设计题 目:循环冗余校验码( CRC)的编译码仿真实现专业班级: 通信工程( 1)班姓 名:学 号:指导教师:成 绩:摘 要CRC即循环冗余校验码( Cyclic Redundancy Check )是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查( CRC)是一种数据传输检错功能, 对数据进行多项式计算, 并将得到的结果附在帧的后面, 接收设备也执行类似的算法,以保证数据传输的正确性和完整性。本次课程设计研究了纠错码及循环冗余校验码的原理, 以及利用 MATLAB对其进

2、行了编码和译码仿真, 实现了 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 章 循环冗

3、余校验码( CRC)的详细设计 . 73.1 CRC 循环冗余校验码的编码模块 . 73.2 CRC 循环冗余校验码的译码模块 . 73.3 CRC 循环冗余校验码的性能分析 . 83.4 CRC 循环冗余校验码的生成器和校验器 . 83.5 CRC 循环冗余校验码的程序流程图 . 83.6 运行结果及其分析 . 10总结. 12参考文献 . 13附录. 13致谢. 161前言数据通信中的编码可以分为两大类,分别是信源编码和信道编码。在实际应用中,为了提高数据通信的可靠性而采取的编码称为信道编码, 也称做抗干扰编码。 一般来讲, 数据通信要求传输过程中的误码率应该足够低, 这样才能真正符合实际

4、应用的具体要求, 为了降低数据通信线路传输的误码率,通常有改善数据通信线路传输质量和差错检测控制两种方法。实现差错检测控制的方法很多, CRC校验码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠 (不可靠性的来源是通信技术决定的, 比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来 “确认信息” 的困惑, 所以对通信的可靠性检查就需要 “校验”,校验是从数据本身进行检查, 它依靠某种数学上约定的形式进行检查, 校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重

5、发或者进行修复。循环冗余码校验英文名称为 Cyclical Redundancy Check ,简称 CRC。CRC校验码码的作用是:发送方发送的数据发送给了接收方, 但是由于在传输过程中信号干扰, 可能出现错误的码, 造成的结果就是接收方不清楚收到的数据是否就是发送方要发的数据, 所以就有了 CRC校验码。保证了发送跟接受的数据是否一样,要纠错的话, 还需对软件进行设计, 毕竟传输的是 2 进制,如果知道了哪一位出错了,可以把那一位取反,需要对软件进行优化。 CRC也是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。它是利用除法及余数的原理来作错误侦测的。

6、实际应用时, 发送装置计算出 CRC值并随数据一同发送给接收装置, 接收装置对收到的数据重新计算 CRC并与收到的 CRC相比较,若两个 CRC值不同,则说明数据通讯出现错误。本次课程设计主要设计 (16,12)校验码的编码与解码, 本次课程设计是介绍如何通过 matlab软件,采用原理图输入法, 分别完成相应的编码和解码; 最后,检查编码解码过程是否发生错误,通过课程设计验证 CRC校验码的编码译码过程。1第 1 章 循环冗余校验码( CRC)的基本原理1.1 循环冗余校验码的基本介绍CRC 码是由两部分组成的,前部分是信息码,就是需要校验的信息,后部分是校验码,如果 CRC码共长 n 个

7、bit ,信息码长 k 个 bit ,就称为 (n,k) 码。CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的 k 位二进制码序列,以一定的规则产生一个校验用的监督码( CRC码)r 位,并附在信息后边,构成一个新的二进制码序列数共 (k+r) 位,最后发送出去。在接收端,则根据信息码和 CRC码之间所遵循的规则进行检验,以确定传送中是否出错。16 位的 CRC码产生的规则是先将要发送的二进制序列数左移 16 位后,再除以一个多项式,最后所得到的余数既是 CRC码。求 CRC码所采用模 2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算, 加法和

8、减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和 CRC码)除以多项式,如果余数为 0,则说明传输中无错误发生,否则说明传输有误。1.2 循环冗余校验码的几个基本概念1.2.1 多项式与二进制数码多项式和二进制数有直接对应关系: x 的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应 1,无此幂次项对应 0。可以看出:x 的最高幂次为 R,转换成对应的二进制数有 R+1 位。多项式包括生成多项式 G(x) 和信息多项式 f(x) 。如生成多项式为4 x3 xG(x) x 1,可转换为二进制数码 11011

9、。而发送信息位 1111,可转换为数据多项式为3 x2 xf ( x) x 1。1.2.2 生成多项式生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。在发送方 , 利用生成多项式对信息多项式做模 2 除生成校验码。在接受方利用生成多项式对收到的编码多项式做模 2 除检测和确定错误位置。应满足以下条件:a 、生成多项式的最高位和最低位必须为 1;b 、当被传送信息( CRC码)任何一位发生错误时,被生成多项式做模 2 除后应该使余数不为0;c 、不同位发生错误时,应该使余数不同;2d 、对余数继续做模 2 除,应使余数循环。1.2.3 模 2 除(

10、按位除)第一步,要在数据位(被除数)后边补 0 ,0 的个数比除数(生成多项式)少一位;第二步,做除法,从被除数的头五位减去五位的除数。除数的每一位都与被除数的对应位在不涉及上一位的情况下独立进行减法(实际进行的是模 2 加)。在本此课程设计中,除数 11101与被除数的前五位 10111进行的是模 2 加,得到 1010 (余数 1 前面的 0 被省略)。在被除数中下一个没有使用过的比特接着被抄录下来,使得余数的位数和除数的位数相同。如果位数不够,在商位补0(这与一般除法相同) ,因此,下一步就是 11110 11001 ,结果是 111 ,依次类推。在二进制除法中,除数总是以 1 开头的,

11、然后从上一次的被除数 / 余数中与除数位数相同的部分中减去除数,并且只能从最左位是 1 的被除数 / 余数中减去除数。每当被除数 / 余数的最左位是 0 时,就在该步骤中把 0 丢弃,再把被除数中的下一个未使用比特抄录下来填充余数,同时对应的商数位补一个零, 并按上述方法进行二进制除法运算, 一直重复这个过程直到被除数中所有比特都被使用过。1.3 循环冗余校验码的基本原理1.3.1 循环冗余校验码的编码规则CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果 CRC码共长 n 个 bit ,信息码长 k 个 bit ,就称为 (n,k) 码。 它的编码规则是:1移位

12、将原信息码序列 (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 加真值表完全相同。有了加减法就可以用来定义模 2 除法,于是就可以用生成多项式 G(x) 生成 CRC校验码。1.3.2 CRC 码生成和校验31.CRC码生成第一步:在数据单元 (k 位)的末

13、尾加上 r 个 0。r 是一个比预定除数的比特位数 (r 十 1)少 1的数。第二步:采用二进制除法将新的加长的数据单元( k+r 位) 除以除数。由此除法产生的余数就是循环冗余码校验码第三步:用从第二步得到的 r 个比特的 CRC码替换数据单元末尾附加的 r 个0。如果余数位数小于 r ,最左的缺省位数为 0。如果除法过程根本未产生余数(也就是说,原始的数据单元本身就可以被除数整除) 那么以 r 个 0 作为 CRC码替换余数所在的位置。 产生的比特模式正好能被除数整除。2.CRC码校验到达接收方的数据单元首先到达的是数据, 然后是 CRC校验码。接收方将整个数据串当作一个整体去除以用来产生

14、循环冗余校验余数的同一个除数。 如果数据串无差错地到达接收方, 循环冗余校验器将产生余数 0。因此数据单元将通过检验。如果在传输中数据单元被改变,除法将产生非零余数,因此数据单元将通不过检验。3应用举例发送端: 9 x8 x6 x3 x2例如:已知:信息码: 1 1 0 1 0 0 1 1 0 1 信息多项式: ( ) 1 f x x , 5 x4 x生成码:1 1 0 0 1 0 生成多项式: ( ) 1 G x x 。9 x8 x6 x3 x2解: 1 )(x 1)*3x 的积是27 x x x x x24 18 9 6 3x 对应的码字是 1 1 0 1 0 01 1 0 1 0 0 0

15、 0 0 0 0 0 0 0 0 0 0 0 0 02) 积G(X)( 按模二算法 ) 由计算结果知冗余码是 1 1 0 0 1 1 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接收端:6 x x4例如:已知:接受码字: 1 0 1 0 0 1 1 多项式: T( ) 1生成码:1011 生成多x x3 x项式: G( ) 1(r=3) 求:码字的正确性。若正确,则指出冗余码和信息码。x x解:1) 用CRC码(码字)除以生成码,余数为 0 ,所以 CRC码(码字)正确。2

16、) 因 r=3,所以冗余码是: 011,信息码是 :1010 。4第2章 MATLAB软件基本介绍2.1 MATLAB的介绍在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一类是数值计算型软件,如 MATLAB、Xmath、Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,如 Mathematica、Maple等,这类软件以符号计算见长,能给出解析解和任意精度解,其缺点是处理大量数据时效率较低。 MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算、文字处理、可视化建模

17、和实时控制能力,开发了适合多学科、多部门要求的新一代科技应用软件MATLA。B 经过多年的国际竞争, MATLAB已经占据了数值型软件市场的主导地位。在 MATLAB进入市场前,国际上的许多应用软件包都是直接以 FORTRA和N C 语言等编程语言开发的。这种软件的缺点是使用面窄、接口简陋、程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。 MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在 MATLAB问世不久的 20 世纪 80 年代中期,原先控制领域里的一些软件包纷纷被淘汰或在 MATLAB上重建。2.2 MATLAB的组成部分(1)开发环境 (dev

18、elopment Environment) :一组图形化用户接口工具和组件的集成: MATLAB桌面、命令窗口、命令历史窗口、编辑调试窗口及帮助信息、工作空间、文件和搜索路径等浏览器;(2)MATLAB数学函数库: (Math Function Library) 基本函数:求和、正弦、余弦和复数运算等;特殊函数:矩阵求逆、矩阵特征值、贝塞尔函数和快速付里叶变换等 ;(3)MATLAB语言:(MATLAB Language)一种高级编程语言,包括控制流的描述、函数、数据结构、输入输出及面对对象编程;(4)句柄图形: (Handle Graphics) 可以对各种图形对象进行更为细腻的修饰和控制,

19、建立完整的图形界面的应用程序 ;(5)应用程序接口: (Applied Function Interface) MATLAB 的应用程序接口允许用户使用 C或 FORTRA语N 言编写程序与 MATLAB连接。2.3 MATLAB的语言特点语言简洁紧凑,使用方便灵活,库函数极其丰富。 MATLA程B 序书写形式自由,利用其丰富5的库函数避开繁杂的子程序编程任务, 压缩了一切不必要的编程工作。 由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说, MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLA会B 根据矩阵的特性选择方程的求解方法, 所以用户根本不用怀疑 MATL

20、A的B 准确性。运算符丰富。由于 MATLA是B 用C语言编写的, MATLA提B 供了和 C语言几乎一样多的运算符,灵活使用MATLA的B 运算符将使程序变得极为简短,具体运算符见附表。MATLA既B 具有结构化的控制语句(如 for 循环、while 循环、break语句和if 语句),又有面向对象编程的特性。语法限制不严格,程序设计自由度大。例如,在 MATLA里B ,用户无需对矩阵预定义就可使用。程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。MATLA的B图形功能强大。在 FORTRA和NC语言里,绘图都很不容易,但在 MATLA里B ,数据的可视化非常简

21、单。 MATLA还B 具有较强的编辑图形界面的能力。MATLA的B缺点是,它和其他高级程序相比,程序的执行速度较慢。由于 MATLA的B 程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。功能强劲的工具箱是 MATLA的B 另一重大特色。 MATLA包B 含两个部分:核心部分和各种可选的工具箱。 核心部分中有数百个核心内部函数。 其工具箱又可分为两类: 功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、 图示建模仿真功能、 文字处理功能以及与硬件实时交互功能。功能性工具箱能用于多种学科。而学科性工具箱是专业性比较强的,如control 、toolbox

22、、signal processing toolbox 、communication toolbox 等。这些工具箱都是由该领域内的学术水平很高的专家编写的, 所以用户无需编写自己学科范围内的基础程序, 而直接进行高、精、尖的研究。2.4 MATLAB的优势(1)友好的工作平台和编程环境(2)简单易用的程序语言(3)强大的科学计算机数据处理能力(4)出色的图形处理功能(5)应用广泛的模块集合工具箱(6)实用的程序接口和发布平台(7)应用软件开发(包括用户界面)6第3章 循环冗余校验码( CRC)的详细设计3.1 CRC 循环冗余校验码的编码模块循环冗余校验码 CRC它是利用除法及余数的原理来作错

23、误侦测 (Error Detecting )的。实际应用时,发送装置计算出 CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算 CRC并与收到的 CRC相比较,若两个 CRC值不同,则说明数据通讯出现错误。根据应用环境与习惯的不同, CRC又可分为以下几种标准:CRC-12码;CRC-16码;CRC-CCITT码;CRC-132码。CRC-12码通常用来传送 6-bit 字符串。CRC-16 及 CRC-CCITT 码则用是来传送 8-bit 字符,其中 CRC-16 为美国采用,而CRC-CCITT为欧洲国家所采用。 CRC-132码大都被采用在一种称为 Point-to-Po

24、int 的同步传输中本设计中 CRC校验码的 n=16,k=12,则 K 位要发送的信息位可对应于一个 (k-1) 次多项式f(X),r 位冗余位则对应于一个 (r-1) 次多项式 R(X),由r 位冗余位组成的 n=k+r 位码字则对应于一个(n-1) 次多项式 T(X)=G(x)*f(X)+R(X) 。其编码过程为:(1)移位将原信息码( kbit )左移 r 位(k+r=n)(2)相除运用一个生成多项式 G(x) (也可看成二进制数)用模 2 除上面的式子,得到的余数就是校验码。3.2 CRC 循环冗余校验码的译码模块译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于

25、纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。用于纠错目的的循环码的译码算法比较复杂,而用于检错目的循环码,一般使用 ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被称为循7环冗余校验码,即 CRC校验码。 CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过 MODEM传输文件的协议如 ZMODE、MXMODEM协议中均用到了 CRC校验技术。在磁盘、光盘介质存储技术中也使用该方法。在译码过程中到

26、达接收方的数据单元首先到达的是数据,然后是 CRC校验码。接收方将整个数据串当作一个整体去除以用来产生循环冗余校验余数的同一个除数。 如果数据串无差错地到达接收方,循环冗余校验器将产生余数 0。因此数据单元将通过检验。如果在传输中数据单元被改变,除法将产生非零余数,因此数据单元将通不过检验。3.3 CRC 循环冗余校验码的性能分析一般情况下, r 位生成多项式产生的 CRC码可检测出所有的单个错误和随机两位错误、奇数个错和长度小于等于 k 位的突发错误。例如,对于 r=16 的情况,就能检测出所有突发长度小于等于 16 的突发错以及 99997%的突发长度为 17 的突发错和 99998%的突

27、发长度大于 17 的突发错。所以 CRC码的检错能力还是很强的。这里,突发错误是指几乎是连续发生的一串错,突发长度就是指从出错的第一位到出错的最后一位的长度 ( 但是,中间并不一定每一位都错 ) 。3.4 CRC 循环冗余校验码的生成器和校验器CRC循环冗余校验码的生成器和校验器如图 1所示:数据 00.0数据r bitG(X) 数据 数据r+1 bitG(X)余数r bit余数CRC 校验码0 接收,非 0 拒绝发送方 接收方图1 CRC循环冗余校验码的生成器和校验器3.5 CRC 循环冗余校验码的程序流程图8CRC循环冗余校验码的程序流程图如图 2所示:开始初始化,随机产生信息码并输出添加

28、冗余比特位循环计算长除N是否除完Y合成编码序列输出用合成码长除生成多项式N是否除完YN 余数是否为零Y输出 erro=1输出接收端的码结束图2 CRC循环冗余校验码的程序流程图93.6 运行结果及其分析3.6.1 MATLAB的运行结果正确译码时 MATLAB的运行结果如图 3所示:图 3 MATLAB的运行结果译码发生错误时 MATLAB 的运行结果如图 4 所示:图 4 MATLAB的运行结果103.6.2 结果分析CRC校验的基本思想是利用线性编码理论,在发送端根据要传送一个 n 比特的帧或报文,发送器生成一个 r 比特的序列,称为帧检验序列( FCS)。这样形成的帧将由( n+r)比特

29、组成。这个帧刚好能被某个预先规定的数整除。 接收器用相同的数去除外来的帧, 结果无余数, 则认为无差错。循环冗余校验与奇偶校验不同,后者是一个字符校验一次,而前者是一个数据块校验一次。在同步通信中,几乎都使用这种校验方法。二进制多项式的加减运算为模 2加减运算,即两个码多项式相加时,对应系数进行模 2加减。所谓模2加减就是各位做不带进位、 借位的按位加减。 这种加减运算实际上是逻辑上的异或运算,即加法和减法等价。信息多项式和余数多项式可以合并成一个新的多项式(称为循环码的码多项式) ,则该多项式是生成多项式的整数倍, 即能被生成多项式整除。 根据这一原理, 在发送端用信息码多项式除以生成多项式

30、所得的余数多项式就是所要加的监督位。 将循环码的码多项式除以生成多项式, 若能除尽,说明传输正确, 否则说明出错。CRC校验的关键是如何求出余数, 此余数即为校验码 (CRC校验码)。以前用数字电路来实现,而现在可以用计算机来完成。为了传输的正确性,在接收端要有一个 CRC检验器。它的功能和发生器一样,当收到 CRC冗余校验码后,做同样的模 2除法(注意,这里采用的生成多项式一定要与发送端相同) 。如果余数是0,则说明传输正确;否则,传输错误,应重传。本次课设通过对( 16,12)循环码的编译码的设计与仿真得出仿真过程得到的结论与理论是一致的。11总结CRC是现代通信领域的重要技术之一。掌握

31、CRC的算法与实现方法,在通信系统的设计、通信协议的分析以及软件保护等诸多方面,能发挥很大的作用。在此次课设中,我学习了 matlab 仿真软件的运用,我们通过动手实践操作,进一步学习和掌握了有关 CRC原理的知识, 加深了对纠错技术的认识。 在设计时我们根据课题要求, 复习了相关知识,还查阅了相当多的资料,这也在一定程度上拓宽了我们的视野,丰富了我们的知识。做设计的过程中, 我有许多不懂得地方, 在老师的指导下我一步步的解决问题完成论文, 在完成过程中老师指导我去怎么选择资料, 如何去利用网络资源, 在这个学习的过程中, 我了解到MATLAB的实用价值,更深的理解循环冗余校验码的原理。这次课

32、程设计,使我坚定了我在以后的学习中要认真学好基础知识,不能只做表面工作。读书不仅是要读书还要读活书, 把学到的知识灵活地运用到实践中去, 达到学有所用的地步。 通过这段时间的亲身经历,我感觉自己学到了:收集、整理资料、共同协作、分析及处理问题等许多方面的知识。 这次课程设计还让我们知道了, 我们平时所学的知识如果不加以实践的话等于纸上谈兵。课程设计主要是我们理论知识的延伸, 它的目的主要是要在设计中发现问题, 锻炼我们的创新能力, 并且自己要能找到解决问题的方案,形成一种独立的意识。我们还能从设计中检验我们所学的理论知识到底有多少, 巩固我们已经学会的, 不断学习我们所遗漏的新知识, 把这门课

33、学的扎实。当然在做课程设计的过程中总会出现各种问题,在这种情况下我们都会努力寻求最佳路径解决问题,无形间提高了我们的动手,动脑能力,并且同学之间还能相互探讨问题,研究解决方案,增进大家的团队意识。总的来说,这次创新课程设计让我们收获颇多,不仅让我们更深一步理解书本的知识,提高我们分析问题和解决问题的能力,而且让我们体会到团队的重要性。12参考文献【1】孙丽华著 . 信息论与纠错编码 M. 电子工业出版社, 2005【2】潘新民著 . 计算机通信技术 M. 电子工业出版社, 2003【3】张应中,张德明等编著 . 数据通信工程 . 人民邮电出版社, 1996【4】杜煜,姚鸿等编 . 计算机网络基

34、础 . 电子工业出版社, 2002【5】王福昌,熊兆飞,黄本雄等编著 . 通信原理 . 清华大学出版社, 2006【6】王兴亮著 . 数字通信原理与技术(第二版) . 西安电子科技大学出版社, 2000【7】 沈越泓,高媛媛,魏以民等编著 . 通信原理 . 机械工业出版社, 2004【8】黎洪松,张卫刚等编著 . 数字通信原理 . 西安电子科技大学出版社, 2005【9】Peter M.Grant.Digital Communications(Second Edition).China Machine Press【10】H.S.Black.Modulation Theory.1993,Chap

35、.413附录clear;clc;closeall;uncode_sequence=randint(1,12)sequence_length = length(uncode_sequence); % 得到原始信号长度crc_ccitt = 1 1 1 0 1; % 常用的CRC生成多项式add_bit = zeros(1,4); % 添加冗余比特位crc_coded_sequence = uncode_sequence zeros(1,4); % 初始化输出检错码序列uncode_sequence = uncode_sequence add_bit;remainder_bits = uncode

36、_sequence; % 初始化余数数组for k = 1:sequence_length % 开始循环计算长除得到最终余数add_zeros = zeros(1,sequence_length-k); % 加入冗余位参与模 2运算register_bits = crc_ccitt add_zeros; % 构造除数数组if remainder_bits(1) = 0 % 被除数第一位为 0则将除数所有位置 0register_bits = zeros(1,length(register_bits);endremainder_bits = bitxor(register_bits,remain

37、der_bits);% 将除数与被除数进行异或操作register_bits = crc_ccitt; % 将寄存器恢复为除数数组remainder_bits(1) = ; % 去除模2后得到的被除数的第 1位endadd_len = length(crc_coded_sequence) - length(remainder_bits);% 生成余数序列的冗余位以叠加到编码序列remainder_bits = zeros(1,add_len),remainder_bits; % 余数序列添加冗余crc_coded_sequence = crc_coded_sequence + remainde

38、r_bits % 合成编码序列sequence_length = length(crc_coded_sequence); % 得到冗余编码的长度original_sequence = crc_coded_sequence; % 初始化输出序列crc_ccitt = 1 1 1 0 1; % 常用的CRC生成多项式remainder_bits = crc_coded_sequence; % 初始化余数数组cycle_length = sequence_length-length(crc_ccitt)+1;% 计算长除法的循环周期14for k = 1:cycle_length % 开始循环计算长

39、除得到最终余数add_zeros = zeros(1,cycle_length-k);% 加入冗余位参与模 2运算register_bits = crc_ccitt add_zeros; % 构造除数数组if remainder_bits(1) = 0% 被除数第一位为 0则将除数所有位置 0register_bits = zeros(1,length(register_bits);endremainder_bits = bitxor(register_bits,remainder_bits);% 将除数与被除数进行异或操作register_bits = crc_ccitt; % 将寄存器恢复

40、为除数数组remainder_bits(1) = ; % 去除模2后得到的被除数的第 1位endif sum(remainder_bits) = 0 % 传输码元中没有发生奇数个错误original_sequence = crc_coded_sequence(1:cycle_length)elseerr = 1 % 码元传输发生错误end15致谢我们通信工程专业是个实践性很强的专业, 而我们在校大部分的学习时间都是花在理论学习上面,实践的机会很少。 因而我对很多所学的理论知识如何跟实践联系的概念很模糊, 这次的课程设计给了我这个机会, 加深了我对理论联系实际的理解, 增强了自己独立分析问题和解

41、决问题的能力,开阔了自己的思维。还有让我看到了自己的不足, 自己对本专业的相关知识掌握的还很少, 还有很多知识都没掌握,还让我认识到解决问题的方法、途径很多,做事要开阔自己的思维,看待问题要从多个角度看。通过本次信号处理课程设计,我了解到了做任何事都要有耐心、更要细心做事。这次的课程设计让我也意识到自己的理论知识还是不够好, 在今后的学习中我们需要更努力的学习课本的专业知识。课程设计不仅是对前面所学知识的一种检验, 而且也是对自己能力的一种提高。 我学到了许多东西, 体会到了从书本学习与实际应用中的不同, 这种感同身受必将对我们今后的学习与生活带来很大的帮助。在此我要感谢学校为我们提供这次课程设计的机会, 感谢老师对我的悉心指导, 也感谢同学对我的帮助。 这次的课程设计让我理论联系实际, 不仅巩固了我们的理论知识, 还提高了我的动手能力,在这次课程设计中我所学到的知识是我的财富,让我终身受益。16

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!