卷积码编码器及Viterbi译码器的设计Word文档格式.docx
《卷积码编码器及Viterbi译码器的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《卷积码编码器及Viterbi译码器的设计Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
![卷积码编码器及Viterbi译码器的设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/13/3bebf19e-935c-4b21-bc0b-d15a7e73992c/3bebf19e-935c-4b21-bc0b-d15a7e73992c1.gif)
学生:
陈琳(指导老师:
王千春)
(淮南师范学院电气信息工程学院)
摘要:
本毕业设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真,并进行误码率分析。
在毕业设计中,系统开发平台为WindowsVistaUltimate,程序设计与仿真均采用MatlabR2007a(7.4),最后仿真详单与理论分析一致。
关键词:
毕业论文;
卷积码译码器;
Matlab;
设计与仿真
DesignoftheViterbiConvolutionalCodeEncoderandDecoder
Student:
ChenLin(Instructor:
WANGqianchun)
(Electricalandinformationengineeringcollegeofcommunicationengineering)
Abstract:
ThiscoursedesignmainlyresolvestoaconvolutionalcodesequenceforViterbiViterbidecodingoutput,andthroughtheMatlabsoftwaretocarryonthedesignandsimulation,andanalysisofbiterrorrate.Incurriculumdesign,systemdevelopmentplatformforWindowsVistaUltimate,programdesignandsimulationusingMatlabR2007a(7.4),andfinallythesimulationlistisconsistentwiththeoreticalanalysis.
Keywords:
graduationthesis;
Convolutionalcodedecoder;
Matlab;
Designandsimulation
前言
本毕业设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真。
卷积码的译码有两种方法——软判决和硬判决,此毕业设计采用硬判决的维特比译码。
随着现代通信的发展,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。
卷积码以其高速性和可靠性在实际应用中越来越广泛。
1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一[1]。
在对卷积码的研究中,其中编码器较简单,模式也很统一。
主要是研究提高卷积码的译码速度和可靠度。
译码算法中最重要的卷积码的Viterbi算法问世以来,软件仿真和实现都得到了迅速发展。
目前,利用计算机仿真Viterbi算法,模拟在各种不同情况下(使用不同码率、不同约束度等)卷积编码时的译码性能,寻找Viterbi算法的最佳适用信道和不同要求(如误码率)下最优编码。
在卷积码中,因为Viterbi算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。
特别是深空通信、卫星通信系统中。
在现代信息处理系统中,需要处理的信息量越来越大,实时性要求越来越高。
为减少对主处理器各种资源的占用,要求通信模块方面的大部分工作能独立完成。
因此采用Viterbi译码算法具有非常现实的意义[2]。
由于卷积码的优良特性,被广泛的应用于深邃通信,卫星通信和2G及3G移动通信中,卷积码有三种译码方法:
门限译码,概率译码和Viterbi算法,其中Viterbi算法是一种基于网格图的最大似然译码算法,是卷积码的最佳译码方式,具有效率高、速度快等优点。
Viterbi译码充分发挥了卷积码的特点,使译码错误概率达到最小,在码的约束度教小时,它有译码算法效率高,速度快,译码也简单的特点[3]。
这次毕业设计研究卷积码的编码方法和解码方式。
编写卷积码的编码和解码程序。
掌握卷积码编码及Viterbi译码的基本原理。
分析卷积码编码及Viterbi译码的关键技术。
对卷积码编码器及Viterbi译码器进行设计。
用卷积码编码器及Viterbi译码器进行仿真,并进行性能分析。
理解卷积码的编码和解码原理和过程,会通过编码和解码程序对一些卷积码进行仿真。
对卷积码编码器及Viterbi译码器进行仿真验证,并分析性能。
尽可能对系统进行优化。
能运用MATLAB软件进行仿真[4]。
1卷积码
1.1卷积码基本概念
卷积码是一种性能优越的信道编码。
(n,k,N)表示把k个信息比特编成n个比特,N为编码约束长度,说明编码过程中互相约束的码段个数。
卷积码编码后的n个码元不仅与当前组的k个信息比特有关,而且与前N-1个输入组的信息比特有关。
编码过程中相互关联的码元有N×
n个。
R=k/n是卷积码的码率,码率和约束长度是衡量卷积码的两个重要参数。
卷积码的编码描述方式有很多种:
冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。
卷积码的纠错能力随着N的增加而增大,而差错率随着N的增加而指数下降。
在编码器复杂性相同的情况下,卷积码的性能优于分组码。
分组码的译码算法可以由其代数特性得到。
卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能不如维特比译码和序列译码[5]。
1.2卷积码的编码
图1一种卷积码编码器方框图
图1卷积码的编码器一般都比较简单。
下图1是一般情况下的卷积码编码器框图。
它包括:
一个由N段组成的输入移位寄存器,每段有k级,共Nk位寄存器;
一组n个模2和相加器;
一个由n级组成的输出移位寄存器。
对应于每段k个比特的输入序列,输出n个比特。
由图可知,n个输出比特不但与当前k个比特的输入比特有关,而且与以前的(N-1)k个输入信息有关。
整个编码过程可以看成是输入信息序列与由移位寄存器和模2加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名。
1.3卷积码的译码
卷积码的译码方式有三种:
(1)1963年由梅西((Massey)提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码;
(2)1963年由费诺(Fano)改进的序列译码,这是基于码的树状图结构上的一种准最佳的概率译码;
(3)1967年由维特比提出的Viterbi算法。
这是基于码的网(trellis)图基础上的一种最大似然译码算法,是一种最佳的概率译码方法。
其中,代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。
该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。
另一类是概率译码,这种译码通常建立在最大似然准则的基础上。
由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。
常用的概率译码方法有维特比译码和序列译码。
维特比译码具有最佳性能,但硬件实现复杂;
门限译码性能最差,但硬件简单;
序列译码在性能和硬件方面介于维特比译码和门限译码之间[6]。
1.4卷积码的Viterbi译码
卷积码概率译码的基本思路是:
以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。
概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。
卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。
主要区别在于:
分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。
基于网格图搜索的译码是实现最大似然判决的重要方法和途径。
用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。
如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。
这样一直进行到最后第L级(L为发送序列的长度)。
由于这种方法较早地丢弃了那些不可能的路径[7]。
1.4.1维特比译码原理
采用概率译码的基本思想是:
把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。
如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。
当传信率和信息组数L较大时,使得译码器难以实现。
维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。
它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列[8]。
下面以图2(a)的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。
为了能说明解码过程,这里给出该码的状态图,如图2(b)所
图2(a)(2,1,3)卷积码编码器图2(b)(2,1,3)卷积码状图
示。
维特比译码需要利用图来说明移码过程。
根据卷积码画网格的方法,我们可以画出该码的网格图,如图3所示。
该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。
这里设编码器从a状态开始运作。
该网格图的每一条路径都对应着不同的输入信息序列。
由于所有可能输入信息序列共有2kL个,因而网格图中所有可能的路径也为2kL条。
这里节点a=00,b=01,c=10,d=11。
图3(2,1,3)卷积码网格图
设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转移路线为abdcbdca。
若收到的序列R=(0101011001011100),对照网格图来说明维特比译码的方法[9]。
由于该卷积码的约束长度为6位,因此先选择接收序列的前6位序列R1=(010101)同到达第3时刻的可能的8个码序列(即8条路径)进行比较,并计算出码距。
该例中到达第3时刻a点的路径序列是(000000)和(111011),他们与R1的距离分别为3和4;
到达第3时刻b点的路径序列是(000011)和(111000),他们与R1的距离分别为3和4;
到达第3时刻c点的路径序列是(001110)和(110101),他们与R1的距离分别为4和1;
到达第3时刻d点的路径序列是(001101)和(110110),他们与R1的距离分别为2和3。
上述每个节点都保留码距较小的路径作为幸存路径,所以幸存路径码序列是(000000)、(000011)、(1101001)和(001101),如图4所示。
用于上面类似的方法可以得到第4、5、6、7时刻的幸存路径[10]。
图4维特比译码第3时刻幸存路径
需要指出的是,对于某个节点,如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。
在码的终了时刻a状态,得到一条幸存路径。
如果5所示。
由此可看到译码器输出是R’=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。
比较R’和R序列,可以看到在译码过程中已纠正了在码序列第1和第7位上的差错。
当然如果差错出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的[11