完整word版74汉明码信道编码共10页.docx

上传人:b****6 文档编号:5992071 上传时间:2023-01-02 格式:DOCX 页数:8 大小:70.38KB
下载 相关 举报
完整word版74汉明码信道编码共10页.docx_第1页
第1页 / 共8页
完整word版74汉明码信道编码共10页.docx_第2页
第2页 / 共8页
完整word版74汉明码信道编码共10页.docx_第3页
第3页 / 共8页
完整word版74汉明码信道编码共10页.docx_第4页
第4页 / 共8页
完整word版74汉明码信道编码共10页.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

完整word版74汉明码信道编码共10页.docx

《完整word版74汉明码信道编码共10页.docx》由会员分享,可在线阅读,更多相关《完整word版74汉明码信道编码共10页.docx(8页珍藏版)》请在冰豆网上搜索。

完整word版74汉明码信道编码共10页.docx

完整word版74汉明码信道编码共10页

(7,4)汉明码信道编码

1.课程设计目的

(1)通过利用matlabsimulink,熟悉matlabsimulink仿真工具。

(2)通过课程设计来更好的掌握课本相关知识,熟悉汉明码的纠错与检错方法。

(3)更好的了解通信原理的相关知识,磨练自己分析问题、查阅资料、巩固知识、创新等各方面能力。

2.课程设计要求

(1)掌握课程设计的相关知识、概念清晰。

(2)程序设计合理、能够正确运行。

3.相关知识

3.1汉明码的概念

汉明码是1950年由Hamming首先构造的,它是一种能够自动检测并纠正一重错的线性纠错码,即SEC(SingleErrorCorrecting)码,它不仅性能好,而且编译码电路非常简单,易于实现。

从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。

最先用于磁芯存储器,60年代初用于大型计算机,70年代在MOS存储器中得到应用,后来在中小型计算机中普遍采用,目前常用于RFID系统中多位错误的纠正。

3.2汉明码的校验

与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。

利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。

3.2汉明码的纠错

在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。

在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。

通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。

但这种方法比简单重传协议的成本要高。

汉明码利用奇偶块机制降低了前向纠错的成本。

在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。

在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。

通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。

但这种方法比简单重传协议的成本要高。

汉明码利用奇偶块机制降低了前向纠错的成本。

3.3汉明码的编码方法

设原代码的码长为k比特,附加纠错编码部分为r比特,当码字长度n=2r

-1,r=n-k,r=1,2…时就称这种线性分组码为汉明码。

其基本原理是,将信息码元与监督码元通过线性方程式联系起来,每一个监督位被编在传输码字的特定比特位置上。

系统对于错误的数位无论是原有信息位中的,还是附加监督位中的都能把它分离出来。

信息传输中信道中的噪声干扰不仅使原代码的每一位(k比特)可能出错,而且附加纠错位(比特)也可能出错,故“一个差错”的情况共有k+r种,加上“正常”态共有k+r+1种状态,而r比特的附加纠错位要能分辨这k+r+1种状态。

推导并使用长度为k位码字的汉明码,所需步骤如下:

(1)确定最小的监督位数r,将它们记成D1,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的话,则将奇偶位设定为0。

换句话说,原始数据和奇偶位组成的新数据中,将总共包含偶数个1。

奇偶校验并不十分健壮,如果数据中有偶数个位发生变化,则奇偶位仍将是正确的,因此不能检测出错误。

而且,即使奇偶校验检测出了错误,他也不可以指出哪一位出现了错误,从而进行更正。

数据必须整体丢弃并且重新传输。

在一个噪音较大的媒介中,成功传输数据可能需要很长时间或者不可能完成。

虽然奇偶校验的效果不佳,但是由于他只需要一位额外的空间开销,因此这是开销最小的检测方式。

并且,如果知道了发生错误的位,奇偶校验还可以恢复数据。

4.课程设计分析

