您好,欢迎来到独旅网。
搜索
您的当前位置:首页34卷积码编码原理分析与建模仿真

34卷积码编码原理分析与建模仿真

来源:独旅网
3/4卷积码编码原理分析与建模仿真

一、摘要

卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。 本文简明地介绍了卷积码的编码原理和Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分析了卷积码误比特率与信噪比之间的关系,及卷积码与非卷积码的对比。经过仿真和实测,并对测试结果作了分析。

关键词:卷积码编码 建模 SIMULINK仿真

目录

一、摘要 ................................................................................................................................................................. - 1 - 二、设计目的和意义 ............................................................................................................................................. - 2 - 三、设计原理 ......................................................................................................................................................... - 3 -

3.1 卷积码基本概念 ...................................................................................................................................... - 3 - 3.2 卷积码的结构 .......................................................................................................................................... - 3 - 3.3 卷积码的解析表示 .................................................................................................................................. - 4 - 3.4 卷积码的译码 .......................................................................................................................................... - 4 -

3.4.1 卷积码译码的方式........................................................................................................................ - 4 - 3.5.2 卷积码的Viterbi译码 .................................................................................................................. - 5 -

四、详细设计步骤 ................................................................................................................................................. - 6 -

4.1 卷积码的仿真 .......................................................................................................................................... - 6 -

4.1.1 SIMULINK仿真模块的参数设置及意义 ................................................................................. - 6 -

五、设计结果及分析 ........................................................................................................................................... - 11 -

5.1不同信噪比对卷积码的影响 .................................................................................................................. - 11 - 5.2卷积码的对比 ........................................................................................................................................ - 12 - 六、总结 ............................................................................................................................................................... - 14 - 七、体会 ............................................................................................................................................................... - 14 - 八、参考文献 ....................................................................................................................................................... - 14 -

二、设计目的和意义

因为信道中信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种

是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件,不是所有情况都能采用。而编码理论可以解决这个问题,使得成本降低,实用性增强。

随着现代通信的发展,卷积码以其高速性和可靠性在实际应用中越来越广泛。1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一。在卷积码中,因为Viterbi算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。特别是深空通信、卫星通信系统中。因此采用Viterbi译码算法具有非常现实的意义。

三、设计原理

本文在分析卷积码编译码器原理的基础上,通过MATLAB的SIMULINK模块对卷积编码、解码进行仿真。通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行了分析。得出卷积码Viterbi译码的误比特性能的分析,从而验证了卷积码的正确性。 3.1 卷积码基本概念

卷积码是一种性能优越的信道编码。(n ,k ,N) 表示把k个信息比特编成n个比特,N为编码约束长度,说明编码过程中互相约束的码段个数。卷积码编码后的n 个码元不仅与当前组的k个信息比特有关,而且与前N - 1个输入组的信息比特有关。编码过程中相互关联的码元有N ×n个。R = k/n是卷积码的码率,码率和约束长度是衡量卷积码的两个重要参数。

卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。卷积码的纠错能力随着N的增加而增大,而差错率随着N的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。分组码的译码算法可以由其代数特性得到。卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能不如维特比译码和序列译码。 3.2 卷积码的结构

图2-1

卷积码的编码器一般都比较简单。图2-1是一般情况下的卷积码编码器框图。它包括:一个由N段组成的输入移位寄存器,每段有k级,共Nk位寄存器;一组n个模2和相加器;一

个由n级组成的输出移位寄存器。对应于每段k个比特的输入序列,输出n个比特。由图可知,n个输出比特不但与当前k个比特的输入比特有关,而且与以前的(N-1)k个输入信息有关。整个编码过程可以看成是输入信息序列与由移位寄存器和模2加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名。

输入序列输出序列 图2-2

如图2-2是卷积码(4,3,2)卷积编码器的一个框图。左边是信息的输入。下面分别是系统位输出和校验位输出。其中间是6个移位寄存器和4个模2加法器。简单的说就是信息位经过移位寄存器和一个模2加法器产生一个系统位和校验位加在一起输出。可以看出:每输入一个比特,移位寄存器中就向右移动一个位子。原来的第四个寄存器就被移出。可见卷积编码不只与现在的输入比特有关还与前面的1个比特有关。在这里,其中约束长度是N=2,k=3 ,n=4所以码率R=k/n=3/4。 3.3 卷积码的解析表示

