文档库 最新最全的文档下载
当前位置:文档库 › 通信原理课程设计

通信原理课程设计

通信原理课程设计
通信原理课程设计

长沙理工大学

《通信原理》课程设计报告

学院

业通信工程班级号

学生姓名

课程成绩2016年1月1日

课程设计成绩评定

指导教师对学生在课程设计中的评价

指导教师对课程设计的评定意见

课程设计任务书

计算机与通信工程学院通信工程专业

基于MATLAB/simulink的汉明码编码技术

仿真与性能分析

学生姓名:孙琦指导老师:胡双红

摘要本课程设计主要是仿真通信系统中基带传输信道纠错编码技术中的汉明码编码技术。利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码的仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率。产生一段随机的二进制非归零码的基带信号,对其进行汉明码编码后再送入二进制对称信道传输,在接收端对其进行汉明解码以恢复原信号,观察还原是否成功,改变二进制对称信道的差错率,计算传输前后的误码率,绘制信道差错率-误码率曲线,并与理论曲线比较进行说明。在此基础上,对汉明码的性能进行分析,得出本次课程设计的成果。

关键词通信原理;汉明码;SIMULINK

1引言

MATLAB: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年代出现以来,在提高系统可靠性方面获得了广泛的应用。

2 设计原理

2.1汉明码编码原理

奇偶校验是一种添加一个奇偶位用来指示之前的数据中包含有奇数还是偶数个1的检验方式。如果在传输的过程中,有奇数个位发生了改变,那么这个错误将被检测出来(注意奇偶位本身也可能改变)。一般来说,如果数据中包含有奇数个1的话,则将奇偶位设定为1;反之,如果数据中有偶数个1的话,则将奇偶位设定为0。换句话说,原始数据和奇偶位组成的新数据中,将总共包含偶数个1. 奇偶校验并不总是有效,如果数据中有偶数个位发生变化,则奇偶位仍将是正确的,因此不能检测出错误。而且,即使奇偶校验检测出了错误,它也不能指出哪一位出现了错误,从而难以进行更正。数据必须整体丢弃并且重新传输。在一个噪音较大的媒介中,成功传输数据可能需要很长时间甚至不可能完成。虽然奇偶校验的效果不佳,但是由于他只需要一位额外的空间开销,因此这是开销最小的检测方式。并且,如果知道了发生错误的位,奇偶校验还可以恢复数据。如果一条信息中包含更多用于纠错的位,且通过妥善安排这些纠错位使得不同的出错位产生不同的错误结果,那么我们就可以找出出错位了。在一个7位的信息中,单个数据位出错有7种可能,因此3个错误控制位就足以确定是否出错及哪一位出错了。

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

2-1≥n或2-1≥k+r+1

从编码形式上,我们可以发现汉明码是一个校验很严谨的编码方式。在这个例子中,通过对4个数据位的3个位的3次组合检测来达到具体码位的校验与修正目的(不过只允许一个位出错,两个出错就无法检查出来了,这从下面的纠错例子中就能体现出来)。在校验时则把每个汉明码与各自对应的数据位值相加,如果结果为偶数(纠错代码为0)就是正确,如果为奇数(纠错代码为1)则说明当前汉明码所对应的三个数据位中有错误,

2.2汉明码纠错原理

汉明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。

汉明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是1就变成0,原来是0就变成1)来将其纠正。

要采用汉明码纠错,需要按以下步骤来进行:计算校验位数→确定校验码位置→确定校验码→实现校验和纠错。下面来具体介绍这几个步骤。本文先介绍除最后一个步骤的其它几个步骤。

计算校验位数要使用汉明码纠错,首先就要确定发送的数据所需要要的校验码(也就是“汉明码”)位数(也称“校验码长度”)。它是这样的规定的:假设用N表示添加的校验码位,它们之间的关系应满足:N=K+r≤2r-1。

如K=5,则要求2r-r≥5+1=6,根据计算可以得知r的最小值为4,也就是要校验5位信息码,则要插入4位校验码。如果信息码是8位,则要求2r-r≥8+1=9,根据计算可以得知r的最小值也为4。根据经验总结,得出信息码和校验码位数之间的关系如表2-2所示。

表2-2 信息码位数与校验码位数之间的关系

据码(称之为“码字”)共有12位。根据以上介绍的校验码位置分布规则可以得出,这12位编码后的数据就是p1、p2、b1、p3、b2、b3、b4、p4、b5、b6、b7、b8。

现假设原来的8位信息码为10011101,因现在还没有求出各位校验码值,现在这些校验码位都用“?”表示,最终的码字为:??1?001?1101。

确定校验码经过前面的两步,我们已经确定了所需的校验码位数和这些校验码的插入位置,但这还不够,还得确定各个校验码值。这些校验码的值不是随意的,每个校验位的值代表了代码字中部分数据位的奇偶性(最终要根据是采用奇校验,还是偶校验来确定),其所在位置决定了要校验的比特位序列。总的原则是:第i位校验码从当前位开始,每次连续校验i(这里是数值i,不是第i位,下同)位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。最后根据所采用的是奇校验,还是偶校验即可得出第i位校验码的值。

3 仿真与程序

3.1 SIMULINK仿真

在设计中,本系统信号产生模块选用伯努利二进制序列产生器(Bernoulli Binary Generator)来输出速率为100Bit/s的随机数字信号,主要步骤如下:

1.进入Hamming encoder进行编码

2.送入BSC信道传输

3.接收信号送入Hamming decoder进行差错纠正

4.其后加一误码率计算模块(Error Rate Calculation)计算误码率

5.再用示波器scope观察波形,用spectrum scope观测频谱

6.由To Workspace模块将运算结果送入M文件

7.画出信噪比与误码率关系的曲线。

绘制SIMULINK仿真电路图,如图3-1,因为信号为离散型号,示波器(Scope)无法正常出现波形,后经老师指导,加入Unbuffer/buffer,并更换AWGN信道为BSC信道,进行了正确的误码率以及编码器译码器的设置。

图3-1 SIMULINK仿真电路图(更改后可行)

3. 2 模块设置

(1)产生服从伯努利分布的随机二进制序列,模块的输出可以是帧结构的矩阵,也可以是数据流形式的行或列向量或一维数组。二进制伯努利产生器设置如图3-2所示,将”sample time”设为0.01s,即0.01s产生一个码元。

图3-2 Bernoulli Binary Generator参数设置图

(2)对Buffer模块进行设置,因为我们观测的是(7,4)汉明码的编码与解码,故将Buffer输出设为4,即将输入的串行数据转化为4位并行数据输入到汉明码编码模块。如图3-3所示。

相关文档