新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 3G系统中Turbo译码改进及DSP实现

3G系统中Turbo译码改进及DSP实现

作者: 时间:2011-01-24 来源:网络 收藏

  2译码器实现的关键改进与优化

  Turbo码译码是一个复杂的过程,之所以这么说,除了算法本身复杂外,还有两个主要的原因,一个是递推计算过程中前、反向度量不断增大给信号处理器带来的麻烦,即经常说的溢出;另一个是大存储量需求。这里,就这两个细节问题进行讨论和总结,并且给出详细解决方案。

  2.1状态量度归一化问题

  由式(1),式(2)可注意到,随着计算的不断深入,状态量度值不断增加,为防止计算溢出和减小硬件复杂度,必须对其进行归一化处理。一种方法是减去前一时刻状态度量的最小值,这种方法在每个时刻都需要减法器和用于计算最小值的比较器,当状态数较多时,由此带来的额外的时延和硬件消耗是不能忽略的。本算法采用一种十分有效的归一化方法(以Ak(s)为例),在每个计算时刻,判断有没有状态度量值(A或B)大于某一门限值T,若有则所有节点的状态度量值(A或B)都减去T,若没有则保持原值不变。这样便大大减少了减法器使用的次数,也无需计算最小值。由于所有的节点都减去了相同的值,因此式(5)的结果不会受到影响。T值不宜设置太大,但设置得太小,归一化发生的很频繁,会增加译码时延和硬件开销。通过试验仿真,若q代表状态量度值的量化字长,则T设为2q-2为合适。

  2.2 引入滑动窗减小存储量由于Turbo码译码算法的迭代特性,每一级Map译码器需要大量存储器。在译码时引入滑动窗,能有效减少所需的存储量。采用滑动窗的Map译码步骤为:每次译码过程被分为若干段以间隔L(假设滑动窗的长度为L,L《N)连续进行,只需在对nL长的数据进行前向处理后,每个反向子处理过程即可执行,而未使用滑动窗时,需要对整个数据块处理后才能进行。实验证明,滑动窗大小选择7~8倍的约束长度时对误码率的性能影响几乎可以忽略。本算法中约束长度为4,选择窗口大小为32。下面给出采用滑动窗译码前后两种算法存储空间分配情况的比较。假设编码帧长为L,B表示窗口长度,L为B的整数倍。

采用滑动窗译码前后两种算法存储空间分配情况的比较

  按照表1,这个存储空间为26L,当L=1K时,为26K。如果我们采用分块译码,按照表2,那么整个译码的存储需求为20B+8L,B一般取编码约束长度的5~10倍,对于8状态编码,取B=32,那么这个存储空间为640+8L,与表1的26L相比要小的多。

采用滑动窗译码前后两种算法存储空间分配情况的比较

  当L=1K时,存储空间只占原来的33.2%。当编码帧长L的取更大值时,存储空间的节约更加可观,比较得知采用滑动窗后,Turbo译码能够大大节省硬件的存储资源。

  3 Turbo译码的DSP实现

  3.1 TMS320C6416简介

  TM S320C6416是TI公司推出的功能强大的DSP产品,他采用先进的VelociTI结构,将超长指令字VLIW结构和高并行性结合起来,通过增加指令级的并行性使其性能有了较大的飞跃。C6416的最高工作时钟达到1 GHz,指令周期仅为1 ns,最大处理能力可以达到9 000 MIPS,比TMS320C62系列芯片性能高出15倍之多,是当前市场上最先进的定点数字信号处理器。

  片内有8个可完全并行运算的功能模块(2个乘法器和6个算术逻辑单元),他们分为相同的两组,属于两个数据通道,每个数据通道与一组32个32位寄存器相连,不同组的两个功能模块之间的数据交换是通过两个寄存器组之间的交叉总线实现。典型片内资源还包括1 MB的片内RAM和一个32位的外部存储器接口,可以支持多类型RAM,包括同步随机访问存储器(SDRAM)和同步突发静态随机存储器SBSRAM等。 DMA控制器包括4个可编程通道和一个辅助通道,能够在内存、片内辅助资源及外部器件之间以CPU的时钟速率实现高速数据传输,这种传输发生在CPU运行后台。CPU和DMA控制器对数据存储器的操作可以按8位字节,16位半字或者32位字的长度进行。

  3.2 用DSP实现Turbo译码器的优化措施和技术

  TMS320C6416的特殊结构对编译器和软件设计结构提出了很高的要求,软件的设计与优化将成为整个系统性能的决定因素,代码的高度并行性将是获得超强性能的关键。采用流水线技术和功能模块多重化技术是开发处理器的指令级并行性的两个主要手段。C6416对指令获取、指令分配、指令执行、数据存储等阶段进行了多级流水线的划分,不同指令执行的流水延迟也不相等,因此各种指令的安排要尽量不中断指令流水执行,同时,使尽可能多的功能模块并行运行。

  由于TMS320C6416芯片的结构对于基于汇编语言的编程过于复杂,这里采用C语言编写主程序。Turbo译码采用并行算法,为提高程序执行效率,充分利用Max-Log-Map译码算法的结构特点,对程序进行寄存器级优化:把Viusal C++实现的浮点算法改为定点算法,将前后向累积路径度量计算的最内层循环展开,合理分配寄存器,使指令中参与运算的寄存器尽量属于同一个数据通道,以减少交叉数据通道冲突,对于访问频繁的变量,置成寄存器型。同时利用功能强大TMS320C6416的C语言编译器和优化器对程序进行全程优化,从而得到效率较高的代码。



关键词: 编解码器

评论


相关推荐

技术专区

关闭