除上述图解表示方法外,常常还用解析表示方法描述卷积码,即延时算子多项式。在延时算子多项式表示中,编码器中的移位寄存器与模2加法器的连接关系以及输入、输出序列都表示为延时算子D的多项式。在一般情况下,输入序列可表示为:

M(D)m1m2Dm3D2... (3-1)

变量D的幂的次数等于相对于时间起点的单位延时数目,时间起点通常选在第1个输出比特,ml,m2,m3,m...为输入比特的二进制表示(1或0)。用D算子多项式表示移位寄存器各级与各模2项连接关系时。若某级寄存器与某模2和相连,则多项式中相应项的系数为1,否则为0(表示无连接)。

通常把表示移位寄存器与模2和连接关系的多项式称为生成多项式,因为由它们可以用多项式相乘计算出输出序列。卷积码的图解与解析表示方法各有特点。用延时算子多项式表示卷积码编码器的生成多项式最为方便。网格图对于分析卷积码的译码算法十分有用。

3.4 卷积码的译码 3.4.1 卷积码译码的方式

卷积码的译码方式有三种:(1)1963年由梅西((Massey)提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码;(2) 1963年由费诺(Fano)改进的序列译码,这是基于码的树状图结构上的一种准最佳的概率译码;(3) 1967年由维特比提出的

Viterbi算法。这是基于码的网(trellis)图基础上的一种最大似然译码算法,是一种最佳的概率译码方法。其中,代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。另一类是概率译码,这种译码通常建立在最大似然准则的基础上。由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。常用的概率译码方法有维特比译码和序列译码。维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之间。 3.5.2 卷积码的Viterbi译码

卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。这样一直进行到最后第L级(L为发送序列的长度)。由于这种方法较早地丢弃了那些不可能的路径,从而减轻了译码的工作量,Viterbi译码正是基于这种想法。 对于(n, k, K )卷积码,其网格图2kL种状态。由网格图的前K-1条连续支路构成的路径互不相交,即最初2k_1条路径各不相同,当接收到第K条支路时,每条路径都有2条支路延伸到第K级上,而第K级上的每两条支路又都汇聚在一个节点上。在Viterbi译码算法中,把汇聚在每个节点上的两条路径的对数似然函数累加值进行比较,然后把具有较大对数似然函数累加值的路径保存下来,而丢弃另一条路径,经挑选后第K级只留下2K条幸存路径。选出的路径同它们的对数似然函数的累加值将一起被存储起来。由于每个节点引出两条支路,因此以后各级中路径的延伸都增大一倍,但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数。由此可见,上述译码过程中的基本操作是,“加-比-选”,即每级求出对数似然函数的累加值,然后两两比较后作出选择。有时会出现两条路径的对数似然函数累加值相等的情形,在这种情况下可以任意选择其中一条作为“幸存”路径。

卷积码的编码器从全零状态出发,最后又回到全零状态时所输出的码序列,称为结尾卷积码。因此,当序列发送完毕后,要在网格图的终结处加上(K-1)个己知的信息作为结束信息。在结束信息到来时,由于每一状态中只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。因此,在接收到(K-1)个己知信息后,在整个网格图中就只有唯一的一条幸存路径保留下来,这就是译码所得的路径。也就是说,在己知接收到的序列的情况下,这条译码路径和发送序列是最相似的。

由上述可见,Viterbi译码过程并不复杂,译码器的运行是前向的、无反馈的。它接收一段,计算一段,选择一段最可能的码段(分支),从而达到整个码序列是一个有最大似然函数的序列。传输序列很长时,判决需要的长延时和相当大的存储量是我们无法承受的。

因此,实际应用中采用截短Viterbi算法,即不需要接收到所有序列才进行判决,当译码器接收并处理完了固定的T (T <四、详细设计步骤

4.1 卷积码的仿真

图4-1卷积码的编码译码框图

如上图4-1的信号流程可以表示为先由Bernoulli Binary Generator(贝努利二进制序列产生器)产生一个0,1等概序列,经过Convolutional Encoder(卷积编码器)对输入的二进制序列进行卷积编码,并用BPSK调制方式调制信号。加入信道噪声(高斯白噪声)后再经过BPSK解调制后送入Viterbi Decoder(Viterbi译码器)进行硬判决译码。最后经过Error Rate Calculation(误码统计)后由Display(显示)输出。然后通过Selector(数据选通器)将结果输出到To workspace(工作区间)。 4.1.1 SIMULINK仿真模块的参数设置及意义

在建立如图4-1的仿真模块后,对各个模块分别一一进行设置后并运行仿真。

图4-2贝努利二进制序列产生器模块的设置框图

如上图4-2是贝努利二进制序列产生器模块的设置框图,其中参数有三项:第一项probability of a zero取值为0.5,表示0和1出现的概率相等。Initial seed 表示随机种子数。不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。Sample time=0.0001表示抽样时间,也就是说输出序列中每个二进制符号的持续时间是0.0001秒。Samples per frame 表示每帧的抽样数用来确定每帧的抽样点的数目。Output date type 是用来确定帧的输出格式。

图4-3卷积编码器模块的设置框图

如上图4-3是卷积编码器模块的设置框图。其中Trellis structure( Trellis结构)中通过poly2trellis()函数把卷积码的约束长度,生成多项式以及反馈多项式转换成Trellis结构的形式。

图4-4 BPSK调制器模块的设置框图

如上图4-4是BPSK调制器模块的设置框图。Phase offset(rad)(相位偏移),这里设置为0。

图4-5误比特统计模块的设置框图

如上图4-5是误比特统计模块的设置框图。其中Receive delay表示接收延迟,意思是在通信接收端口需要对接收到的信号进行解调,解码或解交织而带来一定的延迟,使得到达误码统计模块接收端的信号滞后于发送端的信号。为了补偿这种延迟这里设置为0。Computation delay表示计算延迟,在仿真过程中,有时间需要忽略最初的若干个输入数据就通过计算延迟来实现。这里设置为0。Computation mode表示计算模式,帧的计算模式(Entire frame),误码统计模块对发送端和接收端的所有输入数据进行统计。output data是输出数据,这里设置为Port的意思是表示把统计数据从端口中输出。workspace表示把统计数据输出到工作区。

图4-6 数据选通器模块的设置框图

如上图4-6是数据选通器模块的设置框图。Input port width表示输入端口的个数为3。

图4-7卷积码译码器模块的设置框图

如上图4-7是卷积码译码器模块的设置框图。Trellis structure: Trellis结构(前面已说明)。Decision type是指判决类型,有3种:(1)Unquantized(非量化)(2)Hard Decision(硬判决),(3)Soft Decision(软判决) Traceback depth表示反馈深度。它的值会影响译码精度和解码延迟。Operation mode是指操作模式。在Truncated模式下,解码器在每帧数据结束的时候总能恢复到全0状态,它与卷积编码器的on each frame复位方式相对应。

五、设计结果及分析

5.1不同信噪比对卷积码的影响

如下图4-10,对于码率一定的卷积码,当信道信噪比发生变化时,系统的误码性能也会随之发生变化, 我们以码率R = 3/4的卷积码为例展开分析。从图5-1中的误比特率曲线可以看到,当码率为3/4一定时,在SNR>-2dB时,系统的误比特率迅速下降。

010误码率随信噪比的变化图10-110-210-310-10-4-8-6-4-2024

图5-1不同的信噪比卷积码误码性能的影响

分析不同约束长度对卷积码误码性能影响用到的程序如下: clc;

x=-10:5;%x表示信噪比 y=x;%y表示信号的误比特率 hold off;%准备一个空白图形 for i=1:length(x)

SNR=x(i); %信道的信噪比依次取x中的元素

sim('convh'); %运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate

y(i)=mean(BitErrorRate); %计算BitErrorRate的均值作为本次仿真的误比特率

end

semilogy(x,y);%绘制x和y的关系曲线图,纵坐标采用对数坐标 grid on,title('误码率随信噪比的变化图') hold on%保持已经绘制的图 5.2卷积码的对比

如图5-2所示结果,在信噪比超过10dB之后,卷积编码传输与非卷积编码传输的误比特率基本相等,而在SNR<10时,卷积编码的传输误比特率远小于非卷积编码传输的情况。

误码率对比图没有卷积卷积0.70.60.50.40.30.20.10 0 51015

图5-2卷积码与非卷积码误码率对比图

卷积码与非卷积码误码率对比的程序如下: SNR=1:0.5:15; %信噪比取值;单位为db\\ Ns=10;

datalength=256; %每个数据符号中可用子载波

error_bit_rata_code=0; %经卷积编码后解调出的数据的误比特率 error_bit_rata_nocode=0; %未经卷积编码后解调出的数据的误比特率 for i=1:1:29

Signal=double(rand(1,datalength*Ns)>0.5); trel = poly2trellis(7,[155 117]);

code = convenc(Signal,trel); %进行串并转化

Para=reshape(code,datalength,2*Ns);

%进行QPSK数据调制,将数据分为两个通道,SigPara为datalength行2Ns列 for j=1:Ns

s1(:,j)=Para(:,2*j-1);%ich为datalength行Ns列 s2(:,j)=Para(:,2*j); end

kmod=1./sqrt(2); s1=s1.*kmod; s2=s2.*kmod;

x=s1+s2.*sqrt(-1); % 产生复信号

y=ifft(x); %通过傅立叶反变换,将频域数据转换为时域数据 ich2=real(y); %I信道取变换后的实部 qch2=imag(y); %Q信道取变换后的虚部 ich4=reshape(ich2,1,datalength*Ns); qch4=reshape(qch2,1,datalength*Ns); TrData=ich4+qch4.*sqrt(-1); % 加入高斯白噪声

ReData=awgn(TrData,SNR(i),'measured');

idata=real(ReData); qdata=imag(ReData); %进行串并转化

idata1=reshape(idata,datalength,Ns); qdata1=reshape(qdata,datalength,Ns); Rex=idata1+qdata1.*sqrt(-1); ry=fft(Rex); ReIChan=real(ry); ReQChan=imag(ry); ReIChan=ReIChan/kmod; ReQChan=ReQChan/kmod; for j=1:Ns

RePara(:,2*j-1)=ReIChan(:,j); RePara(:,2*j)=ReQChan(:,j); end

ReSig=reshape(RePara,1,datalength*Ns*2);

%符号抽样判决

ReSig=double(ReSig>0.5); %维特比译码

tblen= log2(trel.numInputSymbols)

[d m p in] =vitdec(ReSig,trel,tblen,'cont','soft',1); %统计错误比特数,并计算误比特率

error_bit_code=sum(abs(d(2:datalength*Ns)-Signal(1:datalength*Ns-1))) ; error_bit_nocode(i)=sum(abs(ReSig-code));

error_bit_rata_code1=error_bit_code/length(Signal); error_bit_rata_code(i)=error_bit_rata_code1;

error_bit_rata_nocode(i)=error_bit_nocode(i)/2/length(Signal); end figure(1);

plot(SNR,error_bit_rata_nocode,'-ro',SNR,error_bit_rata_code,'-.b'); grid on,title('误码率对比图') h=legend('没有卷积','卷积',1); grid on;

六、总结

本文在分析卷积码编译码器原理的基础上,通过基于MATLAB的SIMULINK对卷积编码、解码进行仿真。通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行了分析。得出卷积码Viterbi译码的误比特性能的分析,从而验证了卷积码的正确性。

七、体会

刚开始接触到卷积码的设计我感觉设计任务很重。以前没有接触到,课上也没有做过讲解。慢慢自己根据课本进行学习。我又通过在互联网上查找资料和向老师请教咨询,总算把此次设计完成了。尤其是秦老师的指导,使我在Simulink仿真中收获很多,通过此次的课程设计我在matlab仿真上进步了很多。

理论方面,在深入了解了用于卷积码的Viterbi译码算法基本原理后,进一步将其拓展到SIMULINK模块仿真方面的应用,对卷积码编码译码有了一个系统的认识。经过很多次的尝试我终于完成了这次课程设计。 这次课程设计我了解了很多课本中没有的东西。包括MATLAB软件的使用、模块的数据调试。我获益良多,我会继续努力,学习更多的知识。

八、参考文献

[1]孙祥,徐流美,吴清. Matlab7.0基础教程.清华大学出版社,2005.5 [2] 曹志刚、钱亚生.现代通信原理.清华大学出版社,2013.11

[3] Rodger E.Ziemer,Roger L.Peterson著. 尹长川,郝建军,罗涛 等 译. 数字通信基础 (Introduction to Digital Communication). 原书第2版.机械工业出版社,2005.1

[4] 樊昌信,张甫翊,徐炳祥,吴成柯. 通信原理.第5版.国防工业出版社,2007.1 [5] 邓华. Matlab通信仿真及应用实例详解.人民邮电出版社,2003.9 [6]陈国通. 数字通信.哈尔滨工业大学出版社,2002.4

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dcrkj.com 版权所有 赣ICP备2024042791号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务