1、武汉理工大学MATLAB课程设计说明书东北大学秦皇岛分校电子信息系综合课程设计基于 matlab 的(7,4)汉明码编译仿真专业名称 通 信 工 程班级学号 4090719学生姓名 何 云 瑞指导教师 李 雅 珍设计时间 2011.12.192012.1.4武汉理工大学MATLAB课程设计说明书课程设计任务书专业:通信工程 学号:409719 学生姓名(签名): 设计题目:(7,4)汉明码的编码、译码仿真一、设计实验条件电子信息创新实验室二、设计任务及要求1. 了解、掌握汉明码编码、译码原理;2. 用仿真软件对(7.4)汉明码进行编码、译码仿真;3. 画出编码后、译码后的信号波形图。三、设计报
2、告的内容1. 设计题目与设计任务(设计任务书)2. 前言(绪论)(设计的目的、意义等)3. 设计主体(各部分设计内容、分析、结论等)4. 结束语(设计的收获、体会等)5. 参考资料四、设计时间与安排1、设计时间: 2 周2、设计时间安排: 熟悉实验设备、收集资料: 天设计图纸、实验、计算、程序编写调试: 天编写课程设计报告: 天答辩: 天武汉理工大学MATLAB课程设计说明书目 录摘要 I1引言 .12.设计原理 22.1 汉明码编码原理 .222 汉明码纠错原理 43程序与 SIMULINK 仿真 63.1 程序 .63.1.1 程序函数介绍 63.1.2 主程序 .63.1.3 调试结果
3、73.2 SIMULINK 仿真 .83.2.1 SIMULINK 电路图 83.2.2 m 文件程序 .93.2.3 模块参数设置 .93.2.3 仿真波形 113.2.4 仿真结果分析 154.总结 16参考文献 .17I摘要汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码,用于信道编码与译码中,提高通信系统抗干扰的能力。本文主要利用 MATLAB 中 SIMULINK 通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。在此基础上,对
4、汉明码的性能进行分析,得出结论。关键词:MATLAB 汉明码 SIMULINK 性能1引言MATLAB(Matrix Laboratory,矩阵实验室)是 Mathwork 公司推出的一套高效率的数值计算和可视化软件。其中,MATLAB 通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。MATIAB通信工具箱由两大部分组成:通信系统功能函数库和 SIMULINK 通信系统仿真模型库。MATLAB 通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码解码函数、纠错控制编码解
5、码函数、调制解调函数(基带和通带) 、滤波器函数、传输信道模型函数(基带和通带) 、TDMA、FDMA 、CDMA 函数、同步函数、工具函数等。以纠错控制编解码函数为例:函数库提供了线性分组码、汉明码、循环码、BCH 码、里德一索洛蒙码(REED SOLOMON) 、卷积码等 6 种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。在 SIMULINK 通信系统仿真模型库中,整个通信系统的流程图被概括为:信号的产生与输出、编码与解码、调制与解调。在 SIMULINK 中,通信系统仿真的一般模型如图 1 所示。 Source信源Source Coding信源编
6、码Error Control Coding纠错控制编码Modulation调制Multiple Access多址复用Transmitter/Filter发射机/滤波器Channel 信道Receiver/Filter接收机/滤波器Multiple Access多址复用Demodulation解调Error Control Decoding纠错控制解码Source Decoding信源解码Sink输出1图 1 通信系统仿真模型2.设计原理2.1 汉明码编码原理一般来说,若汉明码长为 n,信息位数为 k,则监督位数 r=n-k。若希望用 r个监督位构造出 r 个监督关系式来指示一位错码的 n 种可
7、能位置,则要求或 21r21rr(1)下面以(7,4)汉明码为例说明原理: 设汉明码(n,k)中 k=4,为了纠正一位错码,由式(1)可知,要求监督位数 r3。若取 r=3,则 n=k+r=7。我们用 来表示这 7 个码元,用6543210a的值表示 3 个监督关系式中的校正子,则 的值与错误码元位置的对123s s应关系可以规定如表 1 所列。表 1 校正子和错码位置的关系123s错码位置 123s错码位置001 0a101 4a010 1 110 5100 2 111 6011 3a000 无错码则由表 1 可得监督关系式:6542sa231a336404在发送端编码时,信息位 的值决定于
8、输入信号,因此它们是随机的。653监督位 、 、 应根据信息位的取值按监督关系来确定,即监督位应使式(2)2a10式(4)中 、 、 的值为 0(表示编成的码组中应无错码) s32654231640aa (5)式(5)经过移项运算,接触监督位265413064aa (6)式(5)其等价形式为:6543210100aa(7)式(6)还可以简记为或 0THAT(8)其中10106543210Aaa01P01rI所以有rHI (9)式(6)等价于2106543654310aaaaaQ(10)其中 Q 为 P 的转置,即3TQP(1)式(10)表示,信息位给定后,用信息位的行矩阵乘矩阵 Q 就产生出监
9、督位。我们将 Q 的左边加上一个 kk 阶单位方阵,就构成一个矩阵 G1010kGI(12)G 称为生成矩阵,因为由它可以产生整个码组,即有65432106543aaaG(3)或者6543A (14)式(13)即汉明码的编码原理22 汉明码纠错原理当数字信号编码成汉明码形式(本文中即 A)后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。一般来说接收码组与 A 不一定相同。若设接收码组为一 n 列的行矩阵 B,即6543210Bb (15)则发送码组和接收码组之差为AE (6)E 就是传输中产生的错码
10、行矩阵6543210e (17)若 ei=0,表示接收码元无错误,若 ei=1,则表示该接收码元有错。式(16)可改写成BAE (18)若 E=0,即接收码组无错,则 ,将它代人式(8) ,该是仍成立,BAE4即有0TBH (19)当接收码组有错时,E0,将 B 带入式(8)后,该式不一定成立。在未超过检错能力时,式(19)不成立。假设此时式(19)的右端为 S,即TS 20将 代入式(20) ,可得BAE()TTTH由式(8)可知,所以TS 21此处 S 与前面的 有着一一对应关系,则 S 能代表错码位置。123s因此,纠错原理即,接收端收到码组后按式(20)计算出 S,再根据表 1 判断错
11、码情况,进行差错纠正。53程序与 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,
12、G=hammgen(M)H,G,N,K=hammgen(M)说明:该函数的功能是产生生成矩阵和校验矩阵,其中M=N-K为校验位的长度,H为汉明码的校验矩阵,G为汉明码的生成矩阵。63.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(Error rate in the received code: num2str(symerr(code,code_no
13、ise)/length(code)disp(Error rate after decode: num2str(symerr(msg,rcv)/length(msg)%计算误码率3.1.3 调试结果73.2 SIMULINK 仿真本系统由信号产生模块、信号汉明编码模块、AWGN信道、信号汉明译码模块、误码率计算模块组成,在图形观察模块还包括频谱仪和示波器。3.2.1 SIMULINK 电路图在设计中,本系统信号产生模块选用伯努利二进制序列产生器(Bernoulli Binary Generator)来输出速率为 100Bd的随机数字信号,进入 Hamming encoder进行编码,在送入AWG
14、N 信道(加入高斯白噪声)传输,接收信号送入Hamming decoder进行差错纠正,其后加一误码率计算模块(Error Rate Calculation)计算误码率。再用示波器scope观察波形,用 spectrum scope观测频谱。电路如图2所示。图2 SIMULINK仿真电路图由于要绘制Hamming decoder模块输入信噪比与输出误码率的关系曲线图,8所以将SNR设置成一个变量,通过ratio文件编程绘制误码率曲线图。3.2.2 ratio 文件程序x=0:20 %定义信噪比的范围 y=x;for i=1:length(x)xSNR=x(i); %输入信噪比sim(fangz
15、hen); %运行fangzhen SIMULINK仿真文件y(i)=xErrorRate(1); %误码率endsemilogy(x,y); grid on;xlabel(高斯信道中的信噪比/dB);ylabel(误码率 );3.2.3 模块参数设置图3 Bernoulli Binary Generator9图4 AWGNA Channel图5 Error Rate Calculation图 6 To Workplace 图 7 Spectrum Scope103.2.3 仿真波形图8 Bernoulli Binary Generator输出信号波形11图9 Bernoulli Binary
16、 Generator输出信号频谱图10 Hamming Encoder输出信号12图11 Hamming Encoder输出信号频谱图12 AWGN Channel输出信号13图13 AWGN Channel输出信号频谱图14 Hamming decoder输出信号14图15 Hamming decoder输出信号频谱图16 SNR=10dB的误码率15图17 输入信噪比与输出误码率的关系曲线图3.2.4 仿真结果分析通过结果可知,汉明码可以降低误码率,提高系统抗干扰能力。在 SIMULINK仿真中,利用 ratio 文件编程绘制误码率函数曲线近似于一条直线,但是若直接控制 AWGN 参数模块
17、的 SNR,误码率发生变化,比较奇怪,不明白。4.总结这次通信原理课程设计的题目是汉明码的编码、译码的仿真。通过到图书馆查阅相关的资料,得知汉明码的编码、译码仿真可以用 FPGA 和 MATLAB 来做。16为了尽可能多地学到知识,我们选择了一组用 FPGA,另一组用 MATLAB。因为之前并没有接触过 MATLAB 中的 SIMULINK,所以在画原理图和设置参数的时候遇到了不少困难。但好在网上可借鉴的资源很多,通过学习相关的教程和查阅 MATLAB 中的 help,这些困难都迎刃而解了。这其中我深刻地体会到专业英语的重要性。可想而知,多积累点英语对今后的工作、学习将有极大的帮助。通过本次学
18、习,我再一次体会到 MATLAB 的强大。丰富的库函数、强大的数据处理能力,出色的绘图功能,友好的工作平台,简单一用的操作语言等等,这些优点都促使 MATLAB 成为数学处理软件发展史上的巅峰之作。这激发了我之后学习 MATLAB 的决心。知识的构架是千枝交错的。学到大学,知识之间相互渗透的现象可谓比比皆是,这启发我们不仅要发散思维的领域,也要拓宽知识的领域。对与本专业相关的领域多加了解百利而无一害。最后,还是那句话,实践出真知。在渴望知识的道路上,用双脚探索出来的路才是你自己的路。我还将上下左右而求索。参考文献1 葛哲学.精通 MATLAB.北京:电子工业出版社 ,2008 年.172 樊昌信,曹丽娜 .通信原理.北京:国防工业出版社,2008 年.3赵静.基于 MATLAB的通信系统仿真 .北京:北京航空航天大学出版社 ,2008年.4韩利竹,王华 .MATLAB电子仿真与应用.北京:国防工业出版社,2003年.