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.

fftc scaling问题

Andy Yin:

      您好,我在这个帖子(http://www.deyisupport.com/question_answer/f/53/t/2705.aspx)中看了scaling factor的设置还有几个问题不懂

     (1)SUM (si) + sout– 3 + (LTE_FREQ_EN * SLTE)公式中的-3是怎么来的,我看了user guide Figure2-3,图中先把16 bit的输入左移6位变为22位,资料中说:

     “The internal precision of the FFT engine is 22/19 bits—the inputs are first scaled to 22 bits by shifting left 6 bits, then 19 of the 22 bits are selected based on the shift factor. A shift of 0 bits means that the 19 LSBs are selected.”这是什么意思呢?

     (2)公式中为什么没有Figure 2-3中的左移6位和最后右移10位的说明呢?右移10位是什么意思呢?

     (3)你在上面帖子中提到的公式FFTC_Scaling_factor = 2^(-S) * sqrt(N) * outputScaling这里的outputScaling是figure 2-3中说的outputScaling吗?为什么你在上面那个帖子中说“outputscaling不是128,而是实际配置对应的浮点值,取值为[0,1]”呢?我参考了fftc_testcfg_16.h文件,其中的outputscaling是设置为128的啊?

     (4)我把fftc_testcfg_16.h原文件的输入结果用matlab算了算出的结果和该文件的期望输出结果为什么差2倍啊(因为把.out文件在板子上运行没有报错,如果是这样的话,说明fftc输出的结果也是差2倍关系),难道是fftc_testcfg_16.h中的期望结果是错的?

  • 1.  如你所摘的语句描述,FFTC会对输入的数据首先左移6bit得到22bit输入,然后根据S0的取值决定从22bit中取出相应的19bit作为后面的输入;最后的输出右移10bit包含两部分,一部分是补偿最开始的左移6bit,另一部分是补偿前一级的output scaling(由于output scaling定标Q7对应定点范围(1~128),所以右移7bit后实际对应output scaling对最后的输出乘上了(0~1)进行缩放);最开始左移6bit对应-6,最后输出右移3bit对应+3,所以综合起来就是-3.

    2. 关于matlab的结果,请看一下pdk中FFTC采用的是静态还是动态因子调整,然后在matlab中也采用相应的方式,这样才能进行结果比对,否则会存在倍数的关系。

  • Andy Yin:

           您好

           (1)如果对于动态scaling如果要使得计算结果和期望结果一致是不是只要调整outscaling的值就可以了呢?

            (2)fftc是不是只能做16bit的定点计算,如果要做32位的是不是只能通过cpu用软件计算?如果要做浮点计算是不是要把输入放大成整数然后再技术,把计算结果再缩小相应倍数呢?

  • 对于FFTC输出结果比对,可以在matlab同样实现动态调整得到结果,只有两边的实现方式一致才能更好地进行比对。

    是的,FFTC只支持16bit IQ定点输入。

  • Andy Yin1 :

         您好,我情况是这样的:我有一个现成matlab代码的一个算法,现在想用dsp实现,所以我就要对每一步计算结果和matab对比,这样才能保证我结果的正确性。对于一个输入数据用matlab计算之后结果是唯一的,不存在放大或者缩小几倍,现在我用dsp算的结果和matlab成倍数关系,那么我要以matlab计算的结果没母版使得dsp算出的结果与matlab的结果一致。

        如果我才有动态scaling方式,是不是只需要调整outscaling的值呢,fftc_cfg_16.h文件中的outscaling=128,而matlab计算的结果和fftc的结果差2倍,然后我就把outscaling设置为64之后结果就和matlab的一致了。

        我想说的是如果结果差倍数关系是不是就调整outscaling的值呢?

  • Andy Yin1 :

              可以回答一下我的问题吗?

  • 可以,也可以调整Matlab的定标因子。