计算机通信课程设计.docx
- 文档编号:10889063
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:16
- 大小:107.25KB
计算机通信课程设计.docx
《计算机通信课程设计.docx》由会员分享,可在线阅读,更多相关《计算机通信课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
计算机通信课程设计
*******************
实践教学
*******************
计算机与通信学院
2010年春季学期
计算机通信课程设计
题目:
计算机通信中循环冗余校验码的设计
专业班级:
通信工程
(2)班
姓名:
学号:
指导教师:
成绩:
摘要
通信的目的是要把信息及时可靠地传送给对方,因此要求一个通信系统传输消息必须可靠与快速,在数字通信系统中可靠与快速往往是一对矛盾。
为了解决可靠性,通信系统都采用了差错控制。
循环冗余校验码是常用的校验码,用于通信系统中数据可靠性的检查,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。
本设计采用编程的方法,用MATLAB程序语言实现循环冗余校验码的生成器与校验器,用计算机完成对数据的校验与检测,操作简单,设计效率高,处理速度快,计算精度高。
关键词:
计算机通信;循环冗余校验码(CRC);MATLAB仿真
目录
第1章概述1
第2章循环冗余校验码CRC3
2.1循环冗余校验码CRC原理3
2.2CRC码的生成与校验3
2.3举例说明4
第3章详细设计及仿真5
3.1目的及意义5
3.2设计任务及要求5
3.3软件流程图6
3.4MATLAB程序实现6
3.5MATLAB运行结果8
第4章开发平台简介9
总结11
参考文献12
第1章概述
1.1计算机通信
计算机和通信,是当今社会最活跃的两个领域,计算机的发展促进了通信事业的发展,同样,通信的发展也扩大了计算机的应用范围,并向计算机提出了更高的要求.因此,计算机和通信时密不可分的。
二者互为促进,共同发展,从而推动了人类社会的发展和进步。
今后计算机通信的发展方向是:
1、由过去的单位通信向个人通信发展.
随着计算机通信的发展,20世纪八十年代末的个人通信,如BP机,移动通信的出现和逐渐普及,使个人通信逐渐实现5W,即任何人在任何时间,任何地点都可以同任何人,以任何方式通信。
目前,离此目标还有一定的距离,但已经看到了曙光。
2.计算机通信网由专业网向公用网发展,又由公用网向互联网进步,如今已经形成了跨行业,跨地区的计算机互联网络。
3.从交换信息的形式上,由原来的电路交换发展到报文交换。
为进一步提高通信速率,又逐渐形成了分组交换和信元交换。
4.由单一的通信网,如广播网,电视网,电话网等,逐渐向综合业务数据通信网发展。
5.从网络的体系结构讲,由微机与主机的通信,发展到对等通信,再到客户与服务器之间的通信。
自动网络出现以后,通信方法又有了变化---从站点到浏览器,是通信逐渐从简单到复杂,从单一向多用户,大信息年发展。
1.2纠错码
纠错码(errorcorrectingcode),在传输过程中发生错误后能在收端自行发现或纠正的码。
仅用来发现错误的码一般常称为检错码。
为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。
关系的建立称为编码。
码字到达收端后,可以根据编码规则是否满足以判定有无错误。
当不能满足时,按一定规则确定错误所在位置并予以纠正。
纠错并恢复原码字的过程称为译码。
检错码与其他手段结合使用,可以纠错。
纠错编码又称信道编码,它与信源编码是信息传输的两个方面。
它们之间存在对偶的关系。
应用信道译码直接对一些自然信息进行处理,可以去掉剩余度,以达到压缩数据的目的。
为了使一种码具有检错或纠错能力,必须对原码字增加多余的码元,以扩大码字之间的差别,使一个码字在一定数目内的码元上发生错误时,不致错成另一个码字。
准确地说,即把原码字按某种规则变成有一定剩余度的码字,并使每个码字的码元间有一定的关系。
关系的建立称为编码。
码字到达收端后,用编码时所用的规则去检验。
如果没有错误,则原规则一定满足,否则就不满足。
由此可以根据编码规则是否满足以判定有无错误。
当不能满足时,在可纠能力之内按一定的规则确定错误所在的位置,并予以纠正。
纠错并恢复原码字的过程称为译码;码元间的关系为线性时,称为线性码;否则称为非线性码。
检错码与其他手段结合使用,可以纠错。
检错反馈重发系统(ARQ系统)就是一例。
在构造纠错码时,将输入信息分成k位一组以进行编码。
若编出的校验位仅与本组的信息位有关,则称这样的码为分组码。
若不仅与本组的k个信息位有关,而且与前若干组的信息位有关,则称为格码。
这种码之所以称为格码,是因为用图形分析时它象篱笆或格架。
线性格码在运算时为卷积运算,所以叫卷积码。
1.3循环冗余校验码CRC
为了保证传输过程的正确性,需要对通信过程进行差错控制。
在计算机通信中用的最广泛的是漏检率低便于实现的循环冗余校验码CRC,它是由分组线性码的分支而来,其主要应用时二元码组,编码简单且误判概率比较低,循环冗余校验码CRC是利用线性编码理论,在发送端根据要传送的一个n比特的帧或报文,发送器生成一个r比特的序列,成为帧检验序列(FCS)。
这样形成的帧将由(n+r)个比特组成。
这个帧刚好能被某个预先确定的书整除。
接收器用相同的数去除外来的帧,如果无余数,则认为无错。
第2章循环冗余校验码CRC
2.1循环冗余校验码CRC原理
CRC校验采用多项式编码方法。
被处理的数据块可以看作是一个n阶的二进制多项式,因为任何一个有二进制数位串组成的代码都可以和一个只含0或1两个系数的多项式建立一一对应的关系,一个k位帧可以看成是从Xk-1项到X0的k次多项式的系数序列,这个多项式的阶数为k-1,高位(最左边)是Xk-1项的系数,下一位是Xk-2项的系数,依次类推。
如一个8位二进制数10110101可以表示为:
X7+X5+X4+X2+1。
多项式乘除法运算过程与普通代数多项式的乘除法相同。
多项式的加减法运算采用模2运算,加减时不进,错位,和逻辑异或运算一致。
采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。
CRC的处理方法是:
发送方以g(x)去除t(x),得到余数作为CRC校验码。
校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。
CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。
所以CRC的生成多项式的阶数越高,那么误判的概率就越小。
本实验采用16位CRC校验,可以保证在1410bit码元中只含有一位未被检测出的错误。
本设计使用CCITT-16,其生成多项式g(x)=X16+X12+X5+1。
2.2CRC码的生成与校验
CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为CRC校验码。
其实现步骤如下:
(1) 设待发送的数据块是m位的二进制多项式t(x),生成多项式为r+1阶的g(x)。
在数据块的末尾添加r个0,数据块的长度增加到m+r位,对应的二进制多项式为。
(2) 用生成多项式g(x)去除,求得余数为阶数为r-1的二进制多项式y(x)。
此二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的CRC校验码。
(3) 用从第二步得到的r个比特的CRC校验码替换原数据单元末尾附加的r个0。
如果余数位数小于r,则最左的默认位数为0,就是包含了CRC校验码的待发送字符串。
从CRC的编码规则可以看出,CRC编码实际上是将代发送的m位二进制多项式t(x)转换成了可以被g(x)除尽的m+r位二进制多项式,所以解码时可以用接受到的数据去除g(x),如果余数位零,则表示传输过程没有错误;如果余数不为零,则在传输过程中肯定存在错误。
同时可以看做是由t(x)和CRC校验码的组合,所以解码时将接收到的二进制数据去掉尾部的r位数据,得到的就是原始数据。
2.3举例说明
发送端:
例如:
已知:
信息码:
1010信息多项式:
K(x)=X3+X生成码:
1011生成多项式:
G(x)=X3+X+1(r=3)
解:
1)(X3+X)*X3的积是X6+X4对应的码字是1010000
2)积/G(X)(按模二算法)由计算结果知冗余码是011,CRC码(码字)就是1010011
接收端:
例如:
已知:
接受码字:
1010011多项式:
T(x)=X6+X4+X+1生成码:
1011生成多项式:
G(x)=X3+X+1(r=3)
求:
码字的正确性。
若正确,则指出冗余码和信息码。
解:
1)用CRC码(码字)除以生成码,余数为0,所以CRC码(码字)正确。
2)因r=3,所以冗余码是:
011,信息码是:
1010。
第3章详细设计及仿真
3.1目的及意义
纠错码(errorcorrectingcode),在传输过程中发生错误后能在收端自行发现或纠正的码。
仅用来发现错误的码一般常称为检错码。
为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。
关系的建立称为编码。
码字到达收端后,可以根据编码规则是否满足以判定有无错误。
当不能满足时,按一定规则确定错误所在位置并予以纠正。
纠错并恢复原码字的过程称为译码。
检错码与其他手段结合使用,可以纠错。
CRC(CyclicRedundancyCheck)循环冗余校验码,是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来“确认信息”的困惑。
对通信的可靠性检查就需要校验,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。
3.2设计任务及要求
设计任务:
用MATLAB软件实现CRC校验码的生成器和校验器的设计。
工作要求:
1、掌握CRC校验码的生成器和校验器原理;
2、熟悉MATLAB软件及仿真;
3、对于给定生成多项式
,实现生成器和校验器的设计;
3.3软件流程图
N
Y
N
Y
3.4MATLAB程序实现
%CRC编码主程序
clear;clc;closeall;
uncode_sequence=randint(1,10)
sequence_length=length(uncode_sequence);%得到原始信号长度
crc_ccitt=[10001000000100001];%常用的CRC生成多项式
add_bit=zeros(1,16);%添加冗余比特位
crc_coded_sequence=[uncode_sequencezeros(1,16)];%初始化输出检错码序列
uncode_sequence=[uncode_sequenceadd_bit];
remainder_bits=uncode_sequence;%初始化余数数组
fork=1:
sequence_length%开始循环计算长除得到最终余数
add_zeros=zeros(1,sequence_length-k);%加入冗余位参与模2运算
register_bits=[crc_ccittadd_zeros];%构造除数数组
ifremainder_bits
(1)==0%被除数第一位为0则将除数所有位置0
register_bits=zeros(1,length(register_bits));
end
remainder_bits=bitxor(register_bits,remainder_bits);%除数与被除数进行异或操作
register_bits=crc_ccitt;%将寄存器恢复为除数数组
remainder_bits
(1)=[];%去除模2后得到的被除数的第1位
end
add_len=length(crc_coded_sequence)-length(remainder_bits);
%生成余数序列的冗余位以叠加到编码序列
remainder_bits=[zeros(1,add_len),remainder_bits];%余数序列添加冗余
crc_coded_sequence=crc_coded_sequence+remainder_bits%合成编码序列
sequence_length=length(crc_coded_sequence);%得到冗余编码的长度
original_sequence=crc_coded_sequence;%初始化输出序列
crc_ccitt=[10001000000100001];%常用的CRC生成多项式
remainder_bits=crc_coded_sequence;%初始化余数数组
cycle_length=sequence_length-length(crc_ccitt)+1;%计算长除法的循环周期
fork=1:
cycle_length%开始循环计算长除得到最终余数
add_zeros=zeros(1,cycle_length-k);
register_bits=[crc_ccittadd_zeros];%构造除数数组
ifremainder_bits
(1)==0%被除数第一位为0则将除数所有位置0
register_bits=zeros(1,length(register_bits));
end
remainder_bits=bitxor(register_bits,remainder_bits);
%将除数与被除数进行异或操作
register_bits=crc_ccitt;%将寄存器恢复为除数数组
remainder_bits
(1)=[];%去除模2后得到的被除数的第1位
end
ifsum(remainder_bits)==0%传输码元中没有发生奇数个错误
original_sequence=crc_coded_sequence(1:
cycle_length)
else
err=1%码元传输发生错误
end
3.5MATLAB运行结果
第4章开发平台简介
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
基本功能
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题
MATLAB特点:
(1)友好的工作平台和编程环境
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
(2)简单易用的程序语言
Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
(3)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
(4)出色的图形处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
(5)应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。
一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(6)实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。
允许用户编写可以和MATLAB进行交互的C或C++语言程序。
另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。
MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。
工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
(7)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。
总结
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
此次课程设计主要通过MATLAB软件编写程序,实现计算机通信中循环冗余校验码生成器及校验器的设计,并利用MATLAB仿真,对数据进行处理。
设计中用到了循环冗余校验、MATLAB编程等方面的知识。
由于对MATLAB编程不熟悉,导致在设计的过程中无法正确编写生成器及校验器的程序,使生成的冗余码产生错误,译码的结果也发生错误,使得在设计过程中绕了许多弯路,做了许多的无用功。
设计过程中查阅了大量的有关循环冗余校验码设计的书籍,巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合的必要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟跟平时的理论还是存在着很大的差异,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
总之,通过这次课程设计之后,我发现自己的不足之处还很多,我下去以后一定把以前所学过的知识重新温故。
最后,也是最重要的一点,我们学会了一种快速有效的学习方法。
以往的学习都是老师讲学生记,不懂得地方就靠解答大量习题帮助记忆,学习的主要目的是通过最后的考试。
课程设计使我们发现最重要的是能运用所学的知识。
在整个计算机通信课程的学习过程中,我们突破了传统学习模式,把被动接受转变为主动学习。
不再是用学到的知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。
总之,这学期的计算机通信课程设计,让我学到了很多,受益匪浅。
由衷感谢老师提供给我们这样一个锻炼自己的机会,也感谢老师的指导,让我学到了很多知识。
参考文献:
[1]吴玲达,李国辉,杨冰等著.计算机通信原理与技术[M].国防科技大学出版社,2003,
[2]潘新民著.计算机通信技术[M].电子工业出版社,2003
[3]孙丽华著.信息论与纠错编码[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 通信 课程设计