This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6670 FFTC模块去循环前缀的问题~(发了几次关于FFTC的问题了,希望能帮我一下 ,非常感谢)



现在先对一组2048点的数据做IFFT,然后加循环前缀,之后去掉CP 做FFT,都是通过设定寄存器来控制的。

不过调试过程发现以下问题:

1:当我加的循环前缀为144或者155的时候或者更低的时候,程序能够正常通过,数据测试通过,但是当加到158  159  160 测试的时候,数据就会出现很大偏差

比如现在是用一个2048点的数据,每个数据是Uint32的,把最后160个数据放到前面,组成一个2208点的输入数据,将pktDMA descriptor 中配置的 packet size是实际buffer的长度,也就是(2048 + 160) * 4,这样用160数据就会产生错误,但是144之类的就可以。

还请指点一二,多谢~

  • FFTC本身可以支持加CP,如果做2048点FFT再加cp,只需要将2048word当做输入即可,不需要加上cp点数作为输入。

    你这里所谓的出现偏差是否可能跟scaling有关,因为FFT/IFFT前后scaling factor不一样。

  • 谢谢,因为我设置的是动态scaling,如果要设置为静态scaling的话,具体应该怎么设置呢?能不能详细说一下,

    你说的不需要将CP点数作为输入是什么意思呢,是在做FFT之前将CP自己取出来移除吗?FFTC应该是自动通过设定的包长度减去FFT点数取去除CP对吗?

    谢谢啊

  • 静态scaling每一级的因子是与输入数据幅度有关,需要进行仿真得到,原则是保证每一级的结果精度高且不饱和。

    加CP只需要将2048个点输入即可,不需要像你说的输入2048+160

  • 我在做IFFT加CP的时候是输入的2048个点,然后我是去CP的输入的才是2208个点,这个不应该这样吗?我是做的一个回环测试,流程为2048点输入--->IFFT--》

    加160CP-->取出2208点数据---->设置寄存器去CP使能--->输入2208点数据--->做FFT           我这样的流程对吗  因为我在前面加CP的时候,如果为144,最后得到数据和最原始的输入是一样的,但是当加到160的时候就不对了。  如果静态设置这么麻烦,用动态的话怎样保证这样的回环测试能够正确呢。