一种卷积码维特比译码算法的软件实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种卷积码维特比译码算法的软件实现Ξ

张海勇1) 刘文予1) 芦东昕2) 吴 畏2)

(华中科技大学电子与信息工程系1) 武汉 430074)

(中兴通讯股份有限公司2) 深圳 518057)

摘 要

提出了数字通信系统中一种卷积码译码的软件实现方案,该方案应用软件技术实现了卷积码维特比译码器功能,在程序实现中充分利用了卷积码的特性,运用蝶形运算,周期性的回溯以得到译码输出。在程序设计上采用了一些宏定义等处理方法,可以提升运算速度,是一种软件方法的前向纠错编码技术。

关键词:卷积码 维特比译码算法 蝶形运算 回溯

中图分类号:TP31

A Soft w are Implementation of Viterbi Decoding Algorithm

Zhang H aiyong1) Liu Wenyu1) Lu Dongxin2) Wu Wei2)

(Dept.of Electronics&Information Engineering1),HUST,Wuhan430074)

(ZTE Corporation2),Shenzhen518057)

Abstract:A software implementation of a channel coding technology is presented,which realizes the functions of convolution2 al coding and Viterbi decoding.According to convolutional codes feature,this software uses butterfly algorithm which is defined as a macro,periodically traces back to get the decoding output,we also use some other methods in the program,can speed up the al2 gorithm,which belongs to a forward error correction coding technology.

K ey w ords:convolutional code,Viterbi decoding algorithm,butterfly algorithm,trace back

Class number:TP31

卷积码是由伊莱亚斯(Elias)于1954年首先提出来的。它充分利用了各组之间的相关性,本组的信息元不但决定本组的监督元,而且也参与决定以后若干组的监督元。同时在译码过程中,不但从该时刻所收到的码组中提取译码信息,而且还利用以后若干时刻内所收到的码组来提取有关信息。无论从理论上还是实际上均已证明其性能不差于分组码。在一些采用了前向纠错的系统里,如GS M/CDM A通信系统、卫星与空间通信系统里广泛采用了卷积码[1]。

卷积码译码器的设计是由高性能的复杂译码器开始的,如最初的序列译码,随着译码约束长度的增加,译码错误概率可达到非常小。后来慢慢地向低性能的简单译码器演化,对不太长的约束长度,维特比(V iterbi)算法是非常实用的。维特比算法是一种最大似然的译码方法。当编码约束度不太大(小于等于10)或者误码率要求不太高(约10-5)时[2],它的设备比较简单,用硬件译码计算速度很快。本文将给出一种用软件实现卷积码维特比译码算法的设计方法,针对译码中计算量最多的蝶形运算,采用宏定义的方式,并在计算度量长度时采用双数组计算,能够加快译码计算速度。

1 卷积码编码器的参数分析

卷积码把信源输出的信息序列以每段k0个码元进行分段,通过编码器输出长为n0的一个码段,该段(n0-k0)个校验元不仅与本段信息元有关,还与其前面m段信息元有关。卷积码可以用(n0,k0,K)表示,其中(K=m+1)为约束长度,串联的移位寄存器的数目以m表示,一个信息

Ξ收到本文时间:2004年12月2日

元通过上述编码器,从输入到输出共用(m+1)个时间单元,每一时间单元都输出一个子码,可见编码约束度(K=m+1)。

下面我们以(2,1,7)卷积码为例,来分析卷积码参数的一些特性,我们将在译码程序中利用这些特性简化程序。编码器如图1所示,连接矢量分别为G1=0x6D,G2=0x4F。注意连接矢量的两边均取1。该卷积码编码器由一个包括6个移位寄存器及与之相应的电路连接方式共同确定。在连接矢量确定的情况下,各移位寄存器的状态组合

及其互相转移的情况可以用篱笆图[3]来表示

图1 (2,1,7)卷积码编码器示意图

经过简单计算,我们可以得到编码器的参数具有如下一些特性:

(1)编码器共有64种状态,分成状态i(0≤i ≤31,下面均做此假设)和状态i+32的上下两部分。

(2)编码器当前状态为i或i+32时,输入为0时,下一状态均为23i。

(3)编码器当前状态为i或i+32时,输入为1时,下一状态均为23i+1。

(4)编码器当前状态为i,输入为0时,若输出为out0,则编码器当前状态为i+32,输入为0时,输出为3^out0。

(5)编码器当前状态为i,输入为1时,若输出为out1,则编码器当前状态为i+32,输入为1时,输出为3^out1。

2 维特比译码器程序结构设计

1)维特比译码器中三个重要的参数

有三个重要的参数,它们需要在程序设计中首先确定下来。

(1)路径存贮容量(PA T HM EM):这个参数定义了路径存贮的大小。使用这个参数我们周期性的回溯以生成译码数据。PA T HM EM必须大于等于M ER GEDIS T+T RA CE T R U N K,程序实现中通常取2的整数次幂。

(2)合并距离(M ER GEDIS T):理论上,维特比译码是一种最大似然译码是当接收到整个信息后,存贮了整个路径信息长度,才从最终状态(通常为0)开始回溯。这对于需要较长译码的情形是不现实的。在实际程序实现中,当存贮的路径信息长度进行到篱笆图较深处时,必须回溯以产生译码输出,避免存贮的路径信息过长发生溢出。在典型的译码器实现中,这代表了大约是约束长度4~5倍的译码延迟。当考虑到打孔时,合并距离将会加长。M ER GEDIS T设置这一参数。回溯时可以从任意一个当前状态开始,不需要从最小的度量距离节点开始。

(3)回溯路径译码位(T RA CE T R U N K):我们希望每次回溯时能够得到尽可能多的译码输出,但这将增加译码延迟。T RA CE T R U N K设置当每次回溯时译码的位数。软件实现时,因每次输出是一个字节8位,所以T RA CE T R U N K是8的倍数。

上述几个参数之间的关系如图

2所示:

图2 译码参数的关系图

2)加比较选择的蝶形运算

加比较选择的运算称作蝶形运算是因为

图3 蝶形运算关系图

在译码篱笆图上分离出来之后形状如图3所示,形状象一个蝴蝶。每一个蝶形包括当前状态为i和i +32的两个节点的加比较选择运算,它们的0和1分支在篱笆图的下一个节点合并。为了加快运算速度,程序设计上对蝶形运算采用宏定义的方式,定义两种蝶形运算的宏。一种设当前度量为cmet ric[],经过分支度量计算后得到nmet ric[]。另一种则从下一状态nmet ric[]开始,经过分支度量计算后得到cmet ric[]。

3)分支度量的计算

在计算分支度量时,通常有软判决和硬判

相关文档
最新文档