摘要卷积码是一种性能优越的信道编码。
它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。
随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。
本文对卷积码和卷积码的编译码有一个简单的介绍且给出了信道编码的发展历史及研究状况,然后详细讨论了(2,1,2)卷积码的编码过程和译码过程,通过状态转移方程和输出方程得出状态转移表和状态转移图,然后通过维特比译码器研究,总结出了维特比译码算法,最后通过Matlab软件进行设计与仿真,得到了编码程序和译码程序,其运行结果与理论分析一致。
关键字卷积码编码、信道编码、Viterbi译码、MATLAB仿真目录摘要........................................... 错误!未定义书签。
一、引言 (3)1.1发展历史及研究状况 (3)1.2设计目的和意义 (3)1.3设计方法 (4)二、卷积码编译码原理 (5)2.1 卷积码编码原理 (5)2.2编码器 (6)2.3 卷积码译码原理 (7)2.4 VITEBI 译码的关键步骤 (8)2.4.1 输入与同步单元 (8)2.4.2 支路量度计算 (8)2.4.3 路径量度的存储与更新 (8)2.4.4 信息序列的存储与更新 (8)2.4.5 判决与输出单元 (8)三、卷积码编码实现 (9)3.1 编码原理分析 (9)3.2 卷积码编码流程图 (10)四、卷积码译码实现 (11)4.1 译码编程思路 (11)4.2 卷积码译码流程图 (11)五、卷积码编译码程序的编译及仿真波形 (11)5.1 卷积码编码仿真 (12)5.2卷积码译码仿真 (13)5.3卷积码纠错码仿真 (14)六、总结 (15)七、参考文献 (16)附录 (17)一、引言1.1发展历史及研究状况1948年,Bell实验室的C.E.Shannon发表的《通信的数学理论》,是关于现代信息理论的奠基性论文,它的发表标志着信息与编码理论这一学科的创立。
20世纪40年代,R.Hamming和M.Golay提出了第一个实用的差错控制编码方案,使编码理论这个应用数学分支的发展得到了极大的推动。
分组码所存在的固有缺点可以通过采用其他的编码方法来改善,这种编码方法就是卷积码。
卷积码是Elias等人在1955年提出的。
卷积码与分组码的不同在于:它充分利用了各个信息块之间的相关性。
通常卷积码记为(n,k,N)码。
卷积码的编码过程是连续进行的,依次连续将每k个信息元输入编码器,得到n个码元,得到的码元中的检验元不仅与本码的信息元有关,还与以前时刻输入到编码器的信息元(反映在编码寄存器的内容上)有关。
同样,在卷积码的译码过程中,不仅要从本码中提取译码信息,还要充分利用以前和以后时刻收到的码组.从这些码组中提取译码相关信息,而且译码也是可以连续进行的,这样可以保证卷积码的译码延时相对比较小。
通常,在系统条件相同的条件下,在达到相同译码性能时,卷积码的信息块长度和码字长度都要比分组码的信息块长度和码字长度小,相应译码复杂性也小一些。
由Wozencraft和Reiffen在1961年提出,Fano和Jelinek分别在1963年和1969年进行改进了的序贯译码算法。
该算法是基于码字树图结构的一种次最优概率译码算法。
由Massey在1963年提出的门限译码算法。
这个算法利用码字的代数结构进行代数译码。
由Viterbi在1967 年提出的Viterbi算法是基于码字格图结构的一种最大似然译码算法,是一种最优译码算法。
在Viterbi译码算法提出之后,卷积码在通信系统中得到了极为广泛的应用。
如GSM、3G、商业卫星通信系统等。
1.2设计目的和意义因为信道中信号不可避免会受到干扰而出错。
为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。
前者常常受条件限制,不是所有情况都能采用。
而编码理论可以解决这个问题,使得成本降低,实用性增强。
随着现代通信的发展,卷积码以其高速性和可靠性在实际应用中越来越广泛。
1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一。
在卷积码中,因为Viterbi算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。
特别是深空通信、卫星通信系统中。
因此采用Viterbi译码算法具有非常现实的意义。
1.3设计方法本文在分析卷积码编译码器原理的基础上,通过基于MATLAB对卷积编码,解码进行仿真。
通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行了分析。
得出卷积码Viterbi译码的误比特性能和回溯长度,码率,约束长度的关系。
二、卷积码编译码原理2.1 卷积码编码原理2.1.1卷积码简介卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。
卷积码编码的当前输出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 的二元矩阵h G ,使得h G h l u l v ∙-=)()(, 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),…),并满足0)0()0(G u v =01)1()0()1(G u G u v +=011)()1()1()0()(G m u G m u G u G u m v m m +-+++=-011)1()()2()1()1(G m u G m u G u G u m v m m +++++=+-卷积编码电路在按段工作方式下只需存储或者记忆m 段的消息输入,电路中输入移位寄存器最多只有k m ∙个有效的寄存器单元,而输出移位寄存器仅起一个并串转换作用。
因此称参量m 为卷积码的记忆长度(段)。
二元(n ,k ,m )卷积码共有M 2个不同的状态,记为1210,,,-M S S S 当状态为)(l δ(或δ)时,输入段)(l u (或u )产生编码输出端)(l v (或v ) 并使该状态改变(或称为转移)到新的状态)1(+l δ(或'δ)。
δ到'δ的转移过程称为一个转移分支,记为(δ,'δ)或()(l δ,)1(+l δ)并标记转移过程为)(/)(l u l v 或v/u 。
以状态δ为结点,转移分支为有向边描述卷积码的所有不同状态转移的有向图,称为卷积码的状态转移图。
2.2编码器2.2.1编码器的一般结构卷积码的编码器一般都比较简单。
输入图2-1 卷积码编码器框图图2-1是一般情况下的卷积码编码器框图。
它包括NK 级的输入移位器,一组n 个模2和加法器和n 级的输出移位寄存器 [6]。
对应于每段k 比特的输入序列,输出n 个比特。
由图可知,n 个输出比特不但与当前的k 个输入比特有关,而且与以前的(N-1)k 个输入信息比特有关。
整个编码过程可以看成是输入信息序列与由移位寄存器和模2加法器的连接方式所决定的另一个序列的卷积,卷积码由此得名。
本文采用的是冲击响应描述法编码思想。
2.2.2编码器的参数⑴ 有k 个输入信息端,n 个输出端(k<n ),K-1节移位寄存器(共需k(K-1)个寄存器单元),称做(n,k,K )卷积码。
⑵ 通常称K 为约束长度(一般来说,约束长度越大,则码字纠错性能越好)。
⑶ 码的效率:k/n⑷ 编码前,k(K-1)个寄存器单元全部复位清零。
⑸ 由于一段消息不仅影响当前段的编码输出,还影响其后m 段的编码输出,所以称参量为卷积吗的约束比特长度为n K n A ∙=注意进入卷积编码器的最后m 段消息仍是要编码输出的消息,对这最后m 段消息的编码处理,称作卷积编码的结尾处理。
一种常见的结尾处理方法是额外输入m段无效的0数据比特,一方面将存储的m 段消息编码全部推出,另一方面保证编码器回到全0的初态。
2.3 卷积码译码原理维特比算法的基本思想是把接收到的矢量,和网格图上诸种可能的路径比较,删去距离大的路径,保留距离小的路径,以距离最小路径作为发码的估值。
它的原理是将接收到的信号序列和所有可能的发送信号序列作比较,选择其中汉明距离最小的序列作为现在的发送信号序列。
为简便起见,讨论(n,k,N)卷积码当k=1的情形,从全0状态起始点开始讨论。
由卷积码网格图的前N-1级中支路构成的路径互不相交,即最初的2N-r条路径各不相同;当到达第N级时,每条路径都有2N-1条支路延伸到第N级上;而第N级上的每2条支路又都汇聚在一个节点上。
第N级以后的网格图图形完全是重复第N级的图形。
在维特比算法中,把汇聚在每个节点上的2条路径的对数似然函数累加值进行比较;然后把具有较大对数似然函数累加值的路径保存下来,称此部分路径为幸存路径,而丢弃另一条路径;经挑选后,第N级只留下2N-r条幸存路径,选出的路径连同它们的对数似然函数累加值一起被存储起来。
因每个节点引出2N-1条支路,因此以后各级中路径的延伸都增大一倍;但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数(等于其状态数)。
由此可见,上述译码过程中的基本操作是“加→比→选”。
即每级求出对数似然函数累加值,然后两两比较并做出选择。
有时会出现2条路径的对数似然函数累加值相等的情形,此时可任意选择其中一条作为“幸存路径”。
每一级都有21-N条幸存路径,则当序列发送完毕后,为判断其最后结果,通常要在网格图的终结处加上一些结束信息。
通常结束信息为N-1个已知信息,当然结束信息大于N-1也可以。
在此信息到来时,因每一个状态只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。
因此,在接收到N-1个已知信息后,整个网格图中只有惟一的一条幸存路径保留下来。
这就是译码所得到的路径,这条译码路径和发送序列是最相似的。
从上述卷积码的译码过程可以看出:约束长度为N时,需要存储和计算21-N条路径的参量。
由此可见,维特比算法的复杂度随约束长度N按指数形式增长2N。
故维特比算法适合约束长度较小(N≤10)的编码。
当编码约束度不太大(≤10)或者误码率要求不太高(>105 )时,它的设备比较简单,用硬件译码计算速度快。
Viterbi译码的缺点是随着约束长度的增加算法的复杂度增加很快。