搜索
您的当前位置:首页正文

汉明码的性能分析

2022-02-21 来源:星星旅游
课程设计任务书

学生姓名: 专业班级: 通信0906班 指导教师: 尹勇 工作单位: 信息工程学院

题 目:汉明码的性能分析

初始条件:

MATLAB软件,电脑,通信原理知识

要求完成的主要任务:

输入信号:速率为100Bd的矩形信号 信道:AWGN

要求:画出编码器输入、输出信号,信道的输出信号,译码器的输出信号的波形、

频谱以及误码率与译码器输入信噪比的关系曲线

参考书目:

徐明远主编《MATLAB仿真在通信与电子工程中的应用》 王兴亮主编《数字通信原理与技术》 孙屹 吴磊主编《Simulink通信仿真开发手册》 葛哲学主编《精通MATLAB》 樊昌信 曹丽娜主编《通信原理》

时间安排:

第1周,安排任务(鉴主15楼实验室)

第1-17周,仿真设计(鉴主13楼计算机实验室) 第18周,完成(答辩,提交报告,演示)

指导教师签名:

年 月 日

系主任(或责任教师)签名:

年 月 日

武汉理工大学《MATLAB应用》课程设计报告

目 录

摘要 .................................................................................................................................................. 3 Abstract ............................................................................................................................................. 4 1.引言 .............................................................................................................................................. 5 2.设计原理........................................................................................................................................ 6

2.1汉明码编码原理 ................................................................................................................ 6 2.2汉明码纠错原理 ................................................................................................................ 8 2.3程序函数及命令介绍 ........................................................................................................ 9 3.仿真与程序 ............................................................................................................................... 11

3.1仿真 .................................................................................................................................. 11

3.1.1 SIMULINK仿真 ................................................................................................ 11 3.1.2 模块属性设置 ..................................................................................................... 12 3.1.3 M文件程序 ........................................................................................................ 14 3.1.4仿真结果 .............................................................................................................. 15 3.1.5调试 ...................................................................................................................... 20 3.1.6结果分析 .............................................................................................................. 20 3.2程序 .................................................................................................................................. 20

3.2.1程序 ...................................................................................................................... 20 3.2.2调试结果 .............................................................................................................. 21 3.2.3结果分析 .............................................................................................................. 22

4.总结 ............................................................................................................................................ 23 参考文献......................................................................................................................................... 24

2

武汉理工大学《MATLAB应用》课程设计报告

摘要

随着信息时代和数字世界的到来,通信原理已成为当今一门极其重要的学科和技术领域。在通信原理中起着重要的作用并已获得广泛应用的是汉明码。汉明码是一种能够自动检测并纠正一位错码的线性纠错码,即SEC码,用于信道编码与译码中,提高通信系统抗干扰的能力。

MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。它是美国的MathWorks公司推出的一套用于科学计算和图形处理可视化、高性能语言与软件环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。在设计汉明码建模仿真时,通常采用MATLAB来进行辅助设计和仿真。

本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。在此基础上,对汉明码的性能进行分析,得出结论。

关键词:通信原理 MATLAB 汉明码 SIMULINK

3

武汉理工大学《MATLAB应用》课程设计报告

Abstract

With the information age and the advent of the digital world, communication principles has become an extremely important disciplines and technical fields. In communication principles plays an important role and has been widely used in Hamming Code. Hamming Code is a linear error-correcting code which can automatically detect and correct an error. It is belongs to SEC code and applied to channel encoding and decoding to improve the anti-jamming capacity of the communication system.

MATLAB is in English MATrix LABoratory (Matrix Laboratory) acronym. It is the United States, MathWorks has introduced a set of computing and graphics processing for scientific visualization, high-performance language and software environment. Its signal processing toolbox contains a variety of classic and modern digital signal processing technology, is a very good algorithm research and aided design tools. In the design ofhamming code model to simulate , it is usually carried out using MATLAB-aided design and simulation.

In this paper, SIMULINK simulation model library of MATLAB is mainly used to build hamming code model to simulate. At the same time, communication system functions is called to program. And time-domain waveform, spectrum, the relationship between BER and SNR curve is drawn. On this basis, the property of the hamming code is analyzed to get the conclusion.

