突发通信中Turbo码的FPGA实现

技术分类: EDA工具与服务  可编程器件  | 2008-05-12
来源:北京理工大学 | 电子工程系通信与网络实验室

  (1)计算Turbo码编码网格图上分支的路径度量值:

计算Turbo码编码网格图上分支的路径度量值

  由于Lc值对译码性能影响不大[6],为了方便定点实现,本文中简化为Lc=1 。

  2.5 SISO模块的实现

  分量译码器的FPGA实现的SISO模块采用模块化设计,主要包括前向度量计算模块、反向度量计算及对数似然比计算模块、前向度量存储器以及归一化度量存储器。由于前向度量计算和反向度量计算均需要计算分支度量,因此可以预先计算并存储分支度量。但在本方案中,为了节省存储空间,并没有对分支度量进行存储,而是在前向与反向度量计算时均计算一次,而且在反向度量计算收敛后同时计算对数似然比。

  用FPGA对算法进行定点实现时,需要考虑到溢出的问题。为防止计算过程中出现溢出,对前向度量和反向度量计算过程进行归一化处理。若某时刻的归一化度量值选择当前时刻前向度量中的最大值,则归一化便是前向度量和反向度量减去此最大值。归一化后的前向度量和反向度量计算公式如下:

前向度量和反向度量计算公式
  
  SISO模块内部处理流程分为初始化、前向度量计算和存储、反向度量计算和对数似然值计算三个部分,且对应于状态机的三个状态INIT、FSM和 RSM。SISO模块的内部时序如图4所示。INIT状态完成内部寄存器的初始化设置,当外部输入信号Siso_start有效时,启动SISO模块,进入FSM状态;FSM状态中,每8个时钟周期内,用式(1)和式(2)计算出一个时刻对应的8个前向度量值,并选择出其中的最大前向度量值作为归一化度量值,用式(8)计算归一化后的前向度量值。启动一次前向度量写信号,存储当前计算得到的8个前向度量值和当前归一化度量值。当所有前向度量计算完毕时,启动Fsmrdy信号,进入RSM状态;每10个时钟周期内,用式(1)和式(2)计算出一个时刻对应的8个反向度量值,用式(9)计算归一化后的反向度量值,用式(4)和式(5)计算出相应时刻的对数似然比和外信息对数似然比,并将外信息对数似然比存储起来。当所有计算都完成时,启动Rsmrdy信号,进入INIT状态。

SISO模块的内部时序

  由于本方案中SISO模块将时分复用作为两个分量译码器,对应于一次译码迭代的两个半迭代过程。因此图4中的Decoder_num为低时,SISO模块作为第一个分量译码器,进行第一个半迭代运算;Decoder_num为高时,SISO模块作为第二个分量译码器,进行第二个半迭代运算。每次半迭代产生的对数似然比信息作为下次半迭代的先验信息。用两块RAM存储两次半迭代产生的外信息对数似然比。第一个半迭代时,从第二个外信息存储器中读取上一次半迭代产生的外信息对数似然比作为先验信息,计算得到外信息对数似然比后存储到第一个外信息存储器中;第二个半迭代时,从第一个外信息存储器中读取上一次半迭代产生的外信息对数似然比作为先验信息,计算得到外信息对数似然比后存储到第二个外信息存储器中。每帧数据译码的第一次迭代中的第一个半迭代的先验信息设为0。

  迭代满足迭代终止准则后,译码器停止迭代,由信息的对数似然比值硬判决输出译码结果。工程中常用的迭代终止准则是设置最大迭代次数。最大迭代次数的设定需要综合考虑误码率性能和系统吞吐量性能。

  3 Turbo码编译码器的性能

  基于以上提出的Turbo码编译码器的FPGA实现方案,本文在Xilinx公司的Virtex2系列的XC2V500-6fg256 FPGA芯片上,实现了帧长在64~1 024范围之间可变的Turbo编译码器。输入数据4bit量化,内部数据位宽选择12bit,编码器模块和译码器模块在同一块FPGA芯片上实现。综合后时钟最小周期为7.188ns ,对应最高时钟频率为139.121MHz,所占的资源如表2所示。

所占的资源

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会