1957|0

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

C5517 FFT硬件加速器做计算时好时不好 [复制链接]

使用硬件加速器计算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);这样使用更稳定。


点赞 关注
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表