【硅谷网9月15日】据《科技与生活》杂志2012年第13期刊文称,本论文介绍了卷积码的概念和编译码原理,介绍了卷积码的部分并利用Systemview软件将卷积码实现。仿真运行后参考纠错理论对波形图进行分析。
1卷积码简介
1.1卷积码的编码
卷积码编码器的一般形式如下图所示,包括一个由N段组成的输入移位寄存器,每段有K级,共N×k位寄存器;一组n个模2和相加器;一个n级输出移位寄存器。对应于每段K个比特的输入序列,输出n个比特。
图1卷积码编码器的一般情况
上图为(n,k,N)卷积码编码器的一般结构。它由移入移位寄存器、模2加法器、输出移位寄存器3部分构成。输入移位寄存器共有N段,每段有k级,共有N*K位寄存器,信息序列由此不断输入。输入端的信息序列进入这种结构的输入移位寄存器即被自动划分为N段,每段k位,它使输出的n个比特的卷积码与N段每段有k为的信息位相关联。通常把N称为约束长度。由于该N段信息共有N*K个信息比特,所以也称N*K为约束长度;一组模2加法器共有n个,它实现卷积码的编码算法;输出移位寄存器,共有n级,输入移位寄存器每移入k位,就输出n个比特的编码。所以编码效率为。
1.2卷积码的译码
译码器的功能就是要根据某种法则以尽可能低的错误概率对编码输入信息作出估计。卷积码译码通常是按最大似然法则译码,对二进制对称信道来说,它就等效于最小汉明距离译码。在这种译码器中,把接收序列和所有可能发送序列进行比较,选择一个汉明距最小的序列判作发送序列。由于信息序列、编码序列有着一一对应的关系,而这种关系又唯一对应网格图的一条路径。因此译码就是根据接收序列R在网格图上全力搜索编码器在编码时所经过的路径,即寻找与R有最小汉明距离的路径。最大似然译码在实际应用中遇到的问题是当很大时,计算量是很大的,这是困难所在。
Viterbit译码是基于最大似然法则的最重要的卷积码译码方法。但它不是一次计算和比较条路径,而是采用逐步比较的方法来逼近发送序列的路径。所谓逐步比较就是把接收序列的第i个分支码字和网格图上相应两个时刻和之间的各支路作比较,即和编码器在此期间可能输出的分支码字作比较,计算和记录它们的汉明距,同时把它们分别累加到时刻之前的各支路累加的汉明距上。比较累加结果并进行选择,保留汉明距离最小的一条路径,其余的被删除。所以时刻进入每个节点的路径只有一条,且均为幸存支路。这一过程直到接收序列的分支码字全部处理完毕,具有最小汉明距的路径即判决为发送序列。
下面主要介绍Viterbi译码原理及其仿真设计。
Viterbi译码算法流程图如图2所示。
图2Viterbi译码算法处理流程
2维特比译码器的仿真
2.1仿真框图
为了验证译码模块的正确性,便让其进行最简模式运行,为此,临时设计一个简化信号系统,关闭信道噪声,不进行二进制相位的调制与解调,去掉误比特率统计模块。
图3译码模块框图
2.2误码率分析
编制文件convolutionh.m,使convh.mdl在不同的信噪比条件下重复执行前面建立的项目convh.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图。
function[f,k]=conv_m(f1,k1,f2,k2)
p=input('p=');
f=conv(f1,f2);%计算序列f1与f2的卷积和f
f=f*p;
k0=k1(1)+k2(1);%计算序列f非零样值的起点位置
k3=length(f1)+length(f2)-2;%计算卷积和f的非零样值的宽度
k=k0:p:k3*p;%确定卷积和f非零样值的时间向量
subplot(2,2,1)
plot(k1,f1)%在子图1绘f1(t)时域波形图
title('f1(t)')
xlabel('t')
ylabel('f1(t)')
subplot(2,2,2)
plot(k,f);%画卷积f(t)的时域波形
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h)%将第三个子图的横坐标范围扩为原来的2.5倍
title('f(t)=f1(t)*f2(t)')
xlabel('t')
ylabel('f(t)')
图4convolutionh.m运行结果
3结束语
本论文介绍了卷积码的基本知识。包括卷积码的编码,以Viterbi为例介绍了卷积码的译码原理及其MATLAB的仿真实现。使其更好的、更直观的掌握关于卷积码的译码原理。(作者信息:安妮,助教,德州职业技术学院)
|
|