3G测试系统中的Viterbi译码及其DSP实现及优化

2007-06-26 10:03:10来源:广东通信技术 作者:吕圣洁 李小文热度:
摘要 介绍了一种用于测试TD-SCDMA手机终端测试平台中的关键技术——Viterbi译码。研究用约束度K=9的卷积编码和最大似然Viterbi译码的差错控制方案,在Viterbi译码算法中,提出了原位运算度量、保存路径转移过程和循环存取幸存路径等方法,能有效地减少存储量、降低功耗,使得K=9的Viterbi译码算法可在CCS集成环境平台和TMS320C55X DSP芯片上实现,其性能指标符合3GPP通信协议标准要求,文中给出了适用于DSP编程的算法,给出了DSP具体实现,同时给出了硬件的仿真结果。

0、引言

随着TD-SCDMA产业化进程的日益明朗,3G之战还未吹号,硝烟味已弥漫了黎明前的市场。这就要求尽快提供好的手机终端。对手机终端的性能测试越显得迫在眉睫。由于重邮信科3G研究院在TD方面有着很成熟的技术和经验,在此基础上我们不但推出了3G样机,而且致力于开发好的TD手机测试平台,本文所介绍的Viterbi译码方法是独具特色的TD测试平台中所用到的。3GPP中TD-SCDMA系统采用了3种信道编码方案:卷积编码、Turbo编码和不编码。不同类型的传输信道所使用的编码方案和编码效率是不同的。本文介绍针对卷积编码的Viterbi译码方案。针对DSP设计的特点,本文在不改变纠错性能的前提下提出了一系列的方法,如原位运算、保存转移、循环存取等,旨在将存储器的容量减到最小,将整体功耗降到最低。

1、Viterbi译码原理[1]

Viterbi译码算法(简称VA算法)是由Viterbi在1967年首先提出的,它是一种针对卷积码的最大似然译码算法。他不是在网格图上依次比较所有的可能路径,而是接受一段,计算、比较一段,保留最有可能的路径,从而达到整个码序列是一个最大似然序列。Viterbi译码算法优点是在码的约束比较小时,它比序列译码算法效率更高、速度更快,译码器也较简单。缺点就是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。(2<<(N-1))。所以Viterbi译码一般应用在约束长度小于10的场合中。虽然有许多算法降低了复杂性、减少了运算量,但它们必然以牺牲性能为代价。本文研究的出发点是立足于不降低算法性能,寻求在实现最大似然译码时的优化方法。而这点我们主要是通过与硬件实现相结合做到的。Viterbi算法主要由路径度量的“加比选”运算、度量的更新、路径的更新、最大似然路径的回溯过程组成。

Viterbi译码算法流程图如图1所示。

图1 Viterbi译码算法处理流程

2、具体DSP实现及优化方法

2.1 分支度量

每收到一个符号就进行状态转移,Viterbi译码算法必须计算前一个状态到各个新状态的分支度量值,当采用硬判决输入时,分支度量值可用汉明距离表示;若用软判决输入时,采用欧氏距离来计算。本文实现是利用软判决来实现的。具体原理如下[2]:

对于编码速率为R=1/C的卷积码来说,欧氏距离:

其中C为码率的例数。即:R=1/C。上式可以分解为:

其中的

在一级中都是一样的。中间项的2只是一个常数可以不考虑。所以分支度量值可以简化为:

省去上式前面的负号,但在分支度量值比较时应取大值。将其中的Gn(j)用双极性表示。即0用+1表示,1用-1表示。则分支度量值变为:

所以在状态转移图中一级中的分支度量值的绝对值只有两个值。在译码过程中,由于度量的数值是累加的,会造成溢出,解决的办法是在每一步运算时将各个状态的度量减去前一步所有状态度量的最小值。那么度量的精度如何控制呢?也就是说,要用多少二进制位来表示度量既不溢出又使存储量最小?对于码率为1/2,约束度为K的卷积码的硬判决译码,在每一步的度量的最大值与最

责任编辑:DVBCN编辑部