文档介绍:汉明码编译码
一设计思想
汉明码是一种常用的纠错码,具有纠一位错误的能力。本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。
二实现流程
汉明码编译码
图 1 汉明码编译码框图
根据生成多项式,产生指定的生成矩阵G
产生随机的信息序列M
由得到码字
进入信道传输
计算得到伴随式
得到解码码流
得到解码信息序列
汉明码误码性能分析
误码率(SER)是指传输前后错误比特数占全部比特数的比值。
误帧率(FER)是指传输前后错误码字数占全部码字数的比值。
通过按位比较、按帧比较可以实现误码率和误帧率的统计。
构建完整通信系统
图 2 完整通信系统框图
三结论分析
汉明码编译码
编写了GUI界面方便呈现过程和结果。
图 3 汉明码编译码演示GUI界面
以产生(7,4)汉明码为例说明过程的具体实现。
根据生成多项式,产生指定的生成矩阵G
用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H、G以及码字长度n和信息位数k
产生随机的信息序列M
由得到码字
进入信道传输
假设是BSC信道,
传输后接收端得到的码流为
红色表示错误比特。
计算得到伴随式
错误图样
0000001
0000010
0000100
0001000
0010000
0100000
1000000
伴随式
101
111
011
110
001
010
100
查表可知第一行码字错误图样为0100000,第二行码字错误图样为1000000,第三行码字错误图样为0000001。
进行即可得到纠错解码的码字C2。
得到解码码流
得到解码信息序列
可以看出解码信息序列与原信息序列一样,体现了汉明码的纠错能力。
1)BSC信道仿真
设置BSC错误转移概率Pe从0到1变化,,在每个Pe值进行1000次蒙特卡洛仿真,得到图4所示误码率随Pe变化曲线图和图5所示误帧率随Pe变化曲线图。
图 6误码率随Pe变化曲线图
图中绿线为BSC信道误码率,红线为设定Pe值,蓝线为Hamming码解码误码率。由图线可以看出仿真的BSC信道误码率与Pe一致。
在Pe<, Hamming码的解码误码率随着BSC信道错误传输概率Pe的减小而减小。Hamming码的解码误码率显著下降,约为Pe的1/2。Hamming码的纠1位错起到了很好的效果。
<Pe<,Hamming码的解码误码率大于Pe。这是因为在Pe>,传一个码字错误比特数近似为2,而Hamming码只能纠一位错,两位同时出错时会纠成另一个码字,这样就可能增加误比特数,使得“越纠越错”。
Pe>,情况恰好相反。
图 7误帧率随Pe变化曲线图
可以看出随着Pe增加,BSC传输误帧率和Hamming译码误帧率成S曲线上升达到1。H