卷积码编译码课设 (2)_第1页
卷积码编译码课设 (2)_第2页
卷积码编译码课设 (2)_第3页
卷积码编译码课设 (2)_第4页
卷积码编译码课设 (2)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文对卷积码和卷积码的编译码有一个简单的介绍且给出了信道编码的发展历史及研究状况,然后详细讨论了(2,1,2)卷积码的编码过程和译码过程,通过状态转移方程和输出方程得出状态转移表和状态转移图,然后通过维特比译码器研究,总结出了维特比译码算法,最后通过Matlab软件进行设计与仿真,得到了编码程序和译码程序,其运行结果与理论分析一致。关键字 卷积码编码、信道编码、Viterbi译码、MATLAB仿真目录摘要1一、引言31.1发展历史及研究状

2、况31.2设计目的和意义31.3设计方法4二、卷积码编译码原理52.1 卷积码编码原理52.2编码器62.3 卷积码译码原理72.4 VITEBI 译码的关键步骤82.4.1 输入与同步单元82.4.2 支路量度计算82.4.3 路径量度的存储与更新82.4.4 信息序列的存储与更新82.4.5 判决与输出单元8三、卷积码编码实现93.1 编码原理分析93.2 卷积码编码流程图10四、卷积码译码实现114.1 译码编程思路114.2 卷积码译码流程图11五、卷积码编译码程序的编译及仿真波形115.1 卷积码编码仿真125.2卷积码译码仿真135.3卷积码纠错码仿真14六、总结15七、参考文献1

3、6附录17一、引言1.1发展历史及研究状况1948年,Bell实验室的C.E.Shannon发表的通信的数学理论,是关于现代信息理论的奠基性论文,它的发表标志着信息与编码理论这一学科的创立。20世纪40年代,R.Hamming和M.Golay提出了第一个实用的差错控制编码方案,使编码理论这个应用数学分支的发展得到了极大的推动。分组码所存在的固有缺点可以通过采用其他的编码方法来改善,这种编码方法就是卷积码。卷积码是Elias等人在1955年提出的。卷积码与分组码的不同在于:它充分利用了各个信息块之间的相关性。通常卷积码记为(n,k,N)码。卷积码的编码过程是连续进行的,依次连续将每k个信息元输入

4、编码器,得到n个码元,得到的码元中的检验元不仅与本码的信息元有关,还与以前时刻输入到编码器的信息元(反映在编码寄存器的内容上)有关。同样,在卷积码的译码过程中,不仅要从本码中提取译码信息,还要充分利用以前和以后时刻收到的码组从这些码组中提取译码相关信息,而且译码也是可以连续进行的,这样可以保证卷积码的译码延时相对比较小。通常,在系统条件相同的条件下,在达到相同译码性能时,卷积码的信息块长度和码字长度都要比分组码的信息块长度和码字长度小,相应译码复杂性也小一些。卷积码的译码通常有如下几个比较流行的译码算法: 由Wozencraft和Reiffen在1961年提出,Fano和Jelinek分别在1

5、963年和1969年进行改进了的序贯译码算法。该算法是基于码字树图结构的一种次最优概率译码算法。 由Massey在1963年提出的门限译码算法。这个算法利用码字的代数结构进行代数译码。 由Viterbi在1967 年提出的Viterbi算法是基于码字格图结构的一种最大似然译码算法,是一种最优译码算法。 在Viterbi译码算法提出之后,卷积码在通信系统中得到了极为广泛的应用。如GSM、3G、商业卫星通信系统等。1.2设计目的和意义因为信道中信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。

6、前者常常受条件限制,不是所有情况都能采用。而编码理论可以解决这个问题,使得成本降低,实用性增强。随着现代通信的发展,卷积码以其高速性和可靠性在实际应用中越来越广泛。1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一。在卷积码中,因为Viterbi算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。特别是深空通信、卫星通信系统中。因此采用Viterbi译码算法具有非常现实的意义。1.3设计方法本文在分析卷积码编译码器原理的基础上,通过基于MATLAB对卷积编码,解码进行仿真。通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行

