通信系统仿真 基于MATLAB汉明码仿真课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
在通信系统中,要提高信息传输的有效性,我们将信源的输出经过信源编码用较少的符号来表达信源消息,这些符号的冗余度很小,效率很高,但对噪声干扰的抵抗能力很弱。汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码,用于信道编码与译码中,提高通信系统抗干扰的能力。
为了提高信息传输的准确性,我们引进了差错控制技术。而该技术采用可靠的,有效的信道编码方法来实现的。纠错码是一种差错控制技术,目前已广泛应用于各种通信系统和计算机系统中,纠错编码主要用于数字系统的差错控制,对于保证通信、存储、媒体播放和信息转移等数字传递过程的质量有着重要意义,是通信、信息类科知识结构中不可缺少的一部分。本文系统地介绍了纠错码在数字系统中的应用和发展,以及纠错码的基本原理和含义,常用纠错码的简介和分类,主要利用MATLAB中通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形曲线图。在此基础上,对汉明码的性能进行分析,得出结论。
关键字:通信系统、MATLAB、线性分组码、Hamming码
目录
一、引言 (1)
二、设计原理 (2)
2、1 汉明码的构造原理 (2)
2、2 汉明码的纠错原理 (3)
2、3 监督矩阵H (4)
2、4 生成矩阵G (6)
2、5 校正子(伴随式)S (7)
2、6 程序函数介绍 (9)
三、(7,4)汉明码编码的设计 (9)
3、1 (7,4)汉明码编码方法 (9)
3、2 编码流程图 (10)
3、3 (7,4)汉明码编码程序设计 (10)
四、(7,4)汉明码的译码器的设计 (11)
4、1 (7,4)汉明码译码方法 (11)
4、2 译码流程图 (13)
4、3 (7,4)汉明码译码程序的设计 (13)
五、(7,4)汉明码编译码程序的编译及仿真波形 (14)
六、总结 (17)
七、参考文献 (18)
附录 (19)
一、引言
MATLAB(Matrix Laboratory,矩阵实验室)是Mathwork公司推出的一套高效率的数值计算和可视化软件。其中,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。MATIAB通信工具箱由两大部分组成:通信系统功能函数库和SIMULINK通信系统仿真模型库。MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/译码函数、纠错控制编码/译码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。以纠错控制编译码函数为例:函数库提供了线性分组码、汉明码、循环码、BCH 码、里德一索洛蒙码(REED—SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。
通信信号是通过信道的传输,从信源到信宿。由于新到有着不同的特征,这些特征将会影响传输中的通信信号,使信宿不能正确接收和识别信源的信号。因此需要采取各种方式抗信道干扰,信道编码就是一种广泛采用的抗信道干扰的方法。信道编码是人为地按照一定的规则加入冗余信息,从而使信息传输中的差错率降低,甚至达到无措传输的一种提高信息系统可靠性的编码方法。在信道编码中,有一类所谓汉明码,在理论上十分成熟,并且在通信实践中已被广泛使用。本文简述了汉明码的编码方法、译码方法,并给出了相应的MATLAB程序。
二、设计原理
2、1 汉明码的构造原理
线性分组码是一类重要的纠错码,应用很广泛。在(n ,k )分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。
在偶数监督码中,由于使用了一位监督位a0,它和信息位an-1 … a1一起构成一个代数式:
0021=⊕⋅⋅⋅⊕⊕--a a a n n (1)
在接收端解码时,实际上就是在计算
021a a a S n n ⊕⋅⋅⋅⊕⊕=-- (2)
若S = 0,就认为无错码;若S = 1,就认为有错码。现将上式称为监督关系式,S 称为校正子。由于校正子S 只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。若监督位增加一位,即变成两位,则能增加一个类似的监督关系式。由于两个校正子的可能值有4中组合: 00,01,10,11,故能表示4种不同的信息。若用其中1种组合表示无错,则其余3种组合就有可能用来指示一个错码的3种不同位置。同理,r 个监督关系式能指示1位错码的(2r –1)个可能位置。
一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k.若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求
n r ≥-12 或 112++≥-r k r
(3)
现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为[]0123456a a a a a a a A =,前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码产生监督元:
2654
1653
643a a a a a a a a a a a a =⊕⊕⎧⎪
=⊕⊕⎨⎪=⊕⊕⎩ (4)
显然,这3个方程是线性无关的。代入上述公式可得(7,4)码的全部码组,如表1所示。
表1 (7,4)汉明码的全部码组
信息位 a 6 a 5 a 4 a 3
监督位 a 2 a 1 a 0
信息位
a 6 a 5 a 4 a 3
监督位 a 2 a 1 a 0
0000 000 1000 111 0001 011 1001 100 0010 101 1010 010 0011 110 1011 001 0100 110 1100 001 0101 101 1101 010 0110 011 1110 100 0111
000
1111
111
由上表可知:(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 汉明码的纠错原理
当数字信号编码成汉明形式(A )后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。
一般来说,接收码组与A 不一定相同。若设接收码组为一n 列的行矩阵B ,即
[]6543210B b b b b b b b = (5) 则发送码组与接收码组之差为
E A B =- (6)
E 就是传输中产生的错码行矩阵
][0123456e e e e e e e E = (7)