你好!
我用TMS320C5517做一个项目,使用它的hwafft功能。
为何我调用hwafft_1024pts函数做fft运算之后,scratch_data中的结果总是全0啊?
查了很多资料,貌似都不管用。
以下是执行fft运算的代码:
volatile COMPLEX_T src_data[1024];
volatile COMPLEX_T scratch_data[1024];
/* Bit-Reverse 1024-point data, Store into data_br, data_br aligned to 12-least significant binary zeros*/
hwafft_br((Int32*) src_data, (Int32*) br_data, DATA_LEN_1024); /* bit-reverse input data, Destination buffer aligned */
fftResult = (COMPLEX_T *) &br_data[0];
}else {
fftResult = (COMPLEX_T *) &scratch_data[0];
}
三个缓冲区:src_data、br_data、scratch_data的定义与地址分配如下。
这是CMD文件中的片段:
PAGE 0: /* —- Unified Program/Data Address Space —- */
MMR (RWIX): origin = 0x000000, length = 0x0000c0 /* MMRs */
DARAM0 (RWIX): origin = 0x0000c0, length = 0x007f40 /* 32KB – MMRs */
DARAM1 (RWIX) : origin = 0008000h length = 002000h /* on-chip DARAM 1 */
DARAM2 (RWIX) : origin = 000a000h length = 002000h /* on-chip DARAM 2 */
DARAM3 (RWIX) : origin = 000c000h length = 002000h /* on-chip DARAM 3 */
DARAM4 (RWIX) : origin = 000e000h length = 002000h /* on-chip DARAM 4 */
….
.src_buf > DARAM2
.br_buf > DARAM3 /* output data of bit reverse */
.scratch_buf > DARAM4 /* output data of scratch */
结构体COMPLEX的定义如下:
Int16 imag;
Int16 real;
}COMPLEX_T, *pCOMPLEX_T;
Eggsy Pang:
你应该看到是fftResult的内容,fftResult也是全为0吗?
Jason Xu4:
回复 Eggsy Pang:
是的,fftResult里面全是0。
hwafft_1024pts的返回值总是等于1(OUT_SEL_SCRATCH),即fft结果应该在scratch_data中,然而scratch_data里面全0。
c5517的Silicon Errate看过了,该注意的地方都检查核对过了,结果还是全0。
求助!SOS、SOOOS!!!
Jason Xu4:
回复 Eggsy Pang:
而且我还试过了不用ROM里的hwafft函数,用TI发布的workaround代替(见附件)。
就是这个hwafft.asm
********************************************************************************* File name : hwafft.asm* Description : Contains FFT/IFFT routines for HWA FFT.* Author : Frank Livingston* Date : 2/1/2008********************************************************************************* Changelog:* 2012-08-14: Replaced 16-bit AR register copies with 23-bit XAR register copies to allow allocation of data & scratch buffers anywhere in memory*******************************************************************************
……
其结果还是一样,fft出来的数据全为0。
我使用的开发环境如下:
Win10 64位;CCS 7.1.0.00016;
芯片是TMS320C5517AZCHA20,板子是我们自己设计的,其他功能都正常,就是关键的fft功能不正常。
Jason Xu4:
回复 Eggsy Pang:
另外,相同的代码,一个字不改,用5517 EVM板子跑,fft的结果就不是0。
用我们自己做的板子,fft的结果就全是0。但我们设计的板子除了fft其他都没有问题,所有用到的外设都能调通一切正常,偏偏hwafft这个不正常。
这到底是什么原因?难道5517执行hwafft时对板子硬件有特殊要求么?
急需帮助!!!
Jason Xu4:
回复 Eggsy Pang:
没人能够回答么:为什么5517跑fft之后结果总是全0???
谁能给我一个标准的、简单的、纯粹的(无CSL或DSPBIOS),能在5517上只跑hwafft的例子?
hwafft应该是5517最核心的功能吧,怎么会有这种稀奇古怪的问题????
Eggsy Pang:
回复 Jason Xu4:
这个是 C5515,你试试看
user5052112:
回复 Jason Xu4:
我想问一下,这个问题解决了吗?如果解决了,能知道是什么原因吗?谢谢!
TMS320C5517 Fixed-Point Digital Signal Processor Silicon Revision 1.0, 2.0, and 2.1 Silicon Errata这个手册中有这个描述,也不知道是什么意思,不知你有没有尝试过。