社区导航

 

搜索
查看: 164|回复: 0

[资料分享] C5517 FFT硬件加速器做计算时好时不好

[复制链接]

909

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-4-21 17:46 | 显示全部楼层 |阅读模式
使用硬件加速器计算128点fft,开始时数据不对,经过多次尝试,终于在main()下做成功了,但是将main()下做fft代码复制粘贴到所需的地方后,又出错了,经过查看,hwafft_br()函数的结果是正确的,但是hwafft_128pts(data, scratch, fft_flag, scale_flag)函数中第一个变量的值竟然一点变化都没有,第二个变量的值有变化,让我知道hwafft_128pts调用成功了,但是,问什么同样的代码,换了一个地方,hwafft_128pts这个函数就不正常工作了。
Uint16 out_sel;
Int32 *result;
hwafft_br(data,data_br, 128);
out_sel = hwafft_128pts(data_br, scratch, FFT_FLAG, SCALE_FLAG);
if (out_sel == OUT_SEL_DATA)
{
result = data_br;
}else
{
result = scratch;
}
还有一个尝试,在代码所需的地方,首先测试了ifft的使用,结果正确了,在fft,结果也正确了,然后将ifft删除后,使用自己的数据,直接做fft就有失败了,错误和上面大概也一样(因为图像画出来差不多)。
long *in4;
in4 = INPUT4;
/*int i;
for(i=0;i<128;i++)
{
*in4++ = 0;
}
INPUT4[3]=32767;
INPUT4[3]=INPUT4[3]<<16;
result = ifft128(INPUT4);*/
result = fft128(INPUT);
就是这个代码,去掉注释,结果正确,加上注释,结果错误,能解释下这是什么原因导致的吗?

HWAFFT源码有个bug,需要放在0x10000 64KW以内的memory,看一下你放的另外一个地方,有没有超出这个范围。具体请参考下面的errata。

Advisory 2.0.4 HWAFFT: Data and Scratch Buffers Must Reside at Data Locations Less Than Word Address 0x10000
http://www.ti.com/lit/er/sprz383b/sprz383b.pdf
这个放在0x10000以内也不稳定,还是out_sel = hwafft_128pts(INPUTW, OUTPUT,OUTPUT, INPUTW, FFT_FLAG, SCALE_FLAG);这样使用更稳定。




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-5-22 07:27 , Processed in 0.082600 second(s), 16 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表