Keywords:Communication Principles MATLAB Hamming Coding SIMULINK

4

武汉理工大学《MATLAB应用》课程设计报告

1.引言

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,其中,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。主要包括MATLAB和Simulink两大部分。

MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/解码函数、纠错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。以纠错控制编解码函数为例:函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED—SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。

Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。

汉明码是由Hamming首先构造的,它是一种能够自动检测并纠正一重错的线性纠错码,即SEC(Single Error Correcting)码。汉明码利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。它不仅性能好,而且编译码电路非常简单,易于实现。从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。

5

武汉理工大学《MATLAB应用》课程设计报告

2.设计原理

2.1汉明码编码原理

一般来说,若汉明码长为n,信息位数为k,则监督位数r=n-k。若希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求

rr221n 或1kr1 (公式2-1)

下面以(7,4)汉明码为例说明原理:

设汉明码(n,k)中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r≥3。若取r=3,则n=k+r=7。我们用a6a5a4a3a2a1a0来表示这7个码元,用的值表示3个监督关系式中的校正子,则可以规定如表2-1所列。

表2-1 校正子和错码位置的关系

s1s2s3s1s2s3的值与错误码元位置的对应关系

s1s2s3 错码位置 a0a1a2a3 s1s2s3 错码位置 a4a5a6 001 101 010 100 011 110 111 000 无错码 则由表1可得监督关系式:

s1a6a5a4a2 (公式2-2) (公式2-3) (公式2-4)

s2a6a5a3a1s3a6a4a3a0在发送端编码时,信息位

a6a5a4a3的值决定于输入信号,因此它们是随机的。

监督位

a2、

a1、

a0应根据信息位的取值按监督关系来确定,即监督位应使式(2)

s3~式(4)中

s1、

s2、

的值为0(表示编成的码组中应无错码)

6

武汉理工大学《MATLAB应用》课程设计报告

a6a5a4a20a6a5a3a10aaaa04306 (公式2-5)

式(5)经过移项运算,接触监督位

a2a6a5a4a1a6a5a3aaaa6430 (公式2-6)

式(5)其等价形式为:

a6a51110100a401101010a031011001a20a1a0式(6)还可以简记为

(公式2-7)

TTT H•A0或A•H0 (公式2-8)

其中

1110100H11010101011001

Aa6a5a4a3a2a1a0

0000

1110100010P1101Ir1011 001 所以有

HPIr式(6)等价于

(公式2-9)

a2a1a0a6a5a4111110a6a3101011a5a4a3Q

(公式2-10)

7

武汉理工大学《MATLAB应用》课程设计报告

TQP其中Q为P的转置,即 (公式2-11)

式(10)表示,在信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。

我们将Q的左边加上一个k×k阶单位方阵,就构成一个矩阵G

10kGIQ00010000100001111011011011 (公式2-12)

G称为生成矩阵,因为由它可以产生整个码组,即有

a6a5a4a3a2a1a0a6a5a4a3•G (公式2-13)

或者

Aa6a5a4a3•G (公式2-14)

式(13)即汉明码的编码原理

2.2汉明码纠错原理

当数字信号编码成汉明码形式后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。

一般来说接收码组与A不一定相同。若设接收码组为一n列的行矩阵B,即

Bb6b5b4b3b2b1b0 (公式2-15)

则发送码组和接收码组之差为

BAE (公式2-16)

E就是传输中产生的错码行矩阵

Ee6e5e4e3e2e1e0 (公式2-17)

若ei=0,表示接收码元无错误,若ei=1,则表示该接收码元有错。式(16)可改写成

8

武汉理工大学《MATLAB应用》课程设计报告

BAE (公式2-18)

若E=0,即接收码组无错,则BAEA,将它代人式(8),该是仍成立,即有

B•HT0 (公式2-19)

当接收码组有错时,E≠0,将B带入式(8)后,该式不一定成立。在未超过检错能力时,式(19)不成立。假设此时式(19)的右端为S,即

B•HTS (公式2-20)

将 BAE代入式(20),可得

