当前位置:文档之家› 汉明码

汉明码

科信学院通信系统仿真二级项目设计说明书(2013/2014学年第二学期)课程名称:通信系统仿真二级项目题目:基于M语言的数字通信仿真—采用Hamming码技术专业班级:通信工程12-02班学生姓名:学号:指导教师:设计周数:1周设计成绩:2014年6月25日目录1、设计目的和意义 (2)2、设计原理 (3)2.1 汉明编码 .................................................... 错误!未定义书签。

2.1.1汉明码编码...................................................................................... 错误!未定义书签。

2.1.2 汉明码的定义: (3)2.1.3 汉明码的构造特点: (3)2.1.4 汉明码编码的主要算法 (3)2.1.5 汉明码的编码原理 (4)2.1.6 汉明码的纠错原理 (6)2.2高斯噪声原理................................................... 错误!未定义书签。

3、Matlab仿真实现 (12)3.1 仿真思路 (12)3.2仿真详细过程及图形分析 ........................... 错误!未定义书签。

3.3 仿真结果分析 .............................................. 错误!未定义书签。

4、设计心得体会 (21)5、参考文献 (21)1、设计目的和意义技术要求及原始数据:1)对数字通信系统主要原理和技术进行研究,包括Hamming编码技术和高斯噪声信道原理等。

2)建立完整的基于Hamming码技术的通信系统仿真模型。

3)对系统进行仿真、分析。

主要任务:1)建立数字通信系统模型。

2)利用Matlab的m语言建立数字通信系统仿真模型。

3)对通信系统进行时间流上的仿真,得到仿真结果。

4)将仿真结果与理论进行比较、分析。

2、设计原理2.1 汉明编码2.1.1汉明码编码Hamming码中文称作汉明码。

汉明码是由汉明于1950年提出的,具有纠正一位错误能力的线性分组码它的突出特点是:编译码电路简单,易于硬件实现;用软件实现编译码算法时,软件效率高;而且性能比较好.2.1.2 汉明码的定义:若一致监督矩阵H 的列是由不全为0且互不相同的所有二进制m(m≥2的正整数)重组成,则由此H矩阵得到的线性分组码称为[2m-1,2m-1-m,3]汉明码。

2.1.3 汉明码的构造特点:1).绐定一个m,我们由二进制m 重组成线性分组码的监督矩阵H,由二进制m重来标定一个发生错误的位置。

由此可知,二进制m 重共有2 种位组合,去掉一个全为0的位组合,则余下共有2m-1种位组合。

故汉明码的最大码长n=2m-1。

2).由上面分析,我们可以知道:m 即是汉明码监督位的位数。

故一个汉明码中,信息位的位数k=n—m=2m-1-m3).汉明码的距离为3,因此可以纠正1位错误,检出2位错误。

2.1.4 汉明码编码的主要算法汉明码的编码就是如何根据信息位数k,求出纠正一个错误的监督矩阵H,然后根据H求出信息位所对应的码字。

构造汉明码监督矩阵H的方法很多,这里仅介绍一种。

1)根据已知的信息位数k,从汉明不等式中求出校验位数m=n-k;2)在每个码字C:(C1,C2,⋯,C2m -1)中,用c02,c12,c n-12作为监督位,剩下的位作为信息位;3)用二进制数字表示2m-1 列,得到2m-1列和m 行监督矩阵H ; 4)用3步的H 形成HC T=0,从而得出m 个监督方程;5)将已知的信息代入方程组,然后求出满足上述方程组的监督位c (i=0,1,⋯ ,m 一1)。

例如,用以上方法,很容易求出[7,4,3]汉明码的监督矩阵:1 1 1 0 1 0 0 H= 1 1 0 1 0 1 0 1 0 1 1 0 0 1及编码所对应的码字为C=011001。

2.1.5 汉明码的编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。

若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)下面以(7,4)汉明码为例说明原理:设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。

若取r=3,则n=k+r=7。

我们用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。