4.1(7,4)汉明码信道编码的基本概念

线性分组码是一类重要的纠错码,应用很广泛。

在(n,k)分组码中,若

督元是按线性关系相加而得到的,则称其为线性分组码。

现在以(7,4)分组码为例来说明线性分组码的特点。

设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码,产生监督元:

a2=a6+a5+a4

a1=a6+a5+a3(4.1.1)

a0=a6+a4+a3

显然,这3个方程是线性无关的。

经计算可得(7,4)码的全部码字,如表2-1所示。

表2-1(7,4)码的全部码字

码字

码字

信息码元

监督元

信息码元

监督元

0

0000

000

8

1000

111

1

0001

011

9

1001

100

2

0010

101

10

1010

010

3

0011

110

11

1011

001

4

0100

110

12

1100

001

5

0101

101

13

1101

010

6

0110

011

14

1110

100

7

0111

000

15

1111

111

不难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。

汉明码是能够纠正单个错误的线性分组码,其特点是:

最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。

4.2监督矩阵H

式(4.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表示为

a5

1110100a40

1101010·a3=0(4.2.1)

1011001a20

a1

a0

并简记为H·

=

或A·

=0(4.2.2)

H称为监督矩阵,一旦H给定,信息位和监督位之间的关系也就确定了。

H矩阵可以分成2部分

1110100

H=1101010=[PIr](4.2.3)

1011001

=

,可以用来作为判断接收码字A是否出错的依据。

 

4.3生成矩阵G

把监督方程补充完整并改写为矩阵形式

a61000

a50100

a40010a6

a3=0001·a5(4.3.1)

a21110a4

a11101a3

a01011

A=[a6a5a4a3]·G(4.3.2)

其中

1000111

0100110

G=0010101(4.3.3)

0001011

G称为生成矩阵,由G和信息组就可以产生全部码字。

生成矩阵也可以分成2部分,即G=[IkQ](4.3.4)

其中111

Q=110=

(4.3.5)

101

011

4.4校正子S

设发送码组A=[an—1,an—2,…,a1,a0],在传输过程中可能发生误码。

接收码组B=[bn—1,bn—2,…,b1,b0],收发码组之差定义为错误图样E,即

E=B-A(4.4.1)

令S=BHT,称为伴随式或校正子。

S=

=(A+E)

=E

(4.4.2)

上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。

表2-2(7,4)汉明码S与E的对应关系

错误

码位

E

S

e6e5e4e3e2e1e0

s2s1s0

0

/

0000000

000

1

b0

0000001

001

2

b1

0000010

010

3

b2

0000100

100

4

b3

0001000

011

5

b4

0010000

101

6

b5

0100000

110

7

b6

1000000

111

 

5.仿真

MATLAB进行汉明码信道编码的编程:

clc;

initialseed=71;%AWGN信道的随机种子

inputinitialseed=63;%伯努利二进制生成器的随机种子

inputsampletime=1/1000;%伯努利二进制生成器的样本时间

y=[];

y1=[];

forsnr=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)汉明码信道编码后的误码率改善')

 

代码模块化:

 

 

通过MATLAB软件进行编译,运行结果如图:

 

6.结果分析

由实验结果可以看出:

经(7,4)汉明码信道编码后的误码率改善。

从而可以发现随着信噪比的增加误码率有明显下降的趋势

虽然汉明码在课堂上老师讲过但是对它的理论知识还是不深,但是通过这次试验加深了我对汉明码的理论和认识和理解,也是我懂得如何对一个理论进行自己的研究或验证。

7.参考文献

[1]徐明远邵玉斌编著《MATLAB仿真在通信与电子工程中的应用》

西安电子科技大学出版社,2005

[2]王兴亮编著《数字通信原理与技术》西安电子科技大学出版社第二版   

[3]孙屹吴磊编著《Simulink通信仿真开发手册》国防工业出版社2003

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1