新闻中心

EEPW首页>嵌入式系统>设计应用> 基于DSP处理器的UMTS Turbo MAP 解码器

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

作者: 时间:2008-12-25 来源:网络 收藏

  2 LLR的实现

  对于UMTS解码器,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处理器上MAP解码器的高效实现,详细说明了基于窗口的存储空间降低方法,并利用16位加/减和16位求最大值向量指令以及交叉选项(CO),高效地在Blackfin嵌入式处理器上实现了MAP解码。该方法耗费大约36个BF5xx周期,即可计算得到一个LLR输出。同时,利用约50kB的BF5xx存储空间,完成了UMTS Turbo MAP解码算法的数据和程序存储。


上一页 1 2 3 4 5 下一页

关键词:TurboDSPBLACKFIN

评论


相关推荐

技术专区

关闭