1、毕业论文(设计)题目:卷积码编码器及 Viterbi 译码器的设计学生姓名: 琳 学 号: 所在系别: 电气信息工程学院 专业名称: 通信工程 届 次: 指导教师: 目 录前言 .21 卷积码 .31.1 卷积码基本概念 .31.2 卷积码的编码.41.3 卷积码的译码.41.4 卷积码的 Viterbi 译码.52.卷积码编码器及 Viterbi 译码器的设计系统方案制定 .82.1 方案提出.82.2 方案论证.82.3 方案选择 .92.4 硬件实现 .103.卷积码编码器及 Viterbi 译码器的设计系统的仿真和调试 .103.1 仿真软件介绍 .103.2 系统仿真实现.103.3
2、 卷积码实现.123.4 数据分析.144 SIMULINK 下仿真设计.154.1 卷积码的仿真 .154.2 SIMULINK 模块仿真参数设置及意义 .165 总结.205.1 设计小结.205.2 收获体会 .205.3 展望.216 参考文献:.21淮南师范学院 2013 届本科毕业论文1卷积码编码器及 Viterbi 译码器的设计学生:陈琳(指导老师:王千春)(淮南师范学院电气信息工程学院)摘要:本毕业设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab 软件进行设计与仿真,并进行误码率分析。在毕业设计中,系统开发平台为 Windows Vista
3、Ultimate,程序设计与仿真均采用 Matlab R2007a(7.4),最后仿真详单与理论分析一致。关键词:毕业论文;卷积码译码器;Matlab;设计与仿真Design of the Viterbi Convolutional Code Encoder and DecoderStudent: Chen Lin(Instructor:WANG qian chun)(Electrical and information engineering college of communication engineering)Abstract :This course design mainly re
4、solves to a convolutional code sequence for Viterbi Viterbi decoding output, and through the Matlab software to carry on the design and simulation, and analysis of bit error rate. In curriculum design, system development platform for Windows Vista Ultimate, program design and simulation using Matlab
5、 R2007a (7.4), and finally the simulation list is consistent with theoretical analysis.Key words :graduation thesis; Convolutional code decoder; Matlab; Design and simulation前 言本毕业设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab 软件进行设计与仿真。卷积码的译码有两种方法软判决和硬判决,此毕业设计采用硬判决的维特比译码。随着现代通信的发展,高速信息传输和高可靠性传输成为信息传输的两
6、个主要方面,而可靠性尤其重要。卷积码以其高速性和可靠性在实际应用中越来越广泛。1967年 Viterbi 译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一 1。在对卷积码的研究中,其中编码器较简单,模式也很统一。主要是研究提高卷积卷积码编译器及 Viterbi 译码器的设计1码的译码速度和可靠度。译码算法中最重要的卷积码的 Viterbi 算法问世以来,软件仿真和实现都得到了迅速发展。目前,利用计算机仿真 Viterbi 算法,模拟在各种不同情况下(使用不同码率、不同约束度等)卷积编码时的译码性能,寻找 Viterbi 算法的最佳适用信道和不同要求(如误码率)下最优编码。在卷积码中,
7、因为 Viterbi 算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。特别是深空通信、卫星通信系统中。在现代信息处理系统中,需要处理的信息量越来越大,实时性要求越来越高。为减少对主处理器各种资源的占用,要求通信模块方面的大部分工作能独立完成。因此采用 Viterbi 译码算法具有非常现实的意义 2。由于卷积码的优良特性,被广泛的应用于深邃通信,卫星通信和 2G 及 3G 移动通信中,卷积码有三种译码方法:门限译码,概率译码和 Viterbi 算法,其中 Viterbi 算法是一种基于网格图的最大似然译码算法,是卷积码的最佳译码方式,具有效率高、速度快等优点。Viterbi
8、 译码充分发挥了卷积码的特点,使译码错误概率达到最小,在码的约束度教小时,它有译码算法效率高,速度快,译码也简单的特点 3。这次毕业设计研究卷积码的编码方法和解码方式。编写卷积码的编码和解码程序。掌握卷积码编码及 Viterbi 译码的基本原理。分析卷积码编码及 Viterbi 译码的关键技术。对卷积码编码器及 Viterbi 译码器进行设计。用卷积码编码器及 Viterbi 译码器进行仿真,并进行性能分析。理解卷积码的编码和解码原理和过程,会通过编码和解码程序对一些卷积码进行仿真。对卷积码编码器及 Viterbi 译码器进行仿真验证,并分析性能。尽可能对系统进行优化。能运用 MATLAB 软
9、件进行仿真 4。1 卷积码1.1 卷积码基本概念 卷积码是一种性能优越的信道编码。(n ,k ,N) 表示把 k 个信息比特编成 n 个比特,N 为编码约束长度,说明编码过程中互相约束的码段个数。卷积码编码后的 n 个码元不仅与当前组的 k 个信息比特有关,而且与前 N - 1 个输入组的信息比特有关。编码过程中相互关联的码元有 N n 个。R = k/ n 是卷积码 的码率,码率和约束长度是衡量卷积码的两个重要参数。 卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。卷积淮南师范学院 2013 届本科毕业论文3码的纠错能力随着
10、 N 的增加而增大,而差错率随着 N 的增加而指数下降。在编码器复杂性相同的情况下,卷积码的性能优于分组码。分组码的译码算法可以由其代数特性得到。卷积码虽然可以采用适用于分组码的门限译码(即大数逻辑译码),但性能不如维特比译码和序列译码 5。1.2 卷积码的编码1e1c1d1编码输出输入 ibiM23Mi 1ib2ib图 1 一种卷积码编码器方框图图 1 卷积码的编码器一般都比较简单。下图 1 是一般情况下的卷积码编码器框图。它包括:一个由 N 段组成的输入移位寄存器,每段有 k 级,共 Nk 位寄存器; 一组 n 个模 2 和相加器;一个由 n 级组成的输出移位寄存器。对应于每段 k 个比特
11、的输入序列,输出 n 个比特。由图可知,n 个输出比特不但与当前 k 个比特的输入比特有关,而且与以前的(N-1)k 个输入信息有关。整个编码过程可以看成是输入信息序列与由移位寄存器和模 2 加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名。1.3 卷积码的译码 卷积码的译码方式有三种:(1)1963 年由梅西(Massey)提出的门限译码,这 是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码;(2) 1963 年由费诺(Fano)改进的序列译码, 这是基于码的树状图结构上的一种准最佳的概 率译码;(3) 卷积码编译器及 Viterbi 译码器的设计11967 年由维特比提
12、出的 Viterbi 算法。这是基于码的网(trellis) 图基础上的一种最大似然译码算法,是一种最佳的概率译码方法。其中,代数译 码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。另一类是概率译码,这种译码通常建立在最大似然准则的基础上。由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。常用的概率译码方法有维特比译码和序列译码。维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之间 6。1.4 卷积码
13、的 Viterbi 译码 卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。 卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发
14、现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。这样一直进行到最后第 L 级(L 为发送序列的长度) 。由于这种方法较早地丢弃了那些不可能的路径 7。1.4.1 维特比译码原理采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送 L 组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有 2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数 L 较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。
15、它并不是在网格图上一次比较所有可能的 2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列 8。下面以图 2(a)的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图 2(b)所淮南师范学院 2013 届本科毕业论文5图 2(a) (2,1,3)卷积码编码器 图 2(b) (2,1,3)卷积码状图示。维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图 3 所示。该图设输入信息数目 L=5,所以画 L+N=8 个时间单
16、位,图中分别标以 0 至 7。这里设编码器从 a 状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有 2kL个,因而网格图中所有可能的路径也为 2kL条。这里节点 a=00,b=01,c=10,d=11。mj mj-1 mj-2输出序列m1,m2,mj,y1jy2j输入序列00a dcb110011 010110abcd节点号 0 1 2 3 4 5 6 700 00 00 00 00 00 0011 11 11 11 1111 11 1100 000101 01 01 0101 01 0101 01 0111 1110 10 10 10卷积码编译器及
17、Viterbi 译码器的设计1图 3 (2,1,3)卷积码网格图设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转移路线为 abdcbdca。若收到的序列R=(0101011001011100),对照网格图来说明维特比译码的方法 9。由于该卷积码的约束长度为 6 位,因此先选择接收序列的前 6 位序列 R1=(010101)同到达第 3 时刻的可能的 8 个码序列(即 8 条路径)进行比较,并计算出码距。该例中到达第 3 时刻 a 点的路径序列是(000000)和(111011),他们与 R1 的距离分别为 3 和
18、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。abcd节点号 0 1 2 300 00 001
19、1 11 11010101图 4 维特比译码第 3 时刻幸存路径需要指出的是,对于某个节点,如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。在码的终了时刻 a 状态,得到一条幸存路径。如果 5 所示。由此可看到译码器输出是 R=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。比较 R淮南师范学院 2013 届本科毕业论文7和 R 序列,可以看到在译码过程中已纠正了在码序列第 1 和第 7 位上的差错。当然如果差错出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的 11。图 5 第 8
20、 时刻幸存路径2.卷积码编码器及 Viterbi 译码器的设计系统方案制定2.1 方案提出 卷积码的译码方式有三种:(1)1963 年由梅西(Massey)提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码;(2) 1963 年由费诺(Fano)改进的序列译码,这是基于码的树状图结构上的一种准最佳的概率译码;(3) 1967 年由维特比提出的 Viterbi 算法。这是基于码的网(trellis)图基础上的一种最大似然译码算法,是一种最佳的概率译码方法 12。上。由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。常用的概率译码方法有维特比译码和序列译码。维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之间 13。 abcd节点号 0 1 2 31101014 5 6 7 80001011100