各位大拿好,小弟在对一组数据(144个)做hwafft处理时,如果用hwafft_256pts,返回值为0,FFT数据存储在data里,如果用hwafft_512pts或者hwafft_1024pts返回值为1,FFT数据存储在scratch_data里,这个没有错。但随后做IFFT时,hwafft_512pts或者hwafft_1024pts用scratch_data里的数据做IFFT可以得到原始数据。但hwafft_256pts 用data(此时FFT数据储存在DATA里)里的数据做IFFT得不到原始数据,如果用scratch_data里的非FFT数据做IFFT反而可以得到原始数据。
小弟有点搞不懂这个现象,有谁可以解释一下是哪里出错了吗?
Shine:
确定hwafft_256pts时代返回值是0?
看一下data, scratch buffer是否定义在0x10000以下的RAM?
Advisory 2.0.4 HWAFFT: Data and Scratch Buffers Must Reside at Data Locations Less Than Word Address 0x10000http://www.ti.com/lit/er/sprz383b/sprz383b.pdf
chaoyang guo:
回复 Shine:
是的,返回值是0, BUFFER是定义在
DARAM0 (RWIX): origin = 0x0000c0, length = 0x007f40 /* 32KB – MMRs */ DARAM1 (RWIX) : origin = 0008000h length = 003000h /* on-chip DARAM 1 */
.br_buf > DARAM1 .src_buf :> DARAM1 .scratch_buf :> DARAM1 /* output data of scratch */
Shine:
回复 chaoyang guo:
br_buf需要对齐。2.9 Appendix A Methods for Aligning the Bit-Reverse Destination Vectorhttp://www.ti.com/lit/ug/spruh16b/spruh16b.pdf
chaoyang guo:
回复 Shine:
您好!
按照PDF上提供的三种方式试了还是不行啊,128点和256点返回值是0数据存在data缓存,然后做IFFT得不到原始值, 512和1024是正常的。
Shine:
回复 chaoyang guo:
感谢反馈!