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