资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
西南科技大学奇偶校验编码仿真设计报告课程名称:通信原理课程设计设计名称:奇偶校验编码仿真姓名:任XX学号:20105523班级:通信1002班指导教师:秦明伟起止日期:2013.627201375西南科技大学信息工程学院制课程设计任务书学生班级:通信1002班 学生姓名: 任XX 学号: 20105523设计名称:奇偶校验编码仿真起止日期:2013.6.272013.7.5 指导教师:秦明伟设计要求:(1) 基于MATLAB编写M文件,实现奇偶校验编码仿真,数据帧长8bit,校验位lbit;(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”的个数是否为奇数,从而确定传输 代码的正确性。1.单向校验概述:单向奇偶校验(Row Parity)由于一次只采用单个校验位,因此又称为单个位奇偶校验 (Single Bit Parity)。发送器在数据祯每个字符的信号位后添一个奇偶校验位,接收器对该 奇偶校验位进行检查。典型的例子是面向ASCII码的数据信号祯的传输,由于ASCII码是七位 码,因此用第八个位码作为奇偶校验位。单向奇偶校验又分为奇校验(Odd Parity)和偶校验(Even Parity),发送器通过校验位对 所传输信号值的校验方法如下:奇校验保证所传输每个字符的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 了。2双向校验为了提高奇偶校验的检错能力,可采用双向奇偶校验(Row and Column Parity),也可称 为双向冗余校验(Ver ti cal and Long itu dinal Redundancy Checks)。双向奇偶校验,又称“方块校验”或“垂直水平”校验。例:1010101X1010111X1110100X0101110X1101001X0011010XXXXXXXX“X”表示 奇偶校验所采用的奇校验或偶校验的校验码。如此,对于每个数的关注就由以前的1X7次增加到了 7X7次。因此,比单项校验的校验 能力更强。简单的校验数据的正确性,在计算机里都是010101二进制表示,每个字节有八位二进制, 最后一位为校验码,奇校验测算前七位里1的个数合的奇偶性,偶校验测算前七位里0的个数 的奇偶性。当数据里其中一位变了,得到的奇偶性就变了,接收数据方就会要求发送方重新传 数据。奇偶校验只可以简单判断数据的正确性,从原理上可看出当一位出错,可以准确判断, 如同时两个1变成两个0就校验不出来了,只是两位或更多位及校验码在传输过程中出错的概 率比较低,奇偶校验可以用在要求比较低的应用下。本文对两种校验进行编码校验仿真。四、详细设计步骤1. 8bit 信息码的产生:使用mat lab指令大全中的“randint(m,n) ”指令生成(m,n)矩阵的随机二进制数字,“ 0 ” 和“ 1 ”出现的概率均等。其中取n=8生成8bit的信息码。2. 奇偶校验码的产生:i. 对产生的每行信息码求和除二取余,使用指令库中的“sum()”求和,使用“rem()”求 余数;ii. 补校验位:奇校验时,若求得余数为 1,则校验位补 0;若求得的余数为 0,则校验位 补 1。偶校验时,若求得的余数为 1,则校验位补 1;若求得的余数为 0,则校验位补 0。iii. 加入校验位,构成新的信息码进行传输。3. 产生误码:由取非指令“”对信息码中的某些位进行取反,造成误码,以便校验检测。4. 对信息码进行校验在接收端对信码继续每行求和除二取余,若使用奇校验,则每行余数为 1 时显示校验正确否则校验错误;若使用偶校验,则每行余数为 0 时显示校验正确,否则校验错误。五、设计结果及分析1. 设计程序A. 单向校验clear all;%清除工作空间的所有变量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:结束校验):);;不回显if l = 0 | l = 1for i=1:mfor j=1:n %求第 i 行各位相加对 2 取余,即相异或的结果sum(i) = sum(i) + A(i,j);% 向量元素求和x = sum(i);%每行结果放入x中endif l = 0; %偶校验if rem(x,2) = 1;%求余数指令A(i,n+1) = 1;%校验位定义为 1elseA(i,n+1) = 0 ; %否则定义为0endendif l = 1%奇校验if rem(x,2) = 1%求余数指令A(i,n+1) = 0;elseA(i,n+1) = 1;endendendelse if l = 9fprintf(退出校验n);%设置显示格式 break;%跳出循环elsefprintf(非法输入! n);con tinue;%结束本次循环endendfprintf( 补校验位:)A%显示加入校验位后的矩阵%检查传输数据是否正确if l = 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 列的零矩阵 for i=1:mfor j=1:(n+1) %求第i行各位相异或的结m果 sum(i) = sum(i) + A(i,j);x = sum(i);endif rem(x,2) = 0%正确 fprintf(检查正确n);else%错误 fprintf( 检查错误! n);endendendif l = 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 列的零矩阵for i=1:mfor j=1:(n+1) % 求第 i 行各位相异或的结果 sum(i) = sum(i) + A(i,j);x = sum(i);endif rem(x,2) = 1% 正确fprintf(检查正确n);else% 错误fprintf(检查错误! n);endendendendB. 双向校验clcclear allm = 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:结束校验):);;不回显 if l = 0 | l = 1for i=1:mfor j=1:nsum1(i) = sum1(i) + A(i,j);% 向量元素求和x = sum1(i);%每行结果放入x中endif l = 0; %偶校验if rem(x,2) = 1;%求余数指令A(i,n+1) = 1;%校验位定义为 1elseA(i,n+1) = 0;% 否则定义为 0 endendif l = 1% 奇校验if rem(x,2) = 1% 求余数指令A(i,n+1) = 0;elseA(i,n+1) = 1; endendend%列求和sum2 = zeros(n,l);%定义一个n行1列的零矩阵 for i=1:nfor j=1:msum2(i) = sum2(i) + A(j,i);% 求每列信码之和 x=sum2(i);endif l = 0; %偶校验if rem(x,2) = 1;%求余数指令A(m+1,i) = 1;%校验位定义为 1 elseA(m+1,i) = 0;%否则定义为0 endendif l = 1% 奇校验if rem(x,2) = 1%求余数指令 A(m+1,i) = 0;elseA(m+1,i) = 1;endendendA%显示加入校验位之后的信码C=A;else if l = 9fprintf(退出校验n);%设置显示格式 break;%
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号