基于Matlab的卷积码译码器的设计与仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Matlab的卷积码译码器的设计与仿真作者:曹亚陆
来源:《硅谷》2011年第15期
摘要:主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真,并进行误码率分析。
系统开发平台为Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。
关键词:卷积码译码器;Matlab;Simulink;设计与仿真
中图分类号:TP314 文献标识码:A 文章编号:1671-7597(2011)0810049-01
1 概述
设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真。
卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。
1.1 设计目的。
卷积码是一种向前纠错控制编码。
它将连续的信息比特序列映射为连续的编码器输出符号。
这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。
可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。
对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。
本设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。
1.2 设计的原理。
卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。
卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。
对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。
2 维特比译码原理
采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。
如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。
当传信率和信息组数L较大时,使得译码器难以实现。
维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。
它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。
3 Matlab中卷积码译码器的设计与仿真
3.1 Matlab维特比译码器模块介绍
如果卷积编码器的输入长度为k,输出信号的长度为n,则维特比译码器的输入好输出信号长度分别是n和k的整数倍。
维特比译码器模块主要有以下几个参数:
1)Trellis structure(Trellis结构)。
与维特比一冒起相对应的卷积编码器的Trellis结构。
它既可以是Matlab工作区中的一个Trellis变量,也可以是通过poly2trellis()函数产生的Trellis结构。
2)Decision Type(判决类型)。
维特比译码器德判决类型有3种:Unquantized (非量化)、Hard Decision(硬判决)和Soft Decision(软判决)。
3)Number of soft decision bits(软判决的个数)。
当Decision type设置为Soft Decision时,本参数有效,并且当它的取值为b时,维特比译码器的输出是介于0和2b-1之间的一个整数。
4)Traceback depth(反馈深度)。
反馈深度D影响着维特比译码的精度,同时也影响着解码的时延(即在输出第一个解码数据之前输出的0的个数)。
5)Operation mode(操作模式)。
维特比译码器有3种操作模式:Continuous、Terminated或Truncated。
如果维特比译码器德输出信号是抽样信号,则应该把本参数设置为Continuous模式;当输入信号时帧数据时,操作模式可以是Continuous、Terminated或Truncated。
对于Continuous模式,维特比译码器在每帧数据结束时保存译码器的内部状态,用于对下一帧实施解码。
本设计由3个子系统组成:信源模块对随机二进制信号进行卷积码和二进制相位调制,输出基带调制信号;信道模块是一个有噪声信道;信宿模块对调制信号进行软判决译码,得到原始信息序列,并且计算调制信号的误码率。
信源模块由贝努利二进制序列产生器、卷积码编码器以及二进制相位调制3个模块组成。
信宿模块在接收到二进制相位调制信号后,首先由BPSK Demodulator Baseband(二进制相位解调模块)对信号进行量化,得到硬判决量化信号,然后通过ViterbiDecoder(维特比译
码器)对软判决信号实施译码。
译码输出信号和信源模块产生的原始信号输入到Error Rate Calculator
(误比特率统计模块)中,统计得到的数据一方面通过Display(显示模块)显示出来,另一方面通过一个Selector(选择器)把其中的第一个元素(即编码信号的误比特率)保存到工作区变量BitErrorRate中。
3.2 简化维特比译码器的仿真
为了验证译码模块的正确性,便让其进行最简模式运行,为此,临时设计一个化信号系统,关闭信道噪声,不进行二进制相位的调制与解调,去掉误比特率统计模块。
为了能看到输入二进制码和译码输出二进制码,增加了两个To Workspace(结果输入到工作区模块)。
同时,为了便于观察,将Bernoulli Binary Generator(贝努利二进制序列产生器)的参数设置为如表3.8所示,以产生简单的15位二进制随机码,也将Viterbi Decoder的Trceback depth值改为5。
将To Workspace1模块和To Workspace模块的变量名分别设置为pdata和data。
运行仿真(),在matlab的命令窗口中输入pdata和data分别得到相应的二进制序列。
对所得序列分别截图,可得结果。
可见,译码器能够正确进行译码,所设计简化译码器正确,因而,从理论上可推导,原设计正确。
通过对convh.mdl文件进行仿真,证明设计正确,但因所得二进制码太多,此处便不进行截图证明。
4 结束语
此设计对整个通信系统包含的编码、传输和译码都进行了设计与仿真,从这些过程中我们看到了通信系统的基本工作原理。
参考文献:
[1]Rodger E.Ziemer,Roger L.Peterson著,数字通信基础(Introducti
On to Digital Communication)原书第2版,尹长川、郝建军、罗涛等译,北京:机械工业出版社,2005.1.
[2]樊昌信、张甫翊、徐炳祥、吴成柯,通信原理,第5版,北京:国防工业出版社,2007.1.
[3]邓华,Matlab通信仿真及应用实例详解,北京:人民邮电出版社,2003.9.。