版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南科技大学奇偶校验编码仿真设计
报告课程名称: 通信原理课程设计 设计名称: 奇偶校验编码仿真 姓 名: 任XX 学 号: 20105523 班 级: 通信1002班 指导教师: 秦明伟 起止日期: 2013.6・27~2013・7・5西南科技大学信息工程学院制课程设计任务书学生班级: 通信1002班学生姓名:任XX学号:20105523设计名称: 奇偶校验编码仿真 起止日期: 2013.6.27~2013.7.5指导教师: 秦明伟设计要求:(1) 基于MATLAB编写M文件,实现奇偶校验编码仿真,数据帧长8bit,校验位1bit(2) 仿真中要体现出有错误bit时的校验情况,且要求错误时自动报错;课程设计学生日志时间设计内容2013.6.27查阅资料,了解CRC校验和奇偶校验,决定设计奇偶校验。2013.6.28查阅资料,深入理解奇偶校验的原理与方法。2013.6.29查阅资料,深入理解奇偶校验的原理与方法。2013.6.30查阅资料,了解matlab工具的编程方法。2013.7.1查阅下载matlab指令大全。2013.7.2熟悉matlab软件,开始编写程序仿真。2013.7.3初步完成程序,进步优化修改,定稿。2013.7.4着手完成课程设计报告。2013.7.5修改完善课程设计报告。奇偶校验编码仿真一、 摘要(150-250字)本文介绍了奇偶校验的编码规则及应用前景,使用matlab仿真工具对奇偶校验中的单向奇偶校验与双向奇偶校验进行编程仿真,详细的阐述了奇偶校验的原理和编码过程。分析了实验结果,以及对于奇偶校验有了更新的认识,奇偶校验是几种校验方法中实现最为简单,得到了广泛的应用。二、 设计目的和意义通过本次课程设计,对于matlab仿真工具更加熟悉,同时也深入了解了奇偶校验编码的原理与方法。三、 设计原理奇偶校验是一种检测代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。单向校验概述:单向奇偶校验(RowParity)由于一次只采用单个校验位,因此又称为单个位奇偶校验(SingleBitParity)。发送器在数据祯每个字符的信号位后添一个奇偶校验位,接收器对该奇偶校验位进行检查。典型的例子是面向ASCII码的数据信号祯的传输,由于ASCII码是七位码,因此用第八个位码作为奇偶校验位。单向奇偶校验又分为奇校验(OddParity)和偶校验(EvenParity),发送器通过校验位对所传输信号值的校验方法如下:奇校验保证所传输每个字符的8个位中1的总数为奇数;偶校验则保证每个字符的8个位中1的总数为偶数。显然,如果被传输字符的7个信号位中同时有奇数个(例如1、3、5、7)位出现错误,均可以被检测出来;但如果同时有偶数个(例如2、4、6)位出现错误,单向奇偶校验是检查不出来的。一般在同步传输方式中常采用奇校验,而在异步传输方式中常采用偶校验。校验方法:奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数1000110(0)必须添0,这样原来有3个1已经是奇数了所以添上0之后1的个数还是奇数个。偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数1000110(1)就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。双向校验为了提高奇偶校验的检错能力,可采用双向奇偶校验(RowandColumnParity),也可称为双向冗余校验(VerticalandLongitudinalRedundancyChecks)o双向奇偶校验,又称“方块校验”或“垂直水平”校验。例:1010101X1010111X1110100X0101110X1101001X0011010XXXXXXXX“X”表示奇偶校验所采用的奇校验或偶校验的校验码。如此,对于每个数的关注就由以前的1X7次增加到了7X7次。因此,比单项校验的校验能力更强。简单的校验数据的正确性,在计算机里都是010101二进制表示,每个字节有八位二进制,最后一位为校验码,奇校验测算前七位里1的个数合的奇偶性,偶校验测算前七位里0的个数的奇偶性。当数据里其中一位变了,得到的奇偶性就变了,接收数据方就会要求发送方重新传数据。奇偶校验只可以简单判断数据的正确性,从原理上可看出当一位出错,可以准确判断,如同时两个1变成两个0就校验不出来了,只是两位或更多位及校验码在传输过程中出错的概率比较低,奇偶校验可以用在要求比较低的应用下。本文对两种校验进行编码校验仿真。四、详细设计步骤8bit信息码的产生:使用matlab指令大全中的“randint(m,n)”指令生成(m,n)矩阵的随机二进制数字,“0”和“1”出现的概率均等。其中取n=8生成8bit的信息码。奇偶校验码的产生:对产生的每行信息码求和除二取余,使用指令库中的“sum()”求和,使用“rem()”求余数;补校验位:奇校验时,若求得余数为1,则校验位补0;若求得的余数为0,则校验位补1。偶校验时,若求得的余数为1,则校验位补1;若求得的余数为0,则校验位补0。加入校验位,构成新的信息码进行传输。产生误码:由取非指令“〜”对信息码中的某些位进行取反,造成误码,以便校验检测。对信息码进行校验在接收端对信码继续每行求和除二取余,若使用奇校验,则每行余数为1时显示校验正确,否则校验错误;若使用偶校验,则每行余数为0时显示校验正确,否则校验错误。五、设计结果及分析设计程序A.单向校验clearall;%清除工作空间的所有变量m=input('请输入行:’);%input('');用于向计算机输入一个参数n=input('请输入列:’);A=randint(m,n)%randint(m,n)产生的是一个m*n维的矩阵,矩阵的元素或者是0或者是1,是随机的并显示AB=A;%A暂存在B,while(1)A=B;%避免循环中A中信码改变sum=zeros(1,m);%zeros(1,m)创建一个1行m列的零矩阵l=input('请选择奇偶校验(0:偶校验1:奇校验9:结束校验):’);%;不回显ifl==0||l==1fori=1:mforj=1:n%求第1行各位相加对2取余,即相异或的结果sum(i)=sum(i)+A(i,j);%向量元素求和x=sum(i);%每行结果放入x中endifl==0;%偶校验ifrem(x,2)==1;%求余数指令A(i,n+1)=1;%校验位定义为1elseA(i,n+1)=0;%否则定义为0endendifl==1%奇校验ifrem(x,2)==1%求余数指令A(i,n+1)=0;elseA(i,n+1)=1;endendendelseifl==9fprintf('退出校验~\n');%设置显示格式break;%跳出循环elsefprintf('非法输入!!\n');continue;%结束本次循环endendfprintf('补校验位:’)A%显示加入校验位后的矩阵%检查传输数据是否正确ifl==0%偶校验是否正确fprintf('改动结果,产生误码(改动1行1列和2行3列)’);A(1,1)=~A(1,1);A(2,3)二~A(2,3);A%显示改动过的数据sum=zeros(1,m);%zeros(1,m)创建一个1行m列的零矩阵fori=1:mforj=1:(n+1)%求第i行各位相异或的结m果sum(i)=sum(i)+A(i,j);x=sum(i);endifrem(x,2)==0%正确fprintf('检查正确~\n');else%错误fprintf('检查错误!!\n');endendendifl==1%奇校验是否正确fprintf('改动结果,产生误码(改动1行3列和3行1列)\n');A(1,3)=~A(1,3);A(3,1)二〜A(3,1);Asum=zeros(1,m);%zeros(1,m)创建一个1行m列的零矩阵fori=1:mforj=1:(n+1)%求第i行各位相异或的结果sum(i)=sum(i)+A(i,j);x=sum(i);endifrem(x,2)==1%正确fprintf('检查正确~\n');else%错误fprintf('检查错误!!\n');endendendendB.双向校验clcclearallm=input('请输入行:’);%input('');用于向计算机输入一个参数n=input('请输入列:’);A=randint(m,n)B=A;while(1)A=B;sum1=zeros(1,m);%zeros(1,m)创建一个1行m列的零矩阵存放每行和l=input('请选择奇偶校验(0:偶校验1:奇校验9:结束校验):’);%;不回显ifl==0||l==1fori=1:mforj=1:nsum1(i)=sum1(i)+A(i,j);%向量元素求和x=sum1(i);%每行结果放入x中endifl==0;%偶校验ifrem(x,2)==1;%求余数指令A(i,n+1)=1;%校验位定义为1elseA(i,n+1)=0;%否则定义为0endendifl==1%奇校验ifrem(x,2)==1%求余数指令A(i,n+1)=0;elseA(i,n+1)=1;endendend%列求和sum2=zeros(n,1);%定义一个n行1列的零矩阵fori=1:nforj=1:msum2(i)=sum2(i)+A(j,i);%求每列信码之和x=sum2(i);endifl==0;%偶校验ifrem(x,2)==1;%求余数指令A(m+1,i)=1;%校验位定义为1elseA(m+1,i)=0;%否则定义为0endendifl==1%奇校验ifrem(x,2)==1%求余数指令A(m+1,i)=0;elseA(m+1,i)=1;endendendA%显示加入校验位之后的信码C=A;elseifl==9fprintf('退出校验~\n');%设置显示格式break;%跳出循环elsefprintf('非法输入!!\n');continue;%结束本次循环endend%奇偶校验%行校验ifl==0%偶校验是否正确fprintf('改动结果,产生误码(改动1行1列和2行3列)’);A(1,1)=~A(1,1);A(2,3)二~A(2,3);A%显示改动过的数据fprintf('行校验结果:\n')sum1=zeros(1,m);%zeros(1,m)创建一个1行m列的零矩阵fori=1:mforj=1:(n+1)%求第i行各位相异或的结m果sum1(i)=sum1(i)+A(i,j);x=sum1(i);endifrem(x,2)==0%正确fprintf('检查正确~\n');else%错误fprintf('检查错误!!\n');endendendifl==1%奇校验是否正确fprintf('改动结果,产生误码(改动1行3列和3行1列)\n');A(1,3)=~A(1,3);A(3,1)二〜A(3,1);Afprintf('行校验结果:\n')sum1=zeros(1,m);%zeros(1,m)创建一个1行m列的零矩阵fori=1:mforj=1:(n+1)%求第i行各位相异或的结果sum1(i)=sum1(i)+A(i,j);x=sum1(i);endifrem(x,2)==1%正确fprintf('检查正确~\n');else%错误fprintf('检查错误!!\n');endendend%列校验ifl==0%偶校验是否正确fprintf('\n列校验结果:\n')sum2=zeros(n,1);%zeros(1,m)创建一个1行m列的零矩阵fori=1:nforj=1:(m+1)%求第i列各位相异或的结m果sum2(i)=sum2(i)+A(j,i);x=sum2(i);endifrem(x,2)==0%正确fprintf('检查正确~\n');else%错误fprintf('检查错误!!\n');endendendifl==1%奇校验是否正确fprintf('\n列校验结果:\n')sum2=zeros(n,1);%zeros(1,m)创建一个1行m列的零矩阵fori=1:nforj=1:(m+1)%求第i列各位相异或的结m果sum2(i)=sum2(i)+A(j,i);x=sum2(i);endifrem(x,2)==1%正确fprintf('检查正确~\n');else%错误fprintf('检查错误!!\n');endendendend程序运行结果(单向校验)1)CommandWindow窗口显示结果请输入行:4请输入列:8A=01001010100011001111110101110111请选择奇偶校验(0:偶校验1:奇校验9:结束校验):4非法输入!!请选择奇偶校验(0:偶校验1:奇校验9:结束校验):5非法输入!!请选择奇偶校验(0:偶校验1:奇校验9:结束校验):1补校验位:A=010010100100011000111111010011101111改动结果,产生误码(改动1行3列和3行1列)A=0110101001000110000 1 1 1 1 1 0 1 00 1 1 1 0 1 1 1 1检查错误!!检查正确〜检查错误!!检查正确〜请选择奇偶校验(0:偶校验1:奇校验9:结束校验):0补校验位:A=010010101100011001111111011011101110改动结果,产生误码(改动1行1列和2行3列)110010101101011001111111011011101110检查错误!!检查错误!!检查正确〜检查正确〜请选择奇偶校验(0:偶校验1:奇校验9:结束校验):9退出校验〜2)运行结果分析首先由randint(m,n)产生一个随机m行n列二进制信码AA=0 1 0 0 1 0 1 01 0 0 0 1 1 0 01 1 1 1 1 1 0 10 1 1 1 0 1 1 1提示键入信息“(0:偶校验1:奇校验9:结束校验)”键入其他字符,提示“非法输入!”跳转到循环开始。键入1进行奇校验,输出一个补奇校验位的信码矩阵AA=010010100100011000111111010011101111由此看出补校验位之后每行之和均为奇数。然后进入误码形成信码矩阵A改动结果,产生误码(改动1行3列和3行1列)011010100100011000011111010011101111进行奇校验,每行之和不为奇数的信码出错。由于改变了第一行和第三行的信码,所以结果第一行和第三行校验错误。键入0进行偶校验输出一个补奇校验位的信码矩阵AA=010010101100011001111111011011101110由此看出补校验位之后每行之和均为偶数。然后进入误码形成信码矩阵A改动结果,产生误码(改动1行1列和2行3列)110010101101011001111111011011101110进行偶校验,每行之和不为偶数的信码出错。由于改变了第一行和第二行的信码,所以结果第一行和第二行校验错误。键入9,退出校验。双向校验与单向校验原理仿真相差无几,只是多了一项垂直校验,在此不再赘述。六、 总结奇偶校验法并不是一种安全的检错方法,其识别错误的能力较低。假如发生错误的位数为奇数,那么错误可以被识别,而当发生错误的位数为偶数时,错误就无法被识别了,这是因为错误互相抵消了。数位的错误,以及大多数涉及偶数个位的错误都有可能检测不出来。然而,在数据传输中一位出错的机会最多,并且由于奇偶校验方便简单,故在数据传输中常常使用奇偶校验法。奇偶校验分为单项校验和双向校验,相比之下双向校验的校验能力更强,自然实现起来就比单项校验更加复杂。在实际传输中,如果对于传输要求较高的应用中,奇偶校验就不再适用,因为奇偶校验即使发现错误也不能纠正错误,在发现错误后,只能要求重发。有些检错方法具有纠错能力,比如说循环冗余(CRC)检错等。七、 体会由于题目出了点小差错,先是花了些时间去了解CRC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《运动员可持续生计资本的脆弱性与优化研究》
- 中介租赁佣金合同差异补充协议书(2篇)
- 2024年度成都房产物业服务合同
- 2024年度特许经营合同:经营范围与加盟条件
- 2024年度医疗器械研发许可共享协议
- 2024年度品牌宣传推广合同
- 2024年度山塘水利设施建设承包合同
- 火因与经济损失关联
- 个人土地转让合同
- 雕塑装置艺术创新
- 民族团结主题班会教学课件
- 国开成本会计第14章综合练习试题及答案
- 幼儿园教育活动设计与指导(第二版)教案第二章第二节幼儿园语言教育活动设计二
- 外观检查记录表
- GB∕T 13171.1-2022 洗衣粉 第1部分:技术要求
- 气温的变化与分布 完整版课件
- 现在完成时的用法 完整版课件
- 中小学古诗词首
- DB11T 1411-2017 节能监测服务平台建设规范
- 外科学教案-心脏疾病
- 白内障手术流程
评论
0/150
提交评论