首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于DSP处理器的UMTS Turbo MAP 解码器(5)

基于DSP处理器的UMTS Turbo MAP 解码器(5)

2 LLR的实现
  对于UMTS Turbo解码器,MAP算法的LLR可由式(1),式(2)和式(3)计算得到。式(2)和式(3)分别说明了通过α、γ和β来计算位“1”和位“0”的APP值的关系。这些MAP LLR的关系如图5(a)和图5(b)所示。
  
  图5(a) 位“1”的 MAP关系,(b)位“0”的MAP关系
  对于两个相同的输入和输出,位“1”和位“0”的MAP关系并不相似(极少情况下状态被交换),而这类不对称流程使我们无法利用Blackfin中计算单元和加载/存储单元的最大带宽。例如,图5(a)和图5(b)中标示的部分,我们考虑与式(2)和式(3)的前两项相对应的顶端蝶形运算。
  
  图6 在Blackfin ALU上的LLR计算
  由于Blackfin只需要三个周期就能完成四个16位加法和两个16位求最大值操作,要平衡加载/存储(DAG)单元的带宽和计算单元,只能用三个周期来加载数据。假设三个寄存器在三个周期中分别加载了α0|α0, α1|α1和 β4|β0,如图6所示。那么通过16位加法操作,我们可以在两个周期中计算出α0+β4|α0+β0和α1+β4|α1+β0。但是,MAX 操作要求仿照式(3)从反方向由α1+β0|α1+β4求得输出的第二项。Blackfin的16位加法指令所支持的交叉选项(CO)选项可用来换回加法的中间输出,如图6所示。如果没有交叉选项(CO),我们将耗费四个周期来计算四次加法,而不是两个。采用(CO)选项换回之后,执行最大向量操作(一个周期)即可得到两个Log-Max 输出。这一部分程序代码如图7所示。有了(CO)选项,就可以在18个Blackfin指令周期内计算某一级上的LLR值。

  
  图7 利用BF5xx处理器交叉选项(CO)的LLR高效实现
  总结
  本文介绍了在ADI BF5xx处理器上Turbo MAP解码器的高效实现,详细说明了基于窗口的存储空间降低方法,并利用16位加/减和16位求最大值向量指令以及交叉选项(CO),高效地在Blackfin嵌入式处理器上实现了Turbo MAP解码。该方法耗费大约36个BF5xx周期,即可计算得到一个LLR输出。同时,利用约50kB的BF5xx存储空间,完成了UMTS Turbo MAP解码算法的数据和程序存储。
继承事业,薪火相传
返回列表