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.

[参考译文] TMS320F28377S:VCU2 RFFT 示例代码

Guru**** 2478765 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/683508/tms320f28377s-vcu2-rfft-example-code

器件型号:TMS320F28377S

您好、香榭丽舍

下面我有两个关于 VCU2 RFFT 示例代码的问题、

输出缓冲 器 buffer2Q15[0]是 DC、我们可以说这是输入信号的 DC 偏移、它是正确的吗?

我们可以从何处获取输出缓冲器的幅度信息?

如有任何建议、请提出建议、谢谢。

此致、

Luke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Luke、

    [引用 USER="Luke Chen ]输出缓冲 器 buffer2Q15[0]是直流的、我们可以说这是输入信号的直流偏移、它是正确的吗?

    是的、没错

    [引用 user="Luke Chen "]我们可以从何处获取输出缓冲区的幅度信息、请

    您需要计算此值。 在 RFFT 操作的末尾,即在 CFFT_UNPACGE()之后,您最终得到频谱的第一个 N/2-1复数点。 其原因是纯实数输入的傅里叶变换是共轭对称的、即 F (N-k)= F (k)*、k = 0至 N/2-1。 这也意味着 F (0)和 F (N/2)只有具有0虚部的实部。

    因此、为了获得幅度平方、您必须执行类似这样的操作(伪代码)

    for (i=0、j=0;i < N;)

    {  

      mag[j++]= buff2[i++]^2 + buff2[i++]^2;

    如果您需要上述的 sqrt (),则必须包含 IQmath 库并调用相应的 sqrt ()  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vishal、

    感谢您的回答、我仍有关于 vcu2示例代码的问题、

    1. 在2837x_vcu2_rfft_256示例代码中、buffer1Q15数组中有256个实数部分项目、而 CFFT_run128Pt 将该数组视为实数+虚数部分、如领域1、imag1、real2、imag2。 那么、它是正确的吗?
    2. 在此示例代码中、我生成正弦波数据(实数部分)并运行、FFT 输出数据似乎位于 buffer1Q15中、而不是 buffer2Q15中。 是这样吗?
    3. 此 RFFT 的 FFT 输出格式是什么? 它是否包括实部和虚部?

     我还有关于 FixedPointLib 2833x_FixedPoint_RFFT 示例代码的问题、需要您的评论、

    1. 函数原型 void RFFT32_bev (int32_t * src、int32_t * dst、uint16_t size);与文档定点 DSP 软件库不同。 该软件库是用于16位 FFT 还是32位 FFT?
    2. 此软件库是否还将输入数据视为领域1、imag1、real2、imag2…等?
    3. 该 FFT 输出是否包括实部和虚部?
    4. 示例代码使用函数 RFFT32_Brev ()、什么意思是 FFT 的位反转?

     

    感谢你的帮助。

    此致、

    Luke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Luke Chen ]在2837x_vcu2_rfft_256示例代码中、buffer1Q15数组中有256个实数部分项、而 CFFT_run128Pt 将该数组视为实数+虚数部分、如领域1、imag1、real2、imag2。 那么、它是否正确?[/quot]

    正确、它将256 pt 实数数据视为128 pt 复数、运行128 pt CFFT、然后"解压缩"或"拆分"(此操作没有正式名称)输出、以获得一半的实数数据频谱。 您只需要一半、因为频谱是共轭对称的

    [引用 user="Luke Chen ]在此示例代码中、我构建正弦波数据(实数部分)并运行、似乎 FFT 输出数据位于 buffer1Q15中、而不是 buffer2Q15中。 这是正确的吗?

    不、它应该在 buffer2Q15中

    [引用 user="Luke Chen ]此 RFFT 的 FFT 输出格式是什么? 它是否包括实部和虚部?

    是的、但仅到 N/2-1st bin、那么  

    F[0].r、F[0].I、F[1].r、F[1].I、....、 F[N/2-2].r、F[N/2-2].I、F[N/2-1].r、F[N/2-1].I

    [引用 user="Luke Chen ]函数原型 void RFFT32_bev (int32_t * src、int32_t * dst、uint16_t size);不同于文档定点 DSP 软件库。 此软件库是用于16位 FFT 还是32位 FFT?[/QUERP]

    其32位、文档中的原型不正确。 我可以提交一个 TT 来纠正这种情况

    [引用 user="Luke Chen "]此软件库是否还将输入数据视为领域1、imag1、real2、imag2…等等?

    是的、它执行相同的算法、在输入上运行一个 N/2点复数 FFT、然后分离输出以获得频谱、直到 N/2 th bin

    [引用 user="Luke Chen "]此 FFT 输出包括实部和虚部?

    是的、任何 FFT 输出都是复杂的。

    [引用 user="Luke Chen ]示例代码使用函数 RFFT32_brev ()、FFT 的位反转意味着什么?[/quot]

    是的。 在输入上运行 FFT 之前、您可以对其进行位反转格式的重新排序