Andy Yin老师你好,
在c6670上,根据TI提供的FFTC_MultiInst_testProject工程,经测试做FFT,结果没问题,现想在FFT和IFFT做简单回环,经我修改,想用来做IFFT,跑了一下结果不正确?不知问题出在哪儿?具体做了以下修改:
1.在test_main.c文件中,552-555行代码表示可以选择进行FFT或IFFT。所以我修改了fftc_testcfg_16.h文件中133行,把0该为了1,使其选择IFFT模式。
2..在fftc_testcfg_16.h文件中,把以前的输入改为了期望结果输出,把期望结果作为了输入。(以前的顺序是做FFT的数据顺序)
我做了以上两点修改,请问是修改不正确还是需要做其他方面修改?请给出具体意见,谢谢!
Andy Yin:
wenzheng liu您好,
请不要称呼老师~!
修改是没问题,请你确认几点:
1. 你的输入输出是哪里来的,是直接把例程中的输入输出交换么?
2. 比对一下IFFT输出结果与期望结果的差异,如果是相差固定倍数关系的话,需要调节FFTC中的scaling factor使IFFT输出与期望结果达到一致。
谢谢。
wenzheng liu:
回复 Andy Yin:
Andy Yin你好,
1.我的输入输出是原来例子中得数据,即在fftc_testcfg_16.h文件中把输入和输出直接交换的。
2,经比对,输出结果与期望结果相差2倍关系,这需要怎样具体调节scaling factor(针对做16点IFFT关系)?如果是1024点得IFFT,它们之间是否也是2倍关系呢?
wenzheng liu:
回复 Andy Yin:
Andy Yin你好,
根据你的建议,我下去在去看了FFTC userguide的文档,对scaling factor这块文档理解还是不明白,在具体的FFTC实例中,是否可以通过调整某个参数得到一个正确回环结果(把输入的数据先通过FFT得到一结果,然后再把结果给输入做IFFT,最后使得输出和最先的输入数据一样,彼此间没有倍数关系)?
wenzheng liu:
回复 Andy Yin:
Andy Yin你好,
对于c6670的FFTC模块,有两个问题不明白,如下:
1.关于FFT/IFFT scaling factor问题,下去后我仔细看了FFTC的使用文档,同时参考你提供的公式:FFTC_Scaling_factor = 2^(-S) * sqrt(N) * outputScaling~~~~~~~~~~~~~~~*,
已基本理解scaling问题,但是有一点不明白:S为根据公式SUM (si) + sout– 3 + (LTE_FREQ_EN * SLTE)得到,其中,si= 0 to NUM_STAGES -1 LTE_FREQ_EN = 0 if LTE frequency shift disabled 1 if LTE frequency shift enabled。参考fingure2-3,我理解的是在计算S时,已经把outputScaling考虑进去了,即上面公式的-3是(-6-7+10)得到,其中的-7是根据(2^7=128)得到。这里不理解公式*为什么还要乘outputScaling(128)。?
2.在FFTC的实例工程中可以通过设置CyclicPrefixRegConfig寄存器去添加/移出循环前缀,经我测试,添加循环前缀没有问题,但是如何移出循环前缀,在工程中没有找到具体的代码实现和设置,如果想用FFTC移出循环前缀,要怎样修改/添加代码?
Andy Yin:
回复 wenzheng liu:
wenzheng liu您好,
1. outputscaling不是128,而是实际配置对应的浮点值,取值为[0,1];
2. cyclicPrefixRegConfig结构体后两个参数就是用来配置removeCyclicPrefix,只是在例程中没有测试,你只要根据需要配置即可。
wenzheng liu:
回复 Andy Yin:
Andy Yin你好,
上面的第一个问题经你提醒,我已完全理解,非常感谢你。
对于移出循环前缀的问题,在cyclicPrefixRegConfig结构体中,我找到了移动循环前缀的两个参数,因没有相关配置的测试代码参考,在FFTC_Simple_testProject工程中,能否对移除循环前缀的具体操作说的更具体一些?谢谢!
Andy Yin:
回复 wenzheng liu:
wenzheng liu您好,
参考例程中的说明及FFTC userguide即可知。