微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的信道译碍算法优化方案

基于DSP的信道译碍算法优化方案

时间:05-11 来源:3721RD 点击:

另外,还有不少考虑因素和优化调试方法,如消除存储器相关性、对短字长的数据使用宽离长度的存储器访问等。由于篇幅所限不能在这里一一列出,详细资料可参考TMS320C6000 Code Composer Studio Manuals中的TMS320C6000 Optimizing C Compiler User's Guide。

测试结果:在经过上述优化后运行耗时(时钟周期)已降为406个,代码的性能大为提高,已经满足系统要求。

③由上述可知,在程序中影响性能的主要代码通常是循环。优化一个循环较好的方法是抽出这个循环,使之成为一个单独文件,对其进行重新编写、重新编译和单独运行。为了提高代码性能,对影响速度的关键C代码段可以用线性汇编重新编写,使用汇编优化器进行优化后效率是非常高的。若代码性能仍未满足要求,则可进行第三阶段,将其抽出,全部用线性汇编来编写,在代码中以函数的形式将改写的部分调用。将循环代码段改写为线性汇编调用函数的格式如下:
.global_KernelLoop ;函数名定义前加_
_KernelLoop:.cproc channel_data,branch_metric_array,depunc ;定义入口形参变量
.reg c,q0,q1,y1,y2,x1,x2,cc,temp,temp0,temp1,temp2,temp3
.reg counter,valuel,value2,value3定义中间变量
no_mdep ;表明存储器地址不相关
zer0 c ;初始化变量
zero cc
loop: .trip 24 ;声明循环24次
·
·
·
运行语句
·
·
·
[counter]sub counter,23,counter;循环计数
[counter]b loop ;循环跳转
.return ;完成返回
.endproc ;结束

编写线性汇编的工作量大,开发周期长且不能像C语言程序一样移植到其它类型DSP上,所以尽量在第一、二阶段完成工作。若仍满足不了性能要求,则再对关键代码段进行线性汇编的改写。

结语

本文在TI的TMS320C6211硬件平台上实现了针对(2,1,3)卷积码的 Viterbi译码算法的优化,满足了系统对2Mb/s的视频数据流进行实时处理的要求。在对1Kb数据处理时,整个代码运行耗时约为2100个时钟周期,DSP资源占用率不到40%。目前随着理论技术的不断突破,尤其是实时图像压缩技术如H.264等新一代技术标准的提出,如何利用高速DSP进行复杂算法的开发与实现,已成为研究的重点。所以本文以Viterbi算法为例介绍TMS320C6000的编程优化,有较强实用性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top