基于matlab的74汉明码编译码仿真.docx
《基于matlab的74汉明码编译码仿真.docx》由会员分享,可在线阅读,更多相关《基于matlab的74汉明码编译码仿真.docx(20页珍藏版)》请在冰豆网上搜索。
![基于matlab的74汉明码编译码仿真.docx](https://file1.bdocx.com/fileroot1/2023-1/23/f4daff26-8a79-46ad-b8f7-1acd85148ab6/f4daff26-8a79-46ad-b8f7-1acd85148ab61.gif)
基于matlab的74汉明码编译码仿真
东北大学秦皇岛分校电子信息系
综合课程设计
基于matlab的(7,4汉明码编译仿真
专业名称通信工程
班级学号4090719
学生姓名何云瑞
指导教师李雅珍
设计时间2011.12.19~2012.1.4
课程设计任务书
专业:
通信工程学号:
409719学生姓名(签名:
设计题目:
(7,4汉明码的编码、译码仿真
一、设计实验条件
电子信息创新实验室
二、设计任务及要求
1.了解、掌握汉明码编码、译码原理;
2.用仿真软件对(7.4汉明码进行编码、译码仿真;
3.画出编码后、译码后的信号波形图。
三、设计报告的内容
1.设计题目与设计任务(设计任务书
2.前言(绪论(设计的目的、意义等
3.设计主体(各部分设计内容、分析、结论等
4.结束语(设计的收获、体会等
5.参考资料
四、设计时间与安排
1、设计时间:
2周
2、设计时间安排:
熟悉实验设备、收集资料:
天
设计图纸、实验、计算、程序编写调试:
天
编写课程设计报告:
天
答辩:
天
摘要.......................................................................................................................................................................I
1.引言0
2.设计原理(1
2.1汉明码编码原理(1
2.2汉明码纠错原理(3
3.程序与SIMULINK仿真(5
3.1程序(5
3.1.1程序函数介绍(5
3.1.2主程序(5
3.1.3调试结果(6
3.2SIMULINK仿真(7
3.2.1SIMULINK电路图(7
3.2.2m文件程序(8
3.2.3模块参数设置(8
3.2.3仿真波形(10
3.2.4仿真结果分析(14
4.总结(15
参考文献(16
摘要
汉明码(HammingCode是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(SingleErrorCorrecting码,用于信道编码与译码中,提高通信系统抗干扰的能力。
本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。
在此基础上,对汉明码的性能进行分析,得出结论。
关键词:
MATLAB汉明码SIMULINK性能
I
1.引言
MATLAB(MatrixLaboratory,矩阵实验室是Mathwork公司推出的一套高效率的数值计算和可视化软件。
其中,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。
MATIAB通信工具箱由两大部分组成:
通信系统功能函数库和SIMULINK通信系统仿真模型库。
MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。
这些函数包括:
信号源产生函数、信源编码/解码函数、纠错控制编码/解码函数、调制/解调函数(基带和通带、滤波器函数、传输信道模型函数(基带和通带、TDMA、FDMA、CDMA函数、同步函数、工具函数等。
以纠错控制编解码函数为例:
函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED—SOLOMON、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。
在SIMULINK通信系统仿真模型库中,整个通信系统的流程图被概括为:
信号的产生与输出、编码与解码、调制与解调。
在SIMULINK中,通信系统仿真的一般模型如图1所示。
图1通信系统仿真模型
2.设计原理
2.1汉明码编码原理
一般来说,若汉明码长为n,信息位数为k,则监督位数r=n-k。
若希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求
21rn-≥或211r
kr-≥++(1
下面以(7,4汉明码为例说明原理:
设汉明码(n,k中k=4,为了纠正一位错码,由式(1可知,要求监督位数r≥3。
若取r=3,则n=k+r=7。
我们用6543210aaaaaaa来表示这7个码元,用123sss的
值表示3个监督关系式中的校正子,则123sss的值与错误码元位置的对应关系可以
规定如表1所列。
表1校正子和错码位置的关系
则由表1可得监督关系式:
16542saaaa=⊕⊕⊕(2
2653saaaa=⊕⊕⊕(336430saaaa=⊕⊕⊕(4
在发送端编码时,信息位6543aaaa的值决定于输入信号,因此它们是随机的。
监督位2a、1a、0a应根据信息位的取值按监督关系来确定,即监督位应使式(2~式(4中1s、2s、3s的值为0(表示编成的码组中应无错码
654265316
430000
aaaaaaaaaaaa⊕⊕⊕=⎧⎪
⊕⊕⊕=⎨⎪⊕⊕⊕=⎩(5
式(5经过移项运算,接触监督位
2654
16530
643aaaaaaaaaaaa
=⊕⊕⎧⎪
=⊕⊕⎨⎪=⊕⊕⎩(6
式(5其等价形式为:
6543210111010001101010010110010aaaaaaa⎡⎤
⎢⎥⎢⎥
⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
⎢⎥⎢⎥⎢⎥⎣⎦(7
式(6还可以简记为
0TTHA∙=或0T
AH∙=(8
其中
111010011010101011001H⎡⎤
⎢⎥=⎢⎥
⎢⎥⎣⎦[]654321
0Aaaaaaaa=
[]00
0=
111011011011P⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦
1
0001
000
1rI⎡⎤⎢⎥=⎢
⎥⎢⎥⎣⎦
所以有
[]
rHPI=(9
式(6等价于
[][][]2106
54
3654
3111110101011aaaaaaaaaaaQ
⎡⎤⎢⎥
⎢
⎥==⎢⎥⎢⎥⎣⎦
(10
其中Q为P的转置,即
TQP=(11
式(10表示,信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。
我们将Q的左边加上一个k×k阶单位方阵,就构成一个矩阵G
100011101001100
0101010
00101
1kGIQ⎡⎤⎢⎥⎢⎥⎡⎤==⎣⎦⎢⎥⎢⎥
⎣⎦(12
G称为生成矩阵,因为由它可以产生整个码组,即有
[][]65432106543aaaaaaaaaaaG=∙(13
或者
[]6
5
4
3AaaaaG
=∙(14
式(13即汉明码的编码原理2.2汉明码纠错原理
当数字信号编码成汉明码形式(本文中即A后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。
一般来说接收码组与A不一定相同。
若设接收码组为一n列的行矩阵B,即[]
6543210Bbbbbbbb=
(15
则发送码组和接收码组之差为
BAE-=(16
E就是传输中产生的错码行矩阵[]
6543210Eeeeeeee=(17
若ei=0,表示接收码元无错误,若ei=1,则表示该接收码元有错。
式(16可改写成
BAE=+(18
若E=0,即接收码组无错,则BAEA=+=,将它代人式(8,该是仍成立,即有
0TBH∙=(19
当接收码组有错时,E≠0,将B带入式(8后,该式不一定成立。
在未超过检错能力时,式(19不成立。
假设此时式(19的右端为S,即
TBHS
∙=
(20
将BAE=+代入式(20,可得
(TTTSAEHAHEH=+=∙+∙由式(8可知,所以
TSEH=∙(21
此处S与前面的
123sss有着一一对应关系,则S能代表错码位置。
因此,纠错原理即,接收端收到码组后按式(20计算出S,再根据表1判断错码情况,进行差错纠正。
3.程序与SIMULINK仿真
3.1程序
3.1.1程序函数介绍
MATLAB中提供了汉明码的编码和译码函数,本程序直接调用进行编程。
①encode函数
功能:
编码函数
语法:
code=encode(msg,N,K
说明:
该函数对二进制信息msg进行汉明编码,K为信息位长度,N为码字长度。
msg是一个K列矩阵。
②decode函数
功能:
译码函数
语法:
rcvcode=decode(code,N,K
说明:
该函数对接受码字进行译码,恢复出原始信息,译码参数及方式必须和编码时采用的完全相同。
③hammgen函数
功能:
汉明码生成矩阵和校验矩阵产生函数
语法:
H=hammgen(M
[H,G]=hammgen(M
[H,G,N,K]=hammgen(M
说明:
该函数的功能是产生生成矩阵和校验矩阵,其中M=N-K为校验位的长度,H为汉明码的校验矩阵,G为汉明码的生成矩阵。
3.1.2主程序
K=4;
N=7;
msg=randint(200,4,2%信息产生
code=encode(msg,N,K%汉明编码code_noise=rem(code+rand(200,7>0.95,2%加噪声rcv=decode(code_noise,N,K%汉明译码disp(['Errorrateinthereceivedcode:
'
num2str(symerr(code,code_noise/length(code]
disp(['Errorrateafterdecode:
'num2str(symerr(msg,rcv/length(msg]%计算误码率
3.1.3调试结果
3.2SIMULINK仿真
本系统由信号产生模块、信号汉明编码模块、AWGN信道、信号汉明译码模块、误码率计算模块组成,在图形观察模块还包括频谱仪和示波器。
3.2.1SIMULINK电路图
在设计中,本系统信号产生模块选用伯努利二进制序列产生器(BernoulliBinaryGenerator来输出速率为100Bd的随机数字信号,进入Hammingencoder进行编码,在送入AWGN信道(加入高斯白噪声传输,接收信号送入Hammingdecoder进行差错纠正,其后加一误码率计算模块(ErrorRateCalculation计算误码率。
再用示波器scope观察波形,用spectrumscope观测频谱。
电路如图2所示。
图2SIMULINK仿真电路图
由于要绘制Hammingdecoder模块输入信噪比与输出误码率的关系曲线图,所以将SNR设置成一个变量,通过ratio文件编程绘制误码率曲线图。
3.2.2ratio文件程序
x=0:
20%定义信噪比的范围
y=x;
fori=1:
length(x
xSNR=x(i;%输入信噪比
sim('fangzhen';%运行’fangzhen’SIMULINK仿真文件y(i=xErrorRate(1;%误码率
end
semilogy(x,y;
gridon;
xlabel('高斯信道中的信噪比/dB';
ylabel('误码率';
3.2.3模块参数设置
图3BernoulliBinaryGenerator
图4AWGNAChannel
图5ErrorRateCalculation
图6ToWorkplace图7SpectrumScope
3.2.3仿真波形
图8BernoulliBinaryGenerator输出信号波形
图9BernoulliBinaryGenerator输出信号频谱
图10HammingEncoder输出信号
图11HammingEncoder输出信号频谱
图12AWGNChannel输出信号
图13AWGNChannel输出信号频谱
图14Hammingdecoder输出信号
图15Hammingdecoder输出信号频谱
图16SNR=10dB的误码率
图17输入信噪比与输出误码率的关系曲线图
3.2.4仿真结果分析
通过结果可知,汉明码可以降低误码率,提高系统抗干扰能力。
在SIMULINK仿真中,利用ratio文件编程绘制误码率函数曲线近似于一条直线,但是若直接控制AWGN参数模块的SNR,误码率发生变化,比较奇怪,不明白。
4.总结
这次通信原理课程设计的题目是汉明码的编码、译码的仿真。
通过到图书馆查阅相关的资料,得知汉明码的编码、译码仿真可以用FPGA和MATLAB来做。
为了尽可能多地学到知识,我们选择了一组用FPGA,另一组用MATLAB。
因为之前并没有接触过MATLAB中的SIMULINK,所以在画原理图和设置参数的时候遇到了不少困难。
但好在网上可借鉴的资源很多,通过学习相关的教程和查阅MATLAB中的help,这些困难都迎刃而解了。
这其中我深刻地体会到专业英语的重要性。
可想而知,多积累点英语对今后的工作、学习将有极大的帮助。
通过本次学习,我再一次体会到MATLAB的强大。
丰富的库函数、强大的数据处理能力,出色的绘图功能,友好的工作平台,简单一用的操作语言等等,这些优点都促使MATLAB成为数学处理软件发展史上的巅峰之作。
这激发了我之后学习MATLAB的决心。
知识的构架是千枝交错的。
学到大学,知识之间相互渗透的现象可谓比比皆是,这启发我们不仅要发散思维的领域,也要拓宽知识的领域。
对与本专业相关的领域多加了解百利而无一害。
最后,还是那句话,实践出真知。
在渴望知识的道路上,用双脚探索出来的路才是你自己的路。
我还将上下左右而求索。
参考文献[1]葛哲学.精通MATLAB.北京:
电子工业出版社,2008年.[2]樊昌信,曹丽娜.通信原理.北京:
国防工业出版社,2008年.[3]赵静.基于MATLAB的通信系统仿真.北京:
北京航空航天大学出版社,2008年.[4]韩利竹,王华.MATLAB电子仿真与应用.北京:
国防工业出版社,2003年.16