S(AE)HTA•HTE•HT 由式(8)可知,所以

SE•HT (公式2-21)

此处S与前面的

s1s2s3有着一一对应关系,则S能代表错码位置。

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

2.3程序函数及命令介绍

MATLAB中提供了汉明码的编码和译码函数,本程序直接调用进行编程。 (1)encode函数 功能:编码函数

语法:code=encode(msg,N,K)

说明:对信息msg进行汉明编码,K为信息位长度,N为码字长度。msg是一个K列矩阵。 (2)decode函数 功能:译码函数

语法:rcvcode=decode(code,N,K)

说明:对接受码字进行译码,恢复出原始信息。 (3)rand函数

9

武汉理工大学《MATLAB应用》课程设计报告

功能:均匀分布随机矩阵 用法:rand(m,n),

说明:产生m×n均匀分布的随机矩阵,rand产生的是0到1(不包括1)的伪随机数。 (4)rem函数

功能:求整除余数 用法:rem(x,y) 说明:求整除x/y的余数

(5)length命令:计算向量或矩阵长度 (6)sim命令:开始进行仿真 (7)disp命令:显示结果,不显示变量名

10

武汉理工大学《MATLAB应用》课程设计报告

3.仿真与程序

3.1仿真

3.1.1 SIMULINK仿真

在设计中,本系统信号产生模块选用伯努利二进制序列产生器(Bernoulli Binary Generator)来输出速率为100Bd的随机数字信号,进入Hamming encoder进行编码,在送入AWGN信道(加入高斯白噪声)传输,接收信号送入Hamming decoder进行差错纠正,其后加一误码率计算模块(Error Rate Calculation)计算误码率。再用示波器scope观察波形,用spectrum scope观测频谱。由To Workspace模块将运算结果送入M文件,并画出信噪比与误码率关系的曲线。电路如图3-6所示。

图3-1 SIMULINK仿真电路图

11

武汉理工大学《MATLAB应用》课程设计报告

3.1.2 模块属性设置

图3-2 Bernoulli Binary Generator

图3-3 AWGNA Channel

12

武汉理工大学《MATLAB应用》课程设计报告

图3-4 Error Rate Calculation

图3-5 To Workplace

13

武汉理工大学《MATLAB应用》课程设计报告

图3-6 Spectrum Scope

3.1.3 M文件程序

x=0:30 %定义信噪比的范围 y=x;

for i=1:length(x)

xSNR=x(i); %输入信噪比

sim('hammingmat'); %运行Simulink仿真模型’hammingmat ’,运算结果保存在xerrorrate中

y(i)=xerrorrate(1); %误码率 end

semilogy(x,y); %对y取对数画图 grid on; %画网格图 xlabel('高斯信道中的信噪比/dB'); ylabel('误码率');

title('汉明码误码率与信噪比的关系')

14

武汉理工大学《MATLAB应用》课程设计报告

3.1.4仿真结果

图3-7 Bernoulli Binary Generator输出信号波形

图3-8 Bernoulli Binary Generator输出信号频谱

15

武汉理工大学《MATLAB应用》课程设计报告

图3-9 Hamming Encoder输出信号

图3-10 Hamming Encoder输出信号频谱

16

武汉理工大学《MATLAB应用》课程设计报告

图3-11 AWGN Channel输出信号

17

武汉理工大学《MATLAB应用》课程设计报告

图3-12 AWGN Channel输出信号频谱

图3-13 Hamming decoder输出信号

18

武汉理工大学《MATLAB应用》课程设计报告

图3-14 Hamming decoder输出信号频谱

图3-15 SNR=10dB的误码率

图3-16 输入信噪比与输出误码率的关系曲线图

19

武汉理工大学《MATLAB应用》课程设计报告

3.1.5调试

运行M文件后,画出的信噪比和误码率关系的曲线为一条直线。 调试方法:将误码率计算模块的属性时延由1改为0,将‘to workplace'的属性中的‘limit data points to last’改为1,且sim函数括号中内容应与仿真模块名相同,信道模块的信噪比应该设为变量,才能画出表示信噪比和误码率关系的曲线。

3.1.6结果分析

