XX大学XX学院电子与信息工程学院
信道编码课程设计报告
课设名称
卷积码编译及译码仿真
学生姓名
学
号
同组人
专业班级
通信
指导教师
一、实验名称
基于MAATLAB的卷积码编码及译码仿真
二、实验目的卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本实验简明地介绍了卷积码的编码原理和Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。
三、实验原理
1、卷积码编码原理
卷积码是一种性能优越的信道编码,它的编码器和解码器都比较易于实现,同时还具有较强的纠错能力,这使得它的使用越来越广泛。卷积码一般表示为(n,k,K)的形式,即将
k个信息比特编码为
n
个比特的码组,K
为编码约束长度,说明编码过程中相互约束的码段个数。卷积码编码后的n
各码元不经与当前组的k
个信息比特有关,还与前
K-1
个输入组的信息比特有关。编码过程中相互关联的码元有
K*n
个。R=k/n
是编码效率。编码效率和约束长度是衡量卷积码的两个重要参数。典型的卷积码一般选
n,k
较小,K
值可取较大(>10),但以获得简单而高性能的卷积码。
卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。
2、卷积码Viterbi译码原理
卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。这样一直进行到最后第L
级(L
为发送序列的长度)。由于这种方法较早地丢弃了那些不可能的路径,从而减轻了译码的工作量,Viterbi
译码正是基于这种想法。对于(n,k,K)卷积码,其网格图中共
2kL
种状态。由网格图的前
K-1
条连续支路构成的路径互不相交,即最初
2k_1
条路径各不相同,当接收到第K
条支路时,每条路径都有
条支路延伸到第K
级上,而第K
级上的每两条支路又都汇聚在一个节点上。在Viterbi译码算法中,把汇聚在每个节点上的两条路径的对数似然函数累加值进行比较,然后把具有较大对数似然函数累加值的路径保存下来,而丢弃另一条路径,经挑选后第K
级只留下2K条幸存路径。选出的路径同它们的对数似然函数的累加值将一起被存储起来。由于每个节点引出两条支路,因此以后各级中路径的延伸都增大一倍,但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数。由此可见,上述译码过程中的基本操作是,“加-比-选”,即每级求出对数似然函数的累加值,然后两两比较后作出选择。有时会出现两条路径的对数似然函数累加值相等的情形,在这种情况下可以任意选择其中一条作为“幸存”路径。
卷积码的编码器从全零状态出发,最后又回到全零状态时所输出的码序列,称为结尾卷积码。因此,当序列发送完毕后,要在网格图的终结处加上(K-1)个己知的信息作为结束信息。在结束信息到来时,由于每一状态中只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。因此,在接收到(K-1)个己知信息后,在整个网格图中就只有唯一的一条幸存路径保留下来,这就是译码所得的路径。也就是说,在己知接收到的序列的情况下,这条译码路径和发送序列是最相似的。
3、MATLAB
仿真
在本次实验中,主要是利用SIMULINK仿真模块对卷积码的编码及viterbi译码的全过程进行了设计,SIMULINK仿真框图如下:
图1卷积码的SIMULINK仿真框图
基本设计思路是:先由Bernoulli
Binary
Generator(贝努利二进制序列产生器)产生一个0,1等概序列,经过Convolutional
Encoder(卷积编码器)对输入的二进制序列进行卷积编码,并用BPSK调制方式调制信号。加入信道噪声(高斯白噪声)后再经过BPSK解调制后送入Viterbi
Decoder(Viterbi译码器)进行硬判决译码。最后经过Error
Rate
Calculation(误码统计)后由Display(显示)输出。然后通过Selector(数据选通器)将结果输出到To
workspace(工作区间)。该结果将由m文件中的程序调用以绘制不同信噪比及其他参数下系统误码率曲线。
四、实验结果
1、不同的约束长度对卷积码误码率的影响
对于码率一定的卷积码,当约束长度N
发生变化时,系统的误码性能也会随之发生变化,本实验中以码率R
=
1/2的(2,1,3)和(2,1,7)
卷积码为例展开分析。
仿真所用所用程序如下:
x=0:5;
y=x;
for
i=1:length(x)
SNR=x(i);
sim('juanjima');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’r’);
hold
on;
for
i=1:length(x)
SNR=x(i);
sim('juanjima2');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’g’);
xlabel('SNR')
ylabel('BitErrorRate')
仿真结果:
图2约束长度对卷积码性能的影响
结果分析:
对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化, 我们以码率R = 1/ 2的(2 ,1 ,3)和(2,1,7)卷积码为例展开分析。上面的曲线是(2,1,3)卷积码的误码性能曲线。下面的曲线是(2,1,7)卷积码的误码性能曲线。从图4-4中的误比特率曲线可以清楚地看到,随着约束长度的逐渐增加,系统的误比特率明显降低,所以说当码率一定时,增加约束长度可以降低系统的误比特率,但是随着约束长度的增加,译码设备的复杂性也会随之增加,所以对于码率为1/ 2 的卷积码,我们在选取约束长度时一般为3~9。
2、回溯长度对卷积码性能的影响
以(2,1,7)卷积码为例。将译码模块中的Traceback
depth分别设置为20,35,50并在一个图中画出这三种方式下的误码性能曲线。
仿真所用程序如下:
x=
0:5;
y=x;
for
i=1:length(x)
SNR=x(i);
sim('juanjima');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’r’);
hold
on;
for
i=1:length(x)
SNR=x(i);
sim('juanjima2');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’g’);
hold
on;
for
i=1:length(x)
SNR=x(i);
sim('juanjima3');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’b’);
xlabel('SNR')
ylabel('BitErrorRate')
仿真结果:
图3
回溯长度对卷积码性能的影响
从上到下的三条曲线分别是Traceback
depth为20,35,50。可以看出:回溯长度在Viterbi
译码过程中一个很重要的参数,他决定了译码延迟,随着他的不断变化,误码性能也随误比特率曲线可以清楚地看到,当回溯长度一定时,随着信道噪声的逐渐提高,系统的误比特率逐渐降低;当回溯长度逐渐增加,系统的误比特率随之逐渐降低,当回溯程度τ增加一定程度时,误比特率数值趋于稳定。
3.不同码率对误比特率的影响
以码率为1/2的(2,1,3)卷积码和码率为1/3的(3,1,3)码为例。它们的trellis结构分别是poly2trellis(3,[6
7])和poly2trellis(3,[1
5])。
仿真所用程序:
x=0:5;
y=x;
for
i=1:length(x)
SNR=x(i);
sim('juanjima');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’r’);
hold
on;
for
i=1:length(x)
SNR=x(i);
sim('juanjima2');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’b’);
xlabel('SNR')
ylabel('BitErrorRate'
图4
码率对卷积码性能的影响
结果分析:
从图中可以看出,当码率一定时,随着信道信噪比的提高,系统误比特率逐渐降低。当改变码率时,在信噪比一定的条件下,码率越高,误比特率越高。
5.不同信道对viterbi译码性能的影响
在这个部分主要考虑的是二进制对称信道与高斯白噪声信道对于viterbi译码性能的影响。采用的是(2,1,7)卷积码。
仿真所用程序:
x=0:5;
y=x;
for
i=1:length(x)
SNR=x(i);
sim('juanjima');
y(i)=mean(BitErrorRate);
end
semilogy(x,y,’r’);
semilogy(x,y,’b’);
xlabel('SNR')
ylabel('BitErrorRate')
仿真结果:
图5二进制对称信道下的仿真结果
图6高斯白噪声信道下的仿真结果
结果分析:
高斯白噪声信道中,Viterbi译码随着信道的信噪比提升,误比特率越低,信道的可信度与纠错能力很高,而在二进制对称信道中,随着信道的误码率提升,viterbi译码的误比特率也会提升,当二进制对称信道的误码率高到一定程度时,Viterbi译码几乎会丧失纠错能力。总体上看,高斯白噪声信道要优于二进制对称信道。
五、实验心得及总结
本学期学了现代编码理论,对编码的概念和原理有了很大的理解,而本次实验我们选择了卷积码的编码和Viterbi译码的性能分析。我们在前期看现代编码理论卷积码这块知识点的时候,花了很长时间才搞懂,尤其是Viterbi译码的算法,在用matlab进行性能分析的时候,从matlab的熟悉及相关子函数的编写,期间用到了很多问题,通过查询相关资料,问同学等方式最后得到解决,尤其是最后跑不同码率的卷积码性能分析的时候,由于时间长,况且中间出现了很多错误,在老师及同学的帮助下,解决了问题,完成了实验。
六、分工状况
我与XX一起翻看了书本,共同定下了课题及主要大纲,然后一起讨论和查阅资料,写下了程序。然后,她进行了程序的测试,我写了报告。
七、文献
《信道编码与MATLAB仿真》
刘东华
向良军著
电子工业出版社