7、了分析。得出卷积码Viterbi译码的误比特性能和回溯长度,码率,约束长度的关系。二、卷积码编译码原理2.1 卷积码编码原理2.1.1卷积码简介 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。若以(n,k,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n为每个k元组码字对应的卷积码输出n元组码字,m为编码存储度,也就是卷积编码器的k元组的级数,称m+1= K为编码约束度m称为约束长度。卷积码将k元组输入码元编成n元组输出码元,但k和n通常很小,特别适合以串行形式进行 传输,时延小。与分组码不同,卷积码编码生成的n元组元不仅与当前输入的k元组有关

8、,还与前面m-1个输入的k元组有关,编码过程中互相关联的码元个数为n*m。卷积码的纠错性能随m的增加而增大,而差错率随N的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。卷积码编码的当前输出v(l)不仅与当前输入消息u(l)相关,还与此去前输入的m个消息u(l-1),u(l-m) 相关,即v(l)=f(u(l),u(l-1),u(l-m), l=0,1,2 卷积编码电路中移位寄存器初态可设定为全0,电路为按段工作方式,即对每段k比特输出入,产生一段n比特输出。任意一输入段u(l-h)与输出v(l)的关系都是一个特殊的(n,k)线性分组码的编码关系,即存在k*n的二元矩阵 ,

9、使得 , h=0,1,2,m ·因此对于消息段序列u=(u(0),u(1),,u(m),u(m+1),),相应的输出端序列为v=(v(0),v(1),v(m),v(m+1),),并满足卷积编码电路在按段工作方式下只需存储或者记忆m段的消息输入,电路中输入移位寄存器最多只有个有效的寄存器单元,而输出移位寄存器仅起一个并串转换作用。因此称参量m为卷积码的记忆长度(段)。 二元(n,k,m)卷积码共有个不同的状态,记为 当状态为(或)时,输入段(或u)产生编码输出端(或v) 并使该状态改变(或称为转移)到新的状态(或)。到的转移过程称为一个转移分支,记为(,)或(,)并标记转移过程为或v/

10、u。以状态为结点,转移分支为有向边描述卷积码的所有不同状态转移的有向图,称为卷积码的状态转移图。2.2编码器 22.1编码器的一般结构卷积码的编码器一般都比较简单。图2-1是一般情况下的卷积码编码器框图。它包括NK级的输入移位器,一组n个模2和加法器和n级的输出移位寄存器 6。对应于每段k比特的输入序列,输出n个比特。由图可知,n个输出比特不但与当前的k个输入比特有关,而且与以前的(N-1)k个输入信息比特有关。整个编码过程可以看成是输入信息序列与由移位寄存器和模2加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名。本文采用的是冲击响应描述法编码思想。2.22编码器的参数 有k个输入信息

11、端,n 个输出端(k<n),K-1节移位寄存器(共需k(K-1)个寄存器单元),称做(n,k,K)卷积码。 通常称K为约束长度(一般来说,约束长度越大,则码字纠错性能越好)。 码的效率:k/n 编码前,k(K-1)个寄存器单元全部复位清零。 由于一段消息不仅影响当前段的编码输出,还影响其后m 段的编码输出,所以称参量为卷积吗的约束比特长度为注意进入卷积编码器的最后m段消息仍是要编码输出的消息,对这最后m段消息的编码处理,称作卷积编码的结尾处理。一种常见的结尾处理方法是额外输入m段无效的0数据比特,一方面将存储的m 段消息编码全部推出,另一方面保证编码器回到全0的初态。 2.3 卷积码译码

12、原理维特比算法的基本思想是把接收到的矢量,和网格图上诸种可能的路径比较,删去距离大的路径,保留距离小的路径,以距离最小路径作为发码的估值。它的原理是将接收到的信号序列和所有可能的发送信号序列作比较,选择其中汉明距离最小的序列作为现在的发送信号序列。为简便起 见 ,讨论(n,k,N)卷积码当k=1的情形,从全0状态起始点开始讨论。由卷积码网格图的前N-1级中支路构成的路径互不相交,即最初的2N-r条路径各不相同;当到达第N级时,每条路径都有2N-1条支路延伸到第N级上;而第N级上的每2条支路又都汇聚在一个节点上。第N级以后的网格图图形完全是重复第N级的图形。在维特比算法中,把汇聚在每个节点上的2

13、条路径的对数似然函数累加值进行比较;然后把具有较大对数似然函数累加值的路径保存下来,称此部分路径为幸存路径,而丢弃另一条路径;经挑选后,第N级只留下2N-r条幸存路径,选出的路径连同它们的对数似然函数累加值一起被存储起来。因每个节点引出2N-1条支路,因此以后各级中路径的延伸都增大一倍;但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数(等于其状态数)。由此可见,上述译码过程中的基本操作是“加比选”。即每级求出对数似然函数累加值,然后两两比较并做出选择。有时会出现2条路径的对数似然函数累加值相等的情形,此时可任意选择其中一条作为“幸存路径”。每一级都有条幸存路径,则当序列发

14、送完毕后,为判断其最后结果,通常要在网格图的终结处加上一些结束信息。通常结束信息为N-1个已知信息,当然结束信息大于N-1也可以。在此信息到来时,因每一个状态只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。因此,在接收到N-1个已知信息后,整个网格图中只有惟一的一条幸存路径保留下来。这就是译码所得到的路径,这条译码路径和发送序列是最相似的。从上述卷积码的译码过程可以看出:约束长度为N时,需要存储和计算条路径的参量。由此可见,维特比算法的复杂度随约束长度N按指数形式增长2N。故维特比算法适合约束长度较小(N10)的编码。当编码约束度不太大(10)或者误码率要求不太高(

15、>)时,它的设备比较简单,用硬件译码计算速度快。Viterbi译码的缺点是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。 (2<<(N-1)。所以Viterbi 译码一般应用在约束长度小于10 的场合中。2.4 VITEBI 译码的关键步骤2.4.1 输入与同步单元输入同步单元为译码器提供正确的支路同步,每次正确地输出属于一条支路的n个比特。显然,当支路定时失步时,译码过程中将会出现大量的差错,只要能检测出这种状态,即能有效地调整支路同步。一种方法是监视路径量度的增长率;另一种方法是检查网格图的路径合并性质。当译码器出

16、现失步时,网格图中幸存路径合并的速率比同步时慢得多2。2.4.2 支路量度计算每当接收到一条新支路的一组n个量度值(硬判决时为n比特),支路量度计算单元就对网格图中每一条不同的支路确定一新的量度值。对R=k/n码来说,每次将有2个不同的量度值。在软判决Viterbi译码时,支路量度值不但随支路不同而异,而且还与接收信号的量化值有关2。2.4.3 路径量度的存储与更新在此单元中,支路量度与以前所存储的路径量度相加,然后对汇聚到同一节点处的支路进行路径量度比较,选择一条路径量度最小的路径保留下来。2.4.4 信息序列的存储与更新一种最佳的也是最常用的方法是基于最大似然译码。对于R=1/n卷积码而言

17、,每接收一组新的支路信息,在各个状态的路径存储器中存入经“加一比一选”电路选出的一位假想信息比特,同时将最先存入路径存储器的一位比特输出给判决单元。因此,每接收到一条新支路,路径存储器就更新一次它所存储的假想信息序列。2.4.5 判决与输出单元在R=1/n卷积码最佳译码时,应选择具有最小路径量度的假想信息序列中最早存入的一个比特做译码输出。 三、卷积码编码实现3.1 编码原理分析以(2,1,2)卷积码为例,其生成多项式为: 状态转移方程为:下面以图2.1的编码器所编出的码为例,来说明卷积码编码的方法和过程。为了使过程更加清晰,这里给出该码的状态图,如图2.2所示。图3.1 (2,1,2)卷积码

18、编码器 图3.2 (2,1,2)卷积码状态转移图由上面状态转移图得到状态转移的4个状态,每一个状态的转移都与当前输入消息的状态有关。而每一个对应的输出不仅与当前输入的m 个消息有关,还与此前输入的相关, 即 根据该码的状态转移图可以列出其状态转移表,如表3.1所示。u()()()()()()()()(00)(01)(10)(11)0(00)(00)(10)(11)(00)(10)(10)(01)1(01)(11)(11)(00)(01)(01)(11)(10) 表3.1 (2,1,2)卷积码状态转移表3.2 卷积码编码流程图开始输入n位信息序列依据前两位输入信息及当前信息计算输出序列输出2n位

19、信息编码结束四、卷积码译码实现4.1 译码编程思路译码总体上是先通过“加-比-选”来得到最优路径,然后根据状态转移图来得到解码后的码字。 用D(i)= hamming_distance(W(i,:),word(1:chip*2)实现与出错码字对比得到汉明距,用val,index = sort(D)来实现val中存汉明距从小到大排列,index中存对应val数据所在位置。首先初始化选前n时刻来比较汉明距,选出最小的48条路径,而后每条被选出的路径每次加一时刻进行迭代运算,选出新的汉明距最小的48条路径,依次循环,直至迭代至码组结束。最后选出48条路径中最小的一条来进行译码。4.2 卷积码译码流程

20、图开始输入2m位编码序列计算到达各个状态的累计最小汉明距离及路径初始化前n时刻比较汉明距选出最小的6条路径迭代至码组结束?加一时刻迭代运算选出汉明距最小的一条路径进行译码结束五、卷积码编译码程序的编译及仿真波形5.1 卷积码编码仿真 5.2卷积码译码仿真 5.3卷积码纠错码仿真六、总结此课程设计对整个通信系统包含的编码、传输和译码都进行了设计与仿真,从这些过程中我们看到了通信系统的基本工作原理。通过整个卷积码系统的设计与仿真,使我们加深了对卷积码的理解,掌握维特比译码的基本思路,知道如何进行误码率分析从而选者合适的信道传输信号,更重要的是学会了使用Matlab作为学习工具来对我们的通信系统进行

21、设计和仿真等操作,这对我们以后的学习和工作有着重要意义。通过课程设计,让我知道了许多的生活道理,在刚刚收到老师发给我们的题目之后,感觉很是简单,但在真正的着手开始做的时候,才发现问题很多,而最重要的问题是在程序编译中,还有其中的原理有许多的地方不明白,对很多的名词不知道什么意思,之后,通过在图书馆借书,上网查资料,在课堂上问老师,和团队的同学进行讨论等等,我的问题终于一点点的解决,程序也一点点的编译了出来,仿真图像也很好的显示出来。这让我明白了几个道理,首先,我们不能小看一件小事情,所有的大事情都是在一件件的小事上建立起来的。其二,那些看是简单的事情,当我们真正开始做的时候,就会发现不是轻而易

22、举就可以完成的,告诉我们更重要的是注重我们的动手能力。其三,我们都知道的是众人拾柴火焰高的道理,这次,让我更加的明白了它的含义,尤其是在这个竞争异常激烈的今天,我们更应该注重团队的力量,一个人单枪匹马,最终会被社会淘汰,而只有那些懂得团队的人才能立足。总之做完整个课程设计,获益良多。在课程设计的过程中,我对于程序的仿真有很多的不明白地方。但是,在老师和同学的帮助下,我认真学习,努力的做到最好。在过程中,我渐渐地学会了很多程序仿真的内容。终于,在最后的几天,我成功地仿真出我想要的程序内容。总的来说,我们无论遇到什么问题都不要放弃,而要努力认真地去对待它,从而解决它。 最后,非常感谢郑玉峰老师的帮

23、助,让我顺利的完成了这次课程设计。七、参考文献1.李建新.现代通信系统分析与仿真-MATLAB通信工具箱.西安:西安电子科技大学出版社,2000.2.樊昌信.通信原理.北京:国防工业出版社,2002.3.刘敏.MATLAB通信仿真与应用.北京:国防工业出版社.4.吴伟陵等著.移动通信原理.北京:电子工业出版社,2005. 5 邓华. Matlab通信仿真及应用实例详解. 北京:人民邮电出版社,2003.921附录:decode.mclear;clc; word = input('请输入收到的编码:');wordmsg = decode_conv212(word);wordr =

24、 encode_conv212(msg);c=1;for i=1:1:length(word) if word(i)=wordr(i) c=0; s=i; endendif c=0 fprintf('错误出现在第%1.0f位n',s); wordrelse fprintf('信息编码无错误');endmsga=length(msg);x=.01:.01:a;m,n=size(msg'*ones(1,100);y=reshape(msg'*ones(1,100)',1,m*n);subplot(2,1,2)plot(x,y)title(&#

25、39;信息码序列')xlabel('t')ylabel('msg')axis(0 length(msg) -0.5 1.5)b=length(word);x=.01:.01:b;m,n=size(word'*ones(1,100);y=reshape(word'*ones(1,100)',1,m*n);subplot(2,1,1)plot(x,y)hold onif c=0 z=reshape(wordr'*ones(1,100)',1,m*n); plot(x,z,'-r')endtitle(&#

26、39;编码序列')xlabel('t')ylabel('word')axis(0 length(word) -0.5 1.5) decode_conv212.mfunction msg = decode_conv212(word)chip = 5; for i = 1:2chip M(i,:) = de2bi(i-1,chip); W(i,:) = encode_conv212(M(i,:); D(i) = hamming_distance(W(i,:),word(1:chip*2);endval,index = sort(D); ret_msg = z

27、eros(1,length(word)/2); for i = 1:6 ret_msg(i,1:chip) = M(index(i),:); ret_dis(i) = D(index(i); enditer = (length(word)-chip*2)/2; for i=1:iter for j=1:6 msg_temp1 = ret_msg(j,1:chip+i-1) 0; msg_temp2 = ret_msg(j,1:chip+i-1) 1; word_temp1 = encode_conv212(msg_temp1); word_temp2 = encode_conv212(msg_

28、temp2); dis_temp1 = hamming_distance(word_temp1,word(1:chip*2+2*i); dis_temp2 = hamming_distance(word_temp2,word(1:chip*2+2*i); if (dis_temp1<dis_temp2) ret_msg(j,1:chip+i) = msg_temp1; ret_dis(j) = dis_temp1; else ret_msg(j,1:chip+i) = msg_temp2; ret_dis(j) = dis_temp2; end endendval,index = sort(ret_dis);msg =ret_msg(index(1),:); encode.mclear;clc; msg = input('请输入信息码序列:');msga=length(msg);x=.01:.01:a;m,n=size(msg'*ones(1,100);y=reshape(msg&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论