通信系统课程设计报告1(7,4)汉明码信道编码1.课程设计目的(1)通过利用matlabsimulink,熟悉matlabsimulink仿真工具。(2)通过课程设计来更好的掌握课本相关知识,熟悉汉明码的纠错与检错方法。(3)更好的了解通信原理的相关知识,磨练自己分析问题、查阅资料、巩固知识、创新等各方面能力。2.课程设计要求(1)掌握课程设计的相关知识、概念清晰。(2)程序设计合理、能够正确运行。3.相关知识3.1汉明码的概念汉明码是1950年由Hamming首先构造的,它是一种能够自动检测并纠正一重错的线性纠错码,即SEC(SingleErrorCorrecting)码,它不仅性能好,而且编译码电路非常简单,易于实现。从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。最先用于磁芯存储器,60年代初用于大型计算机,70年代在MOS存储器中得到应用,后来在中小型计算机中普遍采用,目前常用于RFID系统中多位错误的纠正。3.2汉明码的校验与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。3.2汉明码的纠错在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。在接受端通过通信系统课程设计报告2纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。3.3汉明码的编码方法设原代码的码长为k比特,附加纠错编码部分为r比特,当码字长度n=2r-1,r=n-k,r=1,2…时就称这种线性分组码为汉明码。其基本原理是,将信息码元与监督码元通过线性方程式联系起来,每一个监督位被编在传输码字的特定比特位置上。系统对于错误的数位无论是原有信息位中的,还是附加监督位中的都能把它分离出来。信息传输中信道中的噪声干扰不仅使原代码的每一位(k比特)可能出错,而且附加纠错位(比特)也可能出错,故“一个差错”的情况共有k+r种,加上“正常”态共有k+r+1种状态,而r比特的附加纠错位要能分辨这k+r+1种状态。推导并使用长度为k位码字的汉明码,所需步骤如下:(1)确定最小的监督位数r,将它们记成D1,D2,…Dr,每个监督位符合不同的奇偶测试规定;(2)原有信息和r个监督位一起编成长为r+k位的新码字,选择r监督位(0或1)以满足必要的奇偶条件;(3)对所接收的信息作所需的r个奇偶检查;(4)如果所有的奇偶检查结果均为正确的,则认为信息无错误;如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。汉明码是一种能纠一位错的线性分组码,由于它的编译码简单,在数据通信和计算机存储系统中广泛应用,如在蓝牙技术和硬盘阵列中。它的最小码距为,可以纠正一位错误,但对于两位错不能检测,还可能会造成误纠。尽管发生一位错的概率相对最高,但在一些要求较高的应用中汉明码不能满足要求。常用的能检测两位错同时能纠正一位错的纠错码有扩展汉明码和最佳奇权码的最小码距都为4,两者有相似之处,比如冗余度一样,对于数据位数k,校验位数r应满足2r-1≥k+r当k=16时,r=6,数据位长增加一倍,校验位数只需增加一位,编码效率较高。3.5奇偶校验位奇偶校验是一种添加一个奇偶位用来指示之前的数据中包含有奇数还是偶数个1的检验方式。如果在传输的过程中,有奇数个位发生了改变,那么这个错误将被检测出来(注意奇偶位本身也可能改变)。一般来说,如果数据中包含有奇数个1的话,则将奇偶位设定为1;反之,如果数据中有偶数个1的话,则将奇通信系统课程设计报告3偶位设定为0。换句话说,原始数据和奇偶位组成的新数据中,将总共包含偶数个1。奇偶校验并不十分健壮,如果数据中有偶数个位发生变化,则奇偶位仍将是正确的,因此不能检测出错误。而且,即使奇偶校验检测出了错误,他也不可以指出哪一位出现了错误,从而进行更正。数据必须整体丢弃并且重新传输。在一个噪音较大的媒介中,成功传输数据可能需要很长时间或者不可能完成。虽然奇偶校验的效果不佳,但是由于他只需要一位额外的空间开销,因此这是开销最小的检测方式。并且,如果知道了发生错误的位,奇偶校验还可以恢复数据。4.课程设计分析4.1(7,4)汉明码信道编码的基本概念线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若督元是按线性关系相加而得到的,则称其为线性分组码。现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码,产生监督元:a2=a6+a5+a4a1=a6+a5+a3(4.1.1)a0=a6+a4+a3显然,这3个方程是线性无关的。经计算可得(7,4)码的全部码字,如表2-1所示。表2-1(7,4)码的全部码字序号码字序号码字信息码元监督元信息码元监督元000000008100011110001011910011002001010110101001030011110111011001通信系统课程设计报告440100110121100001501011011311010106011001114111010070111000151111111不难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。4.2监督矩阵H式(4.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表示为a51110100a401101010·a3=0(4.2.1)1011001a20a1a0并简记为H·At=Ot或A·Ht=0(4.2.2)H称为监督矩阵,一旦H给定,信息位和监督位之间的关系也就确定了。H矩阵可以分成2部分1110100H=1101010=[PIr](4.2.3)1011001H·At=Ot,可以用来作为判断接收码字A是否出错的依据。通信系统课程设计报告54.3生成矩阵G把监督方程补充完整并改写为矩阵形式a61000a50100a40010a6a3=0001·a5(4.3.1)a21110a4a11101a3a01011A=[a6a5a4a3]·G(4.3.2)其中10001110100110G=0010101(4.3.3)0001011G称为生成矩阵,由G和信息组就可以产生全部码字。生成矩阵也可以分成2部分,即G=[IkQ](4.3.4)其中111Q=110=Pt(4.3.5)1010114.4校正子S设发送码组A=[an—1,an—2,…,a1,a0],在传输过程中可能发生误码。接收码通信系统课程设计报告6组B=[bn—1,bn—2,…,b1,b0],收发码组之差定义为错误图样E,即E=B-A(4.4.1)令S=BHT,称为伴随式或校正子。S=BHt=(A+E)Ht=EHt(4.4.2)上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。表2-2(7,4)汉明码S与E的对应关系序号错误码位ESe6e5e4e3e2e1e0s2s1s00/00000000001b000000010012b100000100103b200001001004b300010000115b400100001016b501000001107b61000000111通信系统课程设计报告75.仿真MATLAB进行汉明码信道编码的编程:clc;initialseed=71;%AWGN信道的随机种子inputinitialseed=63;%伯努利二进制生成器的随机种子inputsampletime=1/1000;%伯努利二进制生成器的样本时间y=[];y1=[];forsnr=1:10;%SNR取1到10dB,得到不同SNR下的误码率曲线。sim('hammingencoding');%打开simulink模块y=[y,mean(simout(:,1))];%y代表经过汉明译码后的误码情况,计算的是其误码的平均值y1=[y1,mean(simout1(:,1))];%y1代表译码前的误码情况,计算的是误码的平均值endsnr=1:10;semilogy(snr,y,snr,y1)%绘制误码率曲线,可以看出经过译码后的BER的增益。xlabel('SNR(dB)')ylabel('BER')title('经(7,4)汉明码信道编码后的误码率改善')通信系统课程设计报告8代码模块化:通信系统课程设计报告9通过MATLAB软件进行编译,运行结果如图:6.结果分析由实验结果可以看出:经(7,4)汉明码信道编码后的误码率改善。从而可以发现随着信噪比的增加误码率有明显下降的趋势虽然汉明码在课堂上老师讲过但是对它的理论知识还是不深,但是通过这次试验加深了我对汉明码的理论和认识和理解,也是我懂得如何对一个理论进行自己的研究或验证。通信系统课程设计报告107.参考文献[1]徐明远邵玉斌编著《MATLAB仿真在通信与电子工程中的应用》西安电子科技大学出版社,2005[2]王兴亮编著《数字通信原理与技术》西安电子科技大学出版社第二版[3]孙屹吴磊编著《Simulink通信仿真开发手册》国防工业出版社2003