基于matlab的(7,4)汉明码的编译仿真.doc
摘要在通信系统中,要提高信息传输的有效性,我们将信源的输出经过信源编码用较少的符号来表达信源消息,这些符号的冗余度很小,效率很高,但对噪声干扰的抵抗能力很弱。汉明码(HAMMINGCODE)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(SINGLEERRORCORRECTING)码,用于信道编码与译码中,提高通信系统抗干扰的能力。为了提高信息传输的准确性,我们引进了差错控制技术。而该技术采用可靠的,有效的信道编码方法来实现的。纠错码是一种差错控制技术,目前已广泛应用于各种通信系统和计算机系统中,纠错编码主要用于数字系统的差错控制,对于保证通信、存储、媒体播放和信息转移等数字传递过程的质量有着重要意义,是通信、信息类科知识结构中不可缺少的一部分。关键字通信系统、MATLAB线性分组码、HAMMING码一、引言1二、设计原理221汉明码的构造原理222监督矩阵H323生成矩阵G424校正子(伴随式)S5三、(7,4)汉明码编码的设计731(7,4)汉明码编码方法732编码流程图733(7,4)汉明码编码程序设计7四、(7,4)汉明码的译码器的设计841(7,4)汉明码译码方法842译码流程图1043(7,4)汉明码译码程序的设计10五、(7,4)汉明码编译码程序的编译及仿真波形11六、总结13七、参考文献14附录1510一、引言当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由BELL实验室的RWHAMMING发明,因此定名为汉明码。与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中加入冗余位也称纠错位可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。1二、设计原理21汉明码的构造原理线性分组码是一类重要的纠错码,应用很广泛。在(N,K)分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。一般来说,若汉明码长为N,信息位数为K,则监督位数RNK若希望用R个监督位构造出R个监督关系式来指示一位错码的N种可能位置,则要求或12112RR现在以7,4分组码为例来说明线性分组码的特点。设其码字为A,6A,前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分012345,,AA组码产生监督元显然,这3个方程是线性无关的。代入上述公式可得7,4码的全部码组,如表1所示。表1(7,4)汉明码的全部码组信息位A6A5A4A3监督位A2A1A0信息位A6A5A4A3监督位A2A1A000000001000111000101110011000010101101001000111101011001010011011000010101101110101001100111110100346035614562AAAAAAAAAAAA1201110001111111由上表可知(7,4)汉明码的最小码距3,它能纠1位错或检2位错。0D由此可见,汉明码是能够纠正单个错误的线性分组码,其特点是最小码距3,码长N0D与监督位R满足关系式,说明上述所说的(7,4)线性分组码就是汉明码。同时,NR12由于码率,故当很大和很小时,码率接近1,可见,汉明码是一种NKR高效码。22监督矩阵H式(31)所示的(7,4)汉明码的监督方程可以改写为02456AA(式221)13046用矩阵的形式可以将上式表示为(摸2)(式222)上式可以简记为或TAH00AHT式中AA6A5A4A3A2A1A000006543210100AA13右上标“T”表示将矩阵转置。例如,HT是H的转置,即HT的第一行为H的第一列,HT的第二行为H的第二列等等。其中,H成为监督矩阵,只要监督矩阵H给定,编码时信息位和监督位的关系也就随即确定下来了。23生成矩阵G上面汉明码例子中的监督位公式为(式231)也可改写成矩阵形式(式232)或者写成(式233)式中,Q为一个KR阶矩阵,它为P的转置,即QPT上式表示,在信息位给定后,用信息位的行矩阵车乘矩阵Q就产生出监督位。若将(221式)的监督方程补充完整并写成矩阵的形式6564534231010AAA14(式234)即AGGM6A345即汉明码的编码原理上式中G(式235)01G为生成矩阵,根据式234知由G和信息码就能产生所有码字。生成矩阵也可分为两部分,即G(式236)QIK,上式中Q(式237)TP01Q为阶矩阵,为阶单位阵。RKKI因此,如果找到了码的生成矩阵G,则编码的方法就完全确定了。具有KQ形式的生成矩阵称为典型生成矩阵。由典型生成矩阵得出的码组A中,信息位的位置不变,监督位附加于其后,这种形式的码称为系统码。24校正子(伴随式)S设一发送码组A,在传输的过程中可能发生误码。接受码组B0121,,AAN,收发码组之差定义为错误图样E。0121,,BBNEBA式241其中,E,令S。0121,,EENTHB式242TTEAHBS式中S称为校正子,他用来表示错码位置。15可见校正子S与错误图样E之间由确定的线性变换关系。若S和E之间一一对应,则S将能代表错码位置。(7,4)汉明码的校正子和错误图样之间的对应关系如表2所示。表27,4汉明码S与E对应关系错误图样E校正子S错误码位6E543E210012错误位置C0B000000100111000001001022000010010033B000100001144001000010155010000011066B10000001117无错0000000000无错由上表可知当S001时,则出错在1位,即B0出错;当S010时,则出错在2位,即B1出错;当S100时,则出错在3位,即B2出错;当S011时,则出错在4位,即B3出错;当S101时,则出错在5位,即B4出错;当S110时,则出错在6位,即B5出错;当S111时,则出错在7位,即B6出错;当S000时,则无错。16三、(7,4)汉明码编码的设计31(7,4)汉明码编码方法7,4汉明码的编码就是将输入的4位信息码M加上3位监督码从3456A012B而编成7位汉明码,编码输出B6A012345,,A210由式AMGG可知,信息码M与生成矩阵G的乘积就是编好以后的7,4汉明码。32编码流程图编码程序的设计流程图开始输入信息码A6A5A4A3编出监督位B2B1B0输出(7,4)汉明码A6A5A4A3A2A1A0结束33(7,4)汉明码编码程序设计根据7,4汉明码的编码原理,将上式计算所得的监督位和输入的信息位一起输出,则此次编码就算完成了。(7,4)汉明码的编码源程序见下文附录。17四、(7,4)汉明码的译码器的设计4