表1 校正子和错码位置的关系则由表1可得监督关系式: 16542s a a a a =⊕⊕⊕()226531s a a a a =⊕⊕⊕()336430s a a a a =⊕⊕⊕()4在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、a 应根据信息位的取值按监督关系来确定,即监督位应使式(2)~式(4)中1s 、2s 、3s 的值为0(表示编成的码组中应无错码)654265316430000a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩ (5)式(5)经过移项运算,接触监督位265416530643a a a a a a a a a a a a=⊕⊕⎧⎪=⊕⊕⎨⎪=⊕⊕⎩ (6)式(5)其等价形式为:6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(7)式(6)还可以简记为0T T H A •=或0TA H •= (8) 其中111010011010101011001H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦[]6543210A a a a a a a a =[]0000=111011011011P ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦100010001r I ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦ 所以有[]r H PI = (9)式(6)等价于[][][]21065436543111110101011a a a a a a a a a a a Q⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦(10)其中Q 为P 的转置,即T Q P = (11)式(10)表示,信息位给定后,用信息位的行矩阵乘矩阵Q 就产生出监督位。

我们将Q 的左边加上一个k ×k 阶单位方阵,就构成一个矩阵G1000111010011000101010001011k G I Q ⎡⎤⎢⎥⎢⎥⎡⎤==⎣⎦⎢⎥⎢⎥⎣⎦(12)G 称为生成矩阵,因为由它可以产生整个码组,即有[][]65432106543a a a a a a a a a a a G =• (13)或者[]6543A a a a a G=• (14)式(13)即汉明码的编码原理2.1.6 汉明码的纠错原理当数字信号编码成汉明码形式(本文中即A )后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。

一般来说接收码组与A 不一定相同。

若设接收码组为一n 列的行矩阵B ,即[]6543210B b b b b b bb = (15)则发送码组和接收码组之差为B A E -= (16)E 就是传输中产生的错码行矩阵[]6543210E e e e e e e e = (17)若e i =0,表示接收码元无错误,若e i =1,则表示该接收码元有错。

式(16)可改写成B A E =+ (18)若E=0,即接收码组无错,则B A E A =+=,将它代人式(8),该是仍成立,即有0T B H •= (19)当接收码组有错时,E ≠0,将B 带入式(8)后,该式不一定成立。

在未超过检错能力时,式(19)不成立。

假设此时式(19)的右端为S,即T B H S •= ()20将 B A E =+代入式(20),可得()T T T S A E H A H E H =+=•+•由式(8)可知,所以T S E H =• ()21此处S 与前面的123s s s 有着一一对应关系,则S 能代表错码位置。

因此,纠错原理即,接收端收到码组后按式(20)计算出S,再根据表1判断错码情况,进行差错纠正。

2.2高斯噪声原理高斯过程又称为随机过程,它的一维概率密度函数为:概率密度221()()exp 22X x a p x σπσ⎡⎤-=-⎢⎥⎣⎦。

式中,σ > 0, a = 常数。

概率密度曲线:正态分布的概率密度特征:(1)p(x)对称于直线 x = a ,即有:()()p a x p a x +=-(2)p(x)在区间(-∞, a)内单调上升,在区间(a, ∞)内单调下降,并且在点a 处达到其极大值1/(2)πσ。

当x → - ∞或 x → + ∞时,p(x) → 0。

(3)()1p x dx ∞-∞=⎰;()()1/2a ap x dx p x dx ∞-∞==⎰⎰(4)若a = 0, σ = 1,则称这种分布为标准化正态分布:21()exp22x p xπ⎡⎤=-⎢⎥⎣⎦3、Matlab仿真实现3.1 (7,4)汉明码的编码思路(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。

根据式(2.2.0)A= [a6a5a4a3] ·G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(1.1.9)得1 0 0 0 1 1 1G = 0 1 0 0 1 1 00 0 1 0 1 0 10 0 0 1 0 1 1所以,可以得出如下方程组a6 = a6a5= a5a4= a4a3= a3(2.2.1)a2= a6+ a5+ a4a1= a6+ a5+ a3a= a6+ a4+ a3根据式(2.2.1)就可以编出编码程序了。

3.2 (7,4)汉明码的编码程序设计根据(7,4)汉明码的编码原理,首先画出程序设计的流程图:图 6 编码流程图输入信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。

首先,输入信息码a3a2a1a0,即使用以下语句:port(a:in std_logic_vector(3 downto 0);然后,根据式(2.2.1),就可以得到监督位与信息码之间的对应关系,使用异或运算,即:b(6)<=a(3);b(5)<=a(2);b(4)<=a(1);b(3)<=a(0);b(2)<=a(3) xor a(2) xor a(1);b(1)<=a(3) xor a(2) xor a(0);b(0)<=a(3) xor a(1) xor a(0);最后,将算好的监督位与原来输入的信息一起输出,就是编码结束了。

相关主题