基于matlab的23卷积码编码译码设计与仿真毕业设计.docx
《基于matlab的23卷积码编码译码设计与仿真毕业设计.docx》由会员分享,可在线阅读,更多相关《基于matlab的23卷积码编码译码设计与仿真毕业设计.docx(21页珍藏版)》请在冰点文库上搜索。
基于matlab的23卷积码编码译码设计与仿真毕业设计
方向设计报告
课程名称:
通信工程方向设计
设计名称:
2/3卷积码编译码器仿真与性能分析
方向设计任务书
学生班级:
学生姓名:
学号:
设计名称:
2/3卷积码编译码器仿真与性能分析
起止日期:
2011.12.12-2012.1.6指导教师:
设计要求:
(1)分析2/3卷积码编码器结构;
(2)分析2/3卷积码译码的Viterbi算法;
(3)基于SIMULINK进行2/3卷积码的纠错性能仿真;
方向设计学生日志
时间
设计内容
12.15-12.17
查看题目及设计要求。
12.18-12.23
查阅相关资料,设计方案。
12.23-12.27
编写报告及调试程序。
12.28-12.29
完善修改课程设计报告。
12.30-12.31
答辩。
方向设计考勤表
周
星期一
星期二
星期三
星期四
星期五
方向设计评语表
指导教师评语:
成绩:
指导教师:
年月日
2/3卷积码编译码器仿真与性能分析
摘要:
卷积码是一种性能优越的信道编码。
它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。
随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。
本文简明地介绍了卷积码的编码原理和Viterbi译码原理。
并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。
最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。
经过仿真和实测,并对测试结果作了分析。
关键词:
卷积码编码器、viterbi译码器、SIMULINK
目录
一设计目的和意义1
二设计方法1
三设计原理1
3.1卷积码的基本概念1
3.2卷积码的结构2
3.3卷积码的图解表示3
3.3.1卷积码的树状图3
3.3.2卷积码网格图4
3.4卷积码的解析表示4
3.5卷积码的译码5
3.5.1卷积码译码的方式5
3.5.2卷积码的viterbi译码6
四SIMULINK下的仿真设计7
4.1SIMULINK下卷积码的仿真7
4.1.1SIMULINK仿真模块参数设置及意义8
4.2改变卷积码参数分析12
4.2.1回溯长度对卷积码的影响12
4.2.2约束长度对卷积码的影响14
五心得体会15
六参考文献15
一、设计目的和意义
因为信道中信号不可避免会受到干扰而出错。
为实现可靠性通信,主要有两种途径:
一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。
前者常常受条件限制,不是所有情况都能采用。
而编码理论可以解决这个问题,使得成本降低,实用性增强。
随着现代通信的发展,卷积码以其高速性和可靠性在实际应用中越来越广泛。
1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一。
在卷积码中,因为Viterbi算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。
特别是深空通信、卫星通信系统中。
因此采用Viterbi译码算法具有非常现实的意义。
二、设计方法
本文在分析卷积码编译码器原理的基础上,通过基于MATLAB的SIMULINK下的模块对卷积编码,解码进行仿真。
通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行了分析。
得出卷积码Viterbi译码的误比特性能和回溯长度,码率,约束长度的关系。
三、设计原理
3.1卷积码基本概念
卷积码是一种性能优越的信道编码。
(n,k,N)表示把k个信息比特编成n个比特,N为编码约束长度,说明编码过程中互相约束的码段个数。
卷积码编码后的n个码元不仅与当前组的k个信息比特有关,而且与前N-1个输入组的信息比特有关[6]。
编码过程中相互关联的码元有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是卷积码(3,2,2)卷积编码器的一个框图。
左边是信息的输入。
下面分别是系统位输出和校验位输出。
其中间是四个移位寄存器和三个模2加法器。
简单的说就是信息位经过移位寄存器和一个模2加法器产生一个系统位和校验位加在一起输出。
可以看出:
每输入一个比特,移位寄存器中就向右移动一个位子。
原来的第四个寄存器就被移出。
可见卷积编码不只与现在的输入比特有关还与前面的1个比特有关。
在这里,其中约束长度是N=2,k=2,n=3所以码率R=k/n=2/3。
3.3卷积码的图解表示
3.3.1卷积码的树状图
对于图2-2所示的(3,2,2)卷积码编码电路,其树状图如下图2-3所示。
若寄存器初始状态为全0,第一组输入的两个信息比特可以是:
00,01,10,11,与他们对应的输出比特是000,010,111,101。
第二组两个输入比特进入移位寄存器时,第一组两个输入比特右移到右边那组寄存器,此时输出比特不但取决于当前的二个输入比特,而且取决于第一组的二个输入比特。
由于每组输入两个比特,因此树状图每个节点有2的平方条支路。
由于约束长度为2从第二级后开始重复出现4种状态,可以得到整个树状图。
如下图2-3
图2-3
3.3.2卷积码的网格图
如下图2—4是(3,2,2)卷积编码的网格图。
图2-4(3,2,2)卷积编码的网格图
图2-5(3,2,2)卷积码的状态图
3.4卷积码的解析表示
除上述图解表示方法外,常常还用解析表示方法描述卷积码,即延时算子多项式。
在延时算子多项式表示中,编码器中的移位寄存器与模2加法器的连接关系以及输入、输出序列都表示为延时算子D的多项式。
在一般情况下,输入序列可表示为:
(2-1)
变量D的幂的次数等于相对于时间起点的单位延时数目,时间起点通常选在第1个输出比特,ml,m2,m3,m...为输入比特的二进制表示(1或0)。
用D算子多项式表示移位寄存器各级与各模2项连接关系时。
若某级寄存器与某模2和相连,则多项式中相应项的系数为1,否则为0(表示无连接)。
通常把表示移位寄存器与模2和连接关系的多项式称为生成多项式,因为由它们可以用多项式相乘计算出输出序列。
卷积码的图解与解析表示方法各有特点。
用延时算子多项式表示卷积码编码器的生成多项式最为方便。
网格图对于分析卷积码的译码算法十分有用。
3.5卷积码的译码
3.5.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<T称为截短深度,T选的足够大时,则对译码器输出的译码错误概率影响很小。
四、SIMULINK下仿真设计
4.1卷积码的仿真
图4-1卷积码的编码译码框图
如上图4-1的信号流程可以表示为先由BernoulliBinaryGenerator(贝努利二进制序列产生器)产生一个0,1等概序列,经过ConvolutionalEncoder(卷积编码器)对输入的二进制序列进行卷积编码,并用BPSK调制方式调制信号。
加入信道噪声(高斯白噪声)后再经过BPSK解调制后送入ViterbiDecoder(Viterbi译码器)进行硬判决译码。
最后经过ErrorRateCalculation(误码统计)后由Display(显示)输出。
然后通过Selector(数据选通器)将结果输出到Toworkspace(工作区间)。
4.1.1SIMULINK仿真模块的参数设置及意义
在建立如图4-1的仿真模块后,对各个模块分别一一进行设置后并运行仿真。
图4-2贝努利二进制序列产生器模块的设置框图
如上图4-2是贝努利二进制序列产生器模块的设置框图,其中参数有三项:
第一项probabilityofazero取值为0.5,表示0和1出现的概率相等。
Initialseed表示随机种子数。
不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。
Sampletime=0.0001表示抽样时间,也就是说输出序列中每个二进制符号的持续时间是0.0001秒。
Samplesperframe表示每帧的抽样数用来确定每帧的抽样点的数目。
Outputdatetype是用来确定帧的输出格式。
Poly2trellis()函数的参数计算
(1,1)连接情况是第一、第四和第一个相连所以用向量表示为"10011"用八进制表示为"23"(1,2)="11,101"="35";(1,3)="0000"="0";(2,1)="0000"="0";(2,2)="0,101"="05";(2,3)="1,011"="13",最后得到[23,35,0;0,05,13]。
图4-4卷积编码器模块的设置框图
如上图4-4是卷积编码器模块的设置框图。
其中Trellisstructure(Trellis结构)中通过poly2trellis()函数把卷积码的约束长度,生成多项式以及反馈多项式转换成Trellis结构的形式。
图4-3BPSK调制器模块的设置框图
如上图4-3是BPSK调制器模块的设置框图。
Phaseoffset(rad)(相位偏移),这里设置为0。
图4-5误比特统计模块的设置框图
如上图4-5是误比特统计模块的设置框图。
其中Receivedelay表示接收延迟,意思是在通信接收端口需要对接收到的信号进行解调,解码或解交织而带来一定的延迟,使得到达误码统计模块接收端的信号滞后于发送端的信号。
为了补偿这种延迟这里设置为0。
Computationdelay表示计算延迟,在仿真过程中,有时间需要忽略最初的若干个输入数据就通过计算延迟来实现。
这里设置为0。
Computationmode表示计算模式,帧的计算模式(Entireframe),误码统计模块对发送端和接收端的所有输入数据进行统计。
outputdata是输出数据,这里设置为Port的意思是表示把统计数据从端口中输出。
workspace表示把统计数据输出到工作区。
图4-6数据选通器模块的设置框图
如上图4-6是数据选通器模块的设置框图。
Inputportwidth表示输入端口的个数为3。
图4-7卷积码译码器模块的设置框图
如上图4-7是卷积码译码器模块的设置框图。
Trellisstructure:
Trellis结构(前面已说明)。
Decisiontype是指判决类型,有3种:
(1)Unquantized(非量化)
(2)HardDecision(硬判决),(3)SoftDecision(软判决)Tracebackdepth表示反馈深度。
它的值会影响译码精度和解码延迟。
Operationmode是指操作模式。
在Truncated模式下,解码器在每帧数据结束的时候总能恢复到全0状态,它与卷积编码器的oneachframe复位方式相对应。
4.2改变卷积码的参数分析
4.2.1回溯长度对卷积码的影响
将译码模块中的Tracebackdepth分别设置为20,35,50并在一个图中画出这三种方式下的误码性能曲线得到下图4-8。
从上到下的三条曲线分别是Tracebackdepth为20,35,50。
可以看出:
回溯长度在Viterbi译码过程中一个很重要的参数,他决定了译码延迟,随着他的不断变化,误码性能也随误比特率曲线可以清楚地看到,当回溯长度一定时,随着信道噪声的逐渐提高,系统的误比特率逐渐降低;当回溯长度逐渐增加,系统的误比特率随之逐渐降低,当回溯程度τ增加一定程度时,误比特率数值趋于稳定。
图4-8回溯长度对卷积码误码性能的影响
不同回溯长度对卷积码误码性能的影响程序如下:
x=-10:
5;%x表示信噪比
y=x;%y表示信号的误比特率,它的长度与x相同
holdoff;%准备一空白图形
%重复运行convh.mdl,检验不同条件下硬判决译码的性能
fori=1:
length(x)
SNR=x(i);%信道的信噪比依次取x中的元素
sim('juanjima');%运行仿真程序,误比特率保持在BitErrorRate中
y(i)=mean(BitErrorRate);%计算BitErrorRate的均值作为本次仿真的误比特率
end
semilogy(x,y);%绘制x和y的关系曲线图,纵坐标采用对数坐标
holdon;%保持已经绘制的图形
fori=1:
length(x)
SNR=x(i);
sim('juanjima2');
y(i)=mean(BitErrorRate);
end
semilogy(x,y);
holdon;
fori=1:
length(x)
SNR=x(i);
sim('juanjima3');
y(i)=mean(BitErrorRate);
end
semilogy(x,y);
xlabel('SNR')
ylabel('BitErrorRate')
gridon;
4.2.2约束长度对卷积码的影响
如下图4-10,对于码率一定的卷积码,当约束长度N发生变化时,系统的误码性能也会随之发生变化,我们以码率R=2/3的([5,4],[23,35,0;0,05,13])和([3,2],[7,3,0;0,3,3])卷积码为例展开分析。
较弯曲的曲线是([5,4],[23,35,0;0,05,13)卷积码的误码性能曲线。
较直的曲线是([3,2],[7,3,0;0,3,3])卷积码的误码性能曲线。
从图4-4中的误比特率曲线可以看到,当码率为2/3一定时,在SNRt时,增加约束长度可以降低系统的误比特率。
图4-10约束长度对卷积码误码性能的影响
分析不同约束长度对卷积码误码性能影响用到的程序如下:
x=0:
5;
y=x;
fori=1:
length(x)
SNR=x(i);
sim('juanjima');
y(i)=mean(BitErrorRate);
end
semilogy(x,y);
holdon;
fori=1:
length(x)
SNR=x(i);
sim('juanjima2');
y(i)=mean(BitErrorRate);
end
semilogy(x,y);
xlabel('SNR')
ylabel('BitErrorRate')
五、心得体会
对于这个课题。
刚拿到手的时候觉得真是无从下手。
以前没有接触到,不知道从哪里开始。
还好最后在《现代通信原理》这本书上找到了相关知识的介绍。
我又通过在互联网上查找资料和向老师请教咨询,总算把此次设计完成了。
尤其是秦老师的指导,让我少走了不少弯路。
设计中要用到的Simulink仿真软件,我接触的不多,借助于相关资料,通过自己的努力和老师的帮助,最终掌握了仿真的基本方法。
理论方面,在深入了解了用于卷积码的Viterbi译码算法基本原理后,进一步将其拓展到SIMULINK模块仿真方面的应用,对卷积码编码译码有了一个系统的认识。
经过很多次的尝试我终于完成了这次课程设计。
这次课程设计我了解了很多课本中没有的东西。
包括一些软件的使用,运行,模块的数据调试。
我获益良多,我会继续努力,学习更多的知识。
六、参考文献
[1]《MATLAB基础与编程入门》西安电子科技大学出版社张威编
[2]《现代通信原理》清华大学出版社曹志刚、钱亚生编
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它