通过仿真结果可知:

(1)汉明码可以降低误码率,提高系统抗干扰能力。 (2)随着信噪比的增大,误码率逐渐减小,最终趋近于0。

(3)信源信号经过信道加噪声后,频率分量增多,经过译码器译码后,频率分量减少,但还是比信源的多。

3.2程序

3.2.1程序

K=4; %信息位长 N=7; %码长

msg=randint(100,4,2) %产生随机二进制码,100行4列

code=encode(msg,N,K) %对msg汉明编码 code_noise=rem(code+rand(100,7)>0.95,2 ) %信道输出(加噪后>0.95为1)

rcv=decode(code_noise,N,K) %对信道输出信号汉明译码

disp(['信道输出误码率: ' num2str(symerr(code,code_noise)/length(code))])

20

武汉理工大学《MATLAB应用》课程设计报告

disp(['译码器输出信号误码率: ' num2str(symerr(msg,rcv)/length(msg))]) %计算误码率

3.2.2调试结果

图3-17 信源信号 21

3-18 编码器输出信号

图武汉理工大学《MATLAB应用》课程设计报告

图3-19 信道输出信号 图3-20 译码器输出信号

图3-21 误码率

3.2.3结果分析

由实验结果可知在四位信息位中加三位监督码,及汉明码编码、解码,有一定的纠错能力,能减少经过信道加的噪声的的影响,降低误码率,同时,汉明码也增加了传输信号的带宽。

22

武汉理工大学《MATLAB应用》课程设计报告

4.总结

通过本次课程设计,我收获了很多:

一、我对MATLAB软件有了较深的了解,并且学会了SIMULINK仿真的基本方法。这次课程设计是我第一次接触到SIMULINK ,刚开始我无从下手,不知所措,后来经过问同学、去图书馆资查料、上网查资料,逐渐了解了SIMULLINK是MATLAB提供的用于对动态系统进行建模、仿真和分析的工具包,并且学会了它的基本使用方法。并在调试过程不断出错的过程中,不断加强了对SIMULINK的掌握程度,能够将SIMULINK仿真和M文件相结合,分析汉明码信噪比与误码率的关系。

二、本次课程设计锻炼了我独立解决问题的能力。刚看到题目时我一点思路

也没有,到后来,自己不断探索SIMULINK,不断摸索各个模块的使用方法和属性,最后完成了SIMULINK的仿真,整个过程让我学会了发现问题,并独立解决问题的方法,也能更好的利用网络学习知识。

三、本次课程设计让我对差错控制编码有了更深的了解,并且更深刻的理解了通信原理该章节的内容。了解了汉明码的编码、译码,及纠错原理,并能通过matlaB编程和simulink仿真理解了汉明码编码对不同信噪比下误码率的影响。

本次课程设计最重要的是让我学会了独立解决问题的方法,经过不断的学习、出错、调试、改正,锻炼了我的耐心和毅力,让我体会到了不断探索的乐趣,并体会到了付出后得到成功的激动。此次设计也让我发现了我的不足:对matlaB的掌握程度不够,在原来学习后,我对matlaB的许多函数、语句的用法还是不很了解,以后应当多多学习软件,辅助各门专业课的学习,并激发对本专业的学习兴趣。

23

武汉理工大学《MATLAB应用》课程设计报告

参考文献

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

科技大学出版社.2005

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

[3] 孙屹 吴磊.《Simulink通信仿真开发手册》.国防工业出版社.2003 [4] 葛哲学.《精通MATLAB》.电子工业出版社.2008 [5] 樊昌信 曹丽娜.《通信原理》.国防工业出版社.2008

[6] 赵静.《基于MATLAB的通信系统仿真》.北京航空航天大学出版社.2008 [7] 韩利竹 王华.《MATLAB电子仿真与应用》.国防工业出版社.2003

24

附件:

本科生课程设计成绩评定表

姓 名 专业、班级 通信工程0906 性 别 女 课程设计题目: 汉明码的性能分析 课程设计答辩或质疑记录: 成绩评定依据: 最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

年 月 日

因篇幅问题不能全部显示,请点此查看更多更全内容

Top