实验五汉明码的编译码
- 格式:doc
- 大小:195.00 KB
- 文档页数:14
汉明码编译码实验一、实验目的1、掌握汉明码编译码原理2、掌握汉明码纠错检错原理二、实验内容1、汉明码编码实验。
2、汉明码译码实验。
3、汉明码纠错检错能力验证实验。
三、实验器材LTE-TX-02E通信原理综合实验系统----------------------------------------------模块8四、实验原理在随机信道中,错码的出现是随机的,且错码之间是统计独立的。
例如,由高斯白噪声引起的错码就具有这种性质。
因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。
由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。
为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。
这些监督码元和信码之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。
在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。
不同的编码方法有不同的检错或纠错能力。
有的编码就只能检错不能纠错。
那么,为了纠正一位错码,在分组码中最少要加入多少监督位才行呢?编码效率能否提高呢?从这种思想出发进行研究,便导致汉明码的诞生。
汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。
下面我们介绍汉明码的构造原理。
一般说来,若码长为n,信息位数为k,则监督位数r=n−k。
如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求2r− 1 ≥n 或2r ≥k + r + 1 (14-1)下面我们通过一个例子来说明如何具体构造这些监督关系式。
设分组码(n,k)中k=4,为了纠正一位错码,由式(14-1)可知,要求监督位数r≥3。
若取r=3,则n= k + r =7。
我们用α6α5…α0表示这7个码元,用S1、S2、S3表示三个监督关系式中的校正子,则S1 S2 S3的值与错码位置的对应关系可以规定如表14-1所列。
表14-1由表中规定可见,仅当一错码位置在α2 、α4 、α5 或α6 时,校正子S1 为1;否则S1 为0。
第一章 绪论1.1差错控制编码差错控制编码 1.1 1.1 概述概述数字信号在传输过程中,数字信号在传输过程中,由于受到干扰的影响,由于受到干扰的影响,码元波形将变坏。
码元波形将变坏。
接收端收接收端收到后可能发生错误判决。
到后可能发生错误判决。
由于乘性干扰引起的码间串扰,由于乘性干扰引起的码间串扰,可以采用均衡的办法来可以采用均衡的办法来纠正。
纠正。
而加性干扰的影响则需要用其他办法解决。
而加性干扰的影响则需要用其他办法解决。
在设计数字通信系统时,在设计数字通信系统时,应该应该首先从合理选择调制制度,首先从合理选择调制制度,解调方法以及发送功率等方面考虑,解调方法以及发送功率等方面考虑,使加性干扰不足使加性干扰不足以影响到误码率要求。
在仍不能满足要求时,就要考虑采用差错控制措施了。
从差错控制角度看,按加性干扰引起的错码分布规律不同,信道可以分为3类,即随机信道,突发信道和混合信道。
在随机信道中,错码的出现是随机的,而且错码之间是统计独立的。
而且错码之间是统计独立的。
在突发信道中,在突发信道中,错码是成串集中出现的,错码是成串集中出现的,而且在短而且在短促的时间段之间存在较长的无错码区间。
把既存在随机错码又存在突发错码的的信道称为混合信道。
对于不同类型的信道,应该采用不同的差错控制技术。
1.2 1.2 纠错编码原理纠错编码原理我们把信息码分组,为每组信息码附加若干监督码的编码称为分组码为每组信息码附加若干监督码的编码称为分组码(block (block code).code).在分组码中,在分组码中,监督码元仅监督本码组中的信息码元。
分组码一般用符号(n ,k )表示,其中n 是码组的总位数,又称为码组的长度(码长),k 是码组中信息码元的数目,码元的数目,n-k=r n-k=r 为码组中的监督码元的数目,或者称为监督位数目,分组码的结构如图2示,图中前k 位为信息位,后面附加r 个监督位。
其中a n-1到a r 为k 个信息位,个信息位,a a r-1到a 0为r 个监督位。
汉明码编译码汉明码编译码一设计思想汉明码是一种常用的纠错码,具有纠一位错误的能力。
本实验使用Matlab 平台,分别用程序语言和simulink来实现汉明码的编译码。
用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。
用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。
此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。
二实现流程1.汉明码编译码图 1 汉明码编译码框图1)根据生成多项式,产生指定的生成矩阵G2)产生随机的信息序列M3)由C MG得到码字4)进入信道传输S RH得到伴随式5)计算=T6)得到解码码流7) 得到解码信息序列2.汉明码误码性能分析误码率(SER )是指传输前后错误比特数占全部比特数的比值。
误帧率(FER )是指传输前后错误码字数占全部码字数的比值。
通过按位比较、按帧比较可以实现误码率和误帧率的统计。
3. 构建完整通信系统图 2 完整通信系统框图三 结论分析1. 汉明码编译码编写了GUI 界面方便呈现过程和结果。
输入信息序列Huffman 编码Hamming 编码信道Hamming 译码Huffman 译码输出信息序列噪声图 3 汉明码编译码演示GUI 界面以产生(7,4)汉明码为例说明过程的具体实现。
1)根据生成多项式,产生指定的生成矩阵G用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k100101101011100010111H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦1101000011010011100101010001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦2) 产生随机的信息序列M0010=01000111M ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦3) 由C MG =得到码字010001101101000010111C ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦4) 进入信道传输假设是BSC 信道,错误转移概率设定为0.1传输后接收端得到的码流为000011110100000111101R ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦红色表示错误比特。
汉明码(Hamming)的编码和译码算法本文所讨论的汉明码是一种性能良好的码,它是在纠错编码的实践中较早发现的一类具有纠单个错误能力的纠错码,在通信和计算机工程中都有应用。
例如:在“计算机组成原理”课程中,我们知道当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错。
简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。
如果对汉明码作进一步推广,就得出了能纠正多个错误的纠错码,其中最典型的是BCH码,而且汉明码是只纠1bit错误的BCH码,可将它们都归纳到循环码中。
各种码之间的大致关系显示如下。
一、汉明码的编码算法输入:信源消息u(消息分组u)输出:码字v处理:信源输出为一系列二进制数字0和1。
在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks)。
每个消息分组记为u,由k个信息位组成。
因此共有2k种不同的消息。
编码器按照一定的规则将输入的消息u转换为二进制n 维向量v ,这里n >k 。
此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。
因此,对应于2k 种不同的消息,也有2k 种码字。
这2k 个码字的集合就叫一个分组码(block code )。
若一个分组码可用,2k 个码字必须各不相同。
因此,消息u 和码字v 存在一一对应关系。
由于n 符号输出码字只取决于对应的k 比特输入消息,即每个消息是独立编码的,从而编码器是无记忆的,且可用组合逻辑电路来实现。
定义:一个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF(2)上所有n 维向量组成的向量空间的一个K 维子空间时被称为线性(linear )(n, k)码。
汉明码(n ,k ,d )就是线性分组(n, k)码的一种。
其编码算法即为使用生成矩阵G :v = u ·G 。
汉明码的编码和译码算法汉明码(Hamming)的编码和译码算法本⽂所讨论的汉明码是⼀种性能良好的码,它是在纠错编码的实践中较早发现的⼀类具有纠单个错误能⼒的纠错码,在通信和计算机⼯程中都有应⽤。
例如:在“计算机组成原理”课程中,我们知道当计算机存储或移动数据时,可能会产⽣数据位错误,这时可以利⽤汉明码来检测并纠错。
简单的说,汉明码是⼀个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。
如果对汉明码作进⼀步推⼴,就得出了能纠正多个错误的纠错码,其中最典型的是BCH码,⽽且汉明码是只纠1bit错误的BCH码,可将它们都归纳到循环码中。
各种码之间的⼤致关系显⽰如下。
⼀、汉明码的编码算法输⼊:信源消息u(消息分组u)输出:码字v处理:信源输出为⼀系列⼆进制数字0和1。
在分组码中,这些⼆进制信息序列分成固定长度的消息分组(message blocks)。
每个消息分组记为u,由k个信息位组成。
因此共有2k种不同的消息。
编码器按照⼀定的规则将输⼊的消息u转换为⼆进制n 维向量v ,这⾥n >k 。
此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。
因此,对应于2k 种不同的消息,也有2k 种码字。
这2k 个码字的集合就叫⼀个分组码(block code )。
若⼀个分组码可⽤,2k 个码字必须各不相同。
因此,消息u 和码字v 存在⼀⼀对应关系。
由于n 符号输出码字只取决于对应的k ⽐特输⼊消息,即每个消息是独⽴编码的,从⽽编码器是⽆记忆的,且可⽤组合逻辑电路来实现。
定义:⼀个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF(2)上所有n 维向量组成的向量空间的⼀个K 维⼦空间时被称为线性(linear )(n, k)码。
汉明码(n ,k ,d )就是线性分组(n, k)码的⼀种。
其编码算法即为使⽤⽣成矩阵G :v = u ·G 。
汉明编译码系统自行设计实验一、 实验原理差错控制编码的基本作法是:在发送端被传输的信息序列上附加一些监督码元,这些多余的码元与信息之间以某种确定的规则建立校验关系。
汉明码(7,4)是一种纠错码,是能纠正单个错误的线性分组码。
它有以下特点:码长n=2m -1 最小码距d=3 信息码位 k=2n -m -1纠错能力t=1监督码位r=n -k这里m 位≥2的正整数,给定m 后,既可构造出具体的汉明码(n ,k )。
汉明码的监督矩阵有n 列m 行,它的n 列分别由除了全0之外的m 位码组构成,每个码组只在某列中出现一次。
系统中的监督矩阵如下图所示:1110100H=01110101101001其相应的生成矩阵为:1000101010011100101100001011G=汉明译码的方法,可以采用计算校正子,然后确定错误图样并加以纠正的方法。
图9.1和图9.2给出汉明编码器和译码器电原理图。
a 6 a 5 a 4 a 3 a 2 a 1 a 0a 6 a 5 a 4 a 3图9.1汉明编码器电原理图●●●●●●●●●a 6 a 5 a 4 a 3a 6 a 5 a 4 a 3 a 3 a 3 a 3图9.2汉明译码器电原理图3-8译码器校正子生成错码 指示765432 1● ●● ● ●●●●表1.1 (7,4)汉明编码输入数据与监督码元生成表4位信息位 a 6, a 5, a 4, a 3 3位监督码元 a 2, a 1, a 04位信息位 a 6, a 5, a 4, a 3 3位监督码元a 2, a 1, a 00000 000 1000 101 0001 011 1001 110 0010 110 1010 011 0011 101 1011 000 0100 111 1100 010 0101 100 1101 001 0110 001 1110 100 01110101111111表1.1为(7,4)汉明编码输入数据与监督码元生成表。
汉明码编译码汉明码编译码一设计思想汉明码是一种常用的纠错码,具有纠一位错误的能力。
本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。
用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。
用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。
此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。
二实现流程1.汉明码编译码生成矩阵G信息序列M产生码字C信道计算伴随式S接收码流R校验矩阵H解码码流C2解码信息序列M2图 1 汉明码编译码框图1)根据生成多项式,产生指定的生成矩阵G2)产生随机的信息序列M3)由C MG得到码字4)进入信道传输5) 计算=TS RH 得到伴随式 6) 得到解码码流7) 得到解码信息序列2. 汉明码误码性能分析误码率(SER )是指传输前后错误比特数占全部比特数的比值。
误帧率(FER )是指传输前后错误码字数占全部码字数的比值。
通过按位比较、按帧比较可以实现误码率和误帧率的统计。
3. 构建完整通信系统图 2 完整通信系统框图 输入信息序列Huffman 编码Hamming 编码信道Hamming 译码Huffman 译码输出信息序列噪声三 结论分析1. 汉明码编译码编写了GUI 界面方便呈现过程和结果。
图 3 汉明码编译码演示GUI 界面以产生(7,4)汉明码为例说明过程的具体实现。
1) 根据生成多项式,产生指定的生成矩阵G 用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k100101101011100010111H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦ 1101000011010011100101010001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦2) 产生随机的信息序列M0010=01000111M ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦3) 由C MG =得到码字010001101101000010111C ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦4) 进入信道传输假设是BSC 信道,错误转移概率设定为0.1 传输后接收端得到的码流为000011110100000111101R ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦红色表示错误比特。
姓名:学号:班级:
第周星期第大节
实验名称:汉明编码和译码实验
一、实验目的
1.掌握汉明码编译码原理。
2.掌握汉明码纠错检错原理。
3.通过纠错编解码实验,加深对纠错编解码理论的理解。
二、实验仪器
1.ZH5001A通信原理综合实验系统
2.20MHz双踪示波器
三、实验内容
2.编码规则验证
(1)输入数据为0011
(2)输入数据为1100
3.译码数据输出观测
(1)m序列方式为11
(1)不加错
♦观测加错指示TPC03与错码检测指示输出波形TPW03波形
(2)加1位错
♦观测加错指示TPC03与错码检测指示输出波形TPW03波形
(4)加3位错
(1)不加错
加2位错不能全部正确译码
(4)加3位错
四、思考题
2.汉明编码器模块的使能开关,译码器模块的使能模块(H_EN断路器)起什么作用?
从电路图中可以看出,没有插入H_EN时,汉明编码器被短路,输出数据没有经过汉明编码。
插入H_EN时,输出数据经过汉明编码。
《数据通信原理》实验报告实验题目:汉明码的编译码专业班级:信息工程2班姓名学号:赵星敏201342351 李明阳201342300指导教师:刘钰实验五 汉明码的编译码一、实验目的1、理解汉明码的编码原理2、掌握利用simulink 进行汉明码编译码仿真的方法3、掌握利用matlab 指令进行汉明码编译码的方法 二、实验原理在数字通信系统中,为了实现信息的可靠传输,需要采用差错控制来发现并纠正错误。
进行差错控制的方法就是对信息进行差错控制编码,差错控制编码种类较多,其中线性分组码是常用的一类编码,具有编码效率高,实现较简单以及检纠错能力较强等特点。
一般数字通信系统模型由信源信宿、加解密、编解码、调制解调等模块组成,其中有些通信模块是组成整个通信系统所必不可少的,有些模块是可以不需要的。
差错控制编解码属于编解码器通信模块,为了方便分析差错控制编码性能,通过将通信系统简化为如图5-1所示的信息传输系统来搭建仿真实验平台进行分析研究。
图5-1编码,有时也称为纠错编码。
不同的编码方法,有不同的检错或纠错能力,有的编码只能检错,不能纠错。
一般说来,付出的代价越大,检纠错的能力就越强。
在选择差错控制编码时需要考虑到编码效率、检纠错的能力等方面因素的影响。
按照是否将信息码元进行分组可以将差错控制编码分为分组码和非分组码,线性码是指信息位和监督位满足一组线性方程的码,任一(n,k)线性分组码的编码效率为k/n 。
Simulink 通信模块中提供了二进制线性分组码编解码器:Binary Linear Encoder 和Binary Linear Decoder 。
汉明码是汉明(Hamming)于1950年提出的能纠正一位错码且编码效率较高的线性分组码,它可以用一种简洁有效的方法进行解码。
汉明码不是仅指某一种码,而是指一类码。
二进制汉明码应满足条件:2n-k =1+n,令m=n-k,汉明码n 和k 服从关系式:码长n=2m -1;信息位k=2m -1-m ;最小距离dmin=3(指汉明距离)。
课程名称通信原理实验序号实验8实验名称汉明码编译码及纠错能力验证实验实验地点B702实验学时 2 实验类型验证性指导教师实验员专业_电子信息工程__ 班级14电信一班学号姓名2016年12 月15 日五、测试/调试及实验结果分析图片说明:CH1(黄色)帧同步信号CH2(浅蓝色)编码后信号CH3(粉红色)编码前信号CH4(深蓝色)译码后信号保护位无加错的时候设置的原始信号是:1100,编码后的信号是:1100001,译码后的信号为:1100。
对照图片的波形图,无误输出,汉明码正确。
有延时的现象。
1位加错的时候:设置的原始信号是:1100,编码后的信号是:1101001译码后的信号是:1100 通过计算S1、S2、S3可知错误位为:a3 对照译码后的波形与编码前的波形,可知已经纠错成功。
汉明码的一位纠错功能实现。
有延时的现象。
2位加错的时候:设置的原始信号是:1100,编码后的信号是:1111001码后的信号是:0111 对照无错的编码后序列,可知错误位为:a3、a4 对照译码后的波形与编码前的波形,可知译码后的波形与编码前的波形对不上。
(7,4)汉明码的2位纠错功能无法实现。
3位加错的时候:设置的原始信号是:1100,编码后的信号是:1011001码后的信号是:0111 对照无错的编码后序列,可知错误位为:a3、a4、a5 ,对照译码后的波形与编码前的波形,可知译码后的波形与编码前的波形对不上。
(7,4)汉明码的3位纠错功能无法实现。
4位加错的时候:设置的原始信号是:1100,编码后的信号是:0011001码后的信号是:0111 对照无错的编码后序列,可知错误位为:a3、a4、a5 、a6 ,对照译码后的波形与编码前的波形,可知译码后的波形与编码前的波形对不上。
(7,4)汉明码的4位纠错功能无法实现。
六、实验结论与体会1.课堂上对汉明码的理解不够深入,经过本次实验明显加深了我对汉明码的理论的认识和理解,实际动手才是关键2.经过编码后的编码序列,在加错码的时候,对a0、a1、a2位没有影响,也就是说这三位不会在无错的时候编码是什么,加错后这三位的编码还是一样3.一位加错时,(7,4)汉明码有检错以及纠错的功能,两位加错的时候,只有检错的功能,却没有纠错的功能,三位或三位以上加错时,既没有检错的功能,也没有纠错的功能;4.(7,4)汉明码作为一种信道编码的方式,具有一定的纠错检错能力。
《数据通信原理》实验报告实验题目:汉明码的编译码专业班级:信息工程2班姓名学号:赵星敏 201342351 李明阳201342300指导教师:刘钰实验五汉明码的编译码一、实验目的1、理解汉明码的编码原理2、掌握利用simulink进行汉明码编译码仿真的方法3、掌握利用matlab指令进行汉明码编译码的方法二、实验原理在数字通信系统中,为了实现信息的可靠传输,需要采用差错控制来发现并纠正错误。
进行差错控制的方法就是对信息进行差错控制编码,差错控制编码种类较多,其中线性分组码是常用的一类编码,具有编码效率高,实现较简单以及检纠错能力较强等特点。
一般数字通信系统模型由信源信宿、加解密、编解码、调制解调等模块组成,其中有些通信模块是组成整个通信系统所必不可少的,有些模块是可以不需要的。
差错控制编解码属于编解码器通信模块,为了方便分析差错控制编码性能,通过将通信系统简化为如图5-1所示的信息传输系统来搭建仿真实验平台进行分析研究。
图5-1编码,有时也称为纠错编码。
不同的编码方法,有不同的检错或纠错能力,有的编码只能检错,不能纠错。
一般说来,付出的代价越大,检纠错的能力就越强。
在选择差错控制编码时需要考虑到编码效率、检纠错的能力等方面因素的影响。
按照是否将信息码元进行分组可以将差错控制编码分为分组码和非分组码,线性码是指信息位和监督位满足一组线性方程的码,任一(n,k)线性分组码的编码效率为k/n。
Simulink通信模块中提供了二进制线性分组码编解码器:Binary Linear Encoder和Binary Linear Decoder。
汉明码是汉明(Hamming)于1950年提出的能纠正一位错码且编码效率较高的线性分组码,它可以用一种简洁有效的方法进行解码。
汉明码不是仅指某一种码,而是指一类码。
二进制汉明码应满足条件:2n-k=1+n,令m=n-k,汉明码n和k 服从关系式:码长n=2m-1;信息位k=2m-1-m;最小距离dmin=3(指汉明距离)。
当m=3,4,5,6,7,8,…时,分别有(7,4),(15,11),(31,26),(63,57),(127,120),(255,247),…汉明码。
汉明码的基本思想:在k 个信息位上加r 个校验位,构成n=k+r 位的码字,其中每个校验位和某几个特定的信息位构成偶校验的关系。
接收端对这r 个偶关系进行校验,即将每个校验位与它关联的信息位进行异或加,相异或的结果称为校正因子。
如果没有错的话,这r 个校正因子都为0;如果有一个错则校正因子不会全为0,根据校正因子的不同取值,可以知道错误发生在码字的哪一个位置上。
线性分组码的生成原理与Hamming 码基本一致,下面以(7,4)Hamming 码为例简单地介绍一下汉明码的构造过程。
构造一个(7,4)汉明码,就是求出它的生成矩阵,或等效地,求出它的监督矩阵(也叫校验矩阵)。
由于(7,4)汉明码的校验矩阵是矩阵,而监督矩阵的列矢量不能为全零(零与任何码元的乘积为零,失去检验功能),因此监督矩阵H 的7个列矢量正好是除全零矢量外3重矢量的全部可能组合。
将[001]T 、[010]T 、[011]T 、[100]T 、[101]T 、[110]T 、[111]T 排列起来就是监督矩阵,排列顺序不同,所得矩阵也就不同,说明H 不是唯一的。
由于交换列不会影响最小距离,所以可以通过列置换将最初的H 变换为系统形式的H(若信息组以不变的形式,在码字的任意k 位中出现,则称该码为系统码。
否则,称为非系统码),成为系统汉明码:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101010111001101111000H 经过变换,整理为典型监督矩阵形式为[]3100101101011010011110PI H =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡= 根据校验矩阵与生成矩阵的转换关系式得到系统汉明码的生成矩阵G 为:[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==1111000011010010100101100001T k P I G 这样输入信息组m=[m 3,m 2,m 1,m 0],将m 与G 相乘即得到编码后的码字A 。
当数字信号编码成汉明码形式后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。
解码的时候将接收到的信息组r与H T相乘,如果rH T=0,接收码组无错;如果rH T≠0,则根据译码图样进行纠错。
Simulink通信模块中提供了Hamming码编解码器:Hamming Encoder和Hamming Decoder。
三、实验内容1、simulink仿真汉明码编译码过程汉明码编译码仿真的模型图如图5-2所示。
图5-2 汉明码编译码仿真各模块参数及说明:①Bernoulli Binary Generator(伯努利二进制随机数产生器)模块描述:产生服从伯努利分布的随机二进制序列,模块的输出可以是帧结构的矩阵,也可以是数据流形式的行或列向量或一维数组。
模块位置:Communications Blockset-Comm Sources-Random Data Sources-Bernoulli Binary Generator模块参数:参数说明:Probability of a zero:模块产生的二进制序列中出再0的概率。
Initial seed:随机数种子,不同的随机数种子通常产生不同的序列。
Sample time:抽样时间,表示输出序列中每个二进制符号的持续时间。
此处参数表示在0.02秒内产生4个比特。
Frame-based outputs:选种表示输出为帧格式,否则输出数据流。
Samples per frame:只有当Frame-based outputs选种后才可编辑此参数,它表示输出一帧中包含的抽样点数。
此处表示1帧由4个比特组成。
②Hamming Encode(汉明码编码器)模块描述:用于对输入信息进行汉明编码,汉明码是一种能够纠正一位错误的红性分组码,码长为N。
该信息位的长度为K,其中,N=2^M-1(M>=3),K=N-M。
模块位置:Communications Blockset-Error Detection and Correction-Block-Hamming Encode模块参数:③Binary Symmetric Channel(二进制对称信道)模块描述:用于对二进抽制信号的误比特率性能进行仿真,添加二进制噪声到输入信号,可以是标量、数据流向量或帧结构的行向量。
模块位置:Communications Blockset-Channels-Binary Symmetric Channel 模块参数:参数说明:Error probability:添加噪声比特的概率。
④Hamming Decode(汉明码译码器)模块描述:创建一个码长为N,信息码长为K的汉明码。
其中,N=2M-1(M>=3),K=N-M。
模块位置:Communications Blockset-Error Detection and Correction-Block-Hamming Decode模块参数:此处的两个参数要与前面的Hamming Encode参数一致。
⑤Error Rate Calculation(误码率计算)模块描述:通过比较传输数据和接收数据来计算误码率,模块的输出数据是长度为3的向量,其中每个元素的意义分别是:误码率或误比物率、总的错误个数、总的参加比较的符号或比特数。
模块位置:Communications Blockset-Comm Sinks-Error Rate Calculation模块参数:参数说明:Receive delay:指定接收方滞后发送的抽样点数,即接收的第几个值对应发送的第一个值。
Computation delay:指定开始比较时模块忽略的抽样点数。
Computation mode:指定模块是比较全部还是输入数据。
Output data:指定计算结果是输出到工作区还是端口。
⑥To Workspace(输出到工作区)模块描述:写入专门的数据到MATLAB的主工作区。
数据不可用直到仿真结束或暂停。
模块位置:Simulink -Sinks-To Workspace模块参数:参数说明:Variable name:写入工作区间的数据名称,默认为simout。
Limit data points to last:模块最多可以保留的数据个数,inf表示无穷大。
Decimation:写入数据的抽样频率,即每隔多少抽样点输入一个值。
Sample time:写入数据的抽样时间,默认值为-1,表示与上一模块抽样时间相同。
Save format:输出数据的形式。
⑦Display(显示仿真结果)模块描述:显示结果模块位置:Simulink -Sinks-Display模块参数:参数说明:Format:显示在模块对话框上的数据形式,short显示小数据点后5位数字。
2、利用matlab语句进行汉明码编译码MATLAB中提供了汉明码的编码和译码函数,本程序直接调用进行编程。
将用到的程序函数说明如下:①encode函数功能:编码函数语法:code=encode(msg,N,K,’hamming’)说明:该函数对二进制信息msg进行汉明编码,K为信息位长度,N为码字长度。
msg是一个任意行K列的矩阵。
比如:>> code=encode([1 0 0 0;1 1 0 1],7,4,'hamming')运行结果为:code =1 1 0 1 0 0 00 0 0 1 1 0 1②decode函数功能:译码函数语法:rcvcode=decode(code,N,K,’hamming’)说明:该函数对接受码字进行译码,恢复出原始信息,译码参数及方式必须和编码时采用的完全相同。
比如,在①结果的基础上:>> rcvcode=decode(code,7,4,'hamming')运行结果为:rcvcode =1 0 0 01 1 0 1③randint函数功能:产生一个均匀分布的n*m维的整数矩阵,矩阵的元素是随机的。
语法:randint(m,n)说明:randint(m,n),矩阵中的元素或者是0或者是1,0或者1的出现是随机的。
比如:>> randint(3,2)运行结果为:ans =0 00 10 1语法:randint(m,n,range)说明:产生一个m*n的随机矩阵,矩阵元素值的范围由range确定。
比如range设定为一个区间:randint(2,3,[1 6]),就是产生一个2*3随机矩阵,这个矩阵的元素是区间[1 6]的随机整数。