保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于DSP的信道译码算法优化


62xxCPU中有32个寄存器)。

在进行上述调整后运行代码,进行测试发展,性能没有太大改善;用编译器反馈表(feedback)进行观察发现,循环并没有发生流水。这是为什么呢?原来在展开内部循环后导致C循环内代码尺寸太大,需要的寄存器数目大于C62XX的32个寄存器,所以不能进行软件流水。为了解决这问题,需要简化循环或将循环拆成几个小循环。在这里先将C循环内部的小循环展开,然后将其拆成分别完成度量计算和累计度量比较的两个循环,这样就减小了每个循环中的代码尺寸。限于篇幅这里只写出累计度量比较的循环代码。

/*完成累计度量比较的循环*/

accum00=accum_err_metric[0];accum10=accum_err_metric[1];

accum20=accum_err_metric[2];accum30=accum_err_metric[3];

for(c=0;c<n;c++)//n=24

{sh_ptr++;

add1=accum10+branch_metric_array[c][1];

add2=accum00+branch_metric_array[c][0];

add3=accum10+branch_metric_array[c][0];

add4=accum00+branch_metri

c_arrcy[c][1];

add5=accum30+branch_metric_array[c][2];

add6=accum20+branch_metric_array[c][3];

add7=accum30+branch_metric_array[c][3];

add8=accum20+branch_metric_array[c][2];

if(add1>add2){accum00=add2;state_history[0][sh_ptr]=0;}

else{accum00=add1;state_history[0][sh_ptr]=1;}

if(add3>add4){accum20=add4;state_history[2][sh_ptr]=0;}

else{accum20=add3;state_history[2][sh_ptr]=1;}

if(add5>add6){accum30=add6;state_history[3][sh_ptr]=2;}

else{accum30=add5;state_history[3][sh_ptr]=3;}

if(add7>add8){accum10=add8;state_history[1][sh_ptr]=2;}

else{accum10=add7;state_history[1][sh_ptr]=3;}

}

accum_err_metric[0]=accum00;accum_err_metic[1]=accum10;

accum_err_metric[2]=accum20;accum_err_metric[3]=accum30;

其中accum_err_metric[i]为状态i的累计度量值,branch_metric_array[][]为计算得到的各时刻量值,原来代码中的二维数码mextstate[j][i]被以实值代入。另外在编程考虑时要注意一点:程序中对数据的取命令(load)是非常耗时的,所以应

《基于DSP的信道译码算法优化(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/152133.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。