基于MATLAB的(7-4)汉明码的编译仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
在通信系统中,要提高信息传输的有效性,我们将信源的输出经过信源编码用较少的符号来表达信源消息,这些符号的冗余度很小,效率很高,但对噪声干扰的抵抗能力很弱。汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码,用于信道编码与译码中,提高通信系统抗干扰的能力。
为了提高信息传输的准确性,我们引进了差错控制技术。而该技术采用可靠的,有效的信道编码方法来实现的。纠错码是一种差错控制技术,目前已广泛应用于各种通信系统和计算机系统中,纠错编码主要用于数字系统的差错控制,对于保证通信、存储、媒体播放和信息转移等数字传递过程的质量有着重要意义,是通信、信息类科知识结构中不可缺少的一部分。
关键字:通信系统、MATLAB 线性分组码、Hamming码
一、引言 0
二、设计原理 (1)
2.1 汉明码的构造原理 (1)
2.2 监督矩阵H (2)
2.3 生成矩阵G (3)
2.4 校正子(伴随式)S (4)
三、(7,4)汉明码编码的设计 (6)
3.1 (7,4)汉明码编码方法 (6)
3.2 编码流程图 (6)
3.3 (7,4)汉明码编码程序设计 (7)
四、(7,4)汉明码的译码器的设计 (7)
4.1 (7,4)汉明码译码方法 (7)
4.2 译码流程图 (9)
4.3(7,4)汉明码译码程序的设计 (9)
五、(7,4)汉明码编译码程序的编译及仿真波形 (10)
六、总结 (12)
七、参考文献 (13)
附录 (14)
一、引言
当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。
与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。
二、设计原理
2.1 汉明码的构造原理
线性分组码是一类重要的纠错码,应用很广泛。在(n ,k )分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。
一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k.若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求
n r ≥-12 或 112++≥-r k r
现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=[6a ,
012345,,,,,a a a a a a ],前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组
码产生监督元:
显然,这3个方程是线性无关的。代入上述公式可得(7,4)码的全部码组,如表1所示。
表1 (7,4)汉明码的全部码组
⎪ ⎩ ⎪
⎨ ⎧ ⊕ ⊕ = ⊕ ⊕ = ⊕ ⊕ = 3 4 6 0
3 5 6 1
4 5 6 2 a
a a a a a a a a a a a
由上表可知:(7,4)汉明码的最小码距0d =3,它能纠1位错或检2位错。
由此可见,汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距0d =3,码长n 与监督位r 满足关系式:n r ≥-12,说明上述所说的(7,4)线性分组码就是汉明码。同时,由于码率n r n r n n k -=-=1)(,故当n 很大和r 很小时,码率接近1,可见,汉明码是一种高效码。
2.2 监督矩阵H
式(3.1)所示的(7,4)汉明码的监督方程可以改写为:
02456=⊕⊕⊕a a a a
01356=⊕⊕⊕a a a a (式2.2.1)
00346=⊕⊕⊕a a a a
用矩阵的形式可以将上式表示为:
(摸2) (式2.2.2)
上式可以简记为:
T T A H 0=• 或 0=•A H T
式中
A =[a6 a5 a4 a3 a2 a1 a0] 0=[0 0 0]
右上标“T”表示将矩阵转置。例如,HT是H的转置,即HT的第一行为H的第一列,HT 的第二行为H的第二列等等。
其中,H成为监督矩阵,只要监督矩阵H给定,编码时信息位和监督位的关系也就随即确定下来了。
2.3 生成矩阵G
上面汉明码例子中的监督位公式为
(式2.3.1)也可改写成矩阵形式:
(式2.3.2)或者写成
(式2.3.3)式中,Q为一个k*r阶矩阵,它为P的转置,即Q=PT
上式表示,在信息位给定后,用信息位的行矩阵车乘矩阵Q就产生出监督位。
若将(2.2.1式)的监督方程补充完整并写成矩阵的形式:
(式2.3.4)
即:A=G ·[
6a 3
45a a a ]=G ·M
即汉明码的编码原理 上式中
G=⎥⎥⎥⎥
⎦⎤⎢⎢⎢
⎢⎣⎡011....0001101....0010110....0100111....1000 (式2.3.5)
G 为生成矩阵,根据式2.3.4知:由G 和信息码就能产生所有码字。生成矩阵也可分为两部分,即
G=[]Q I k , (式2.3.6)
上式中
Q=T P =⎥⎥⎥⎥
⎦
⎤⎢⎢⎢
⎢⎣⎡011101110111 (式2.3.7) Q 为r k ⨯阶矩阵,k I 为k 阶单位阵。
因此,如果找到了码的生成矩阵G ,则编码的方法就完全确定了。具有[KQ]形式的生成矩阵称为典型生成矩阵。由典型生成矩阵得出的码组A 中,信息位的位置不变,监督位附加于其后,这种形式的码称为系统码。
2.4 校正子(伴随式)S
设一发送码组A=[0
121,,...,a a a a n n --],在传输的过程中可能发生误码。接受码组
B=[
121,,...,,b b b b n n --],收发码组之差定义为错误图样E 。
a ⎡