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.

[FAQ] [参考译文] [常见问题解答] C28x、C28x FPU 和 VCU 上有哪些不同的 FFT 实现?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/951619/faq-what-are-the-different-fft-implementations-on-a-c28x-c28x-fpu-and-vcu

问:C28x、C28x FPU 和 VCU 上有哪些不同的 FFT 实现?  如何选择使用哪一个?

差异:

32位定点

此实现方案使用 C28定点 CPU。 它使用 CPU 的片上32位定点数学功能。 根据经验、对于优化的32位实现、每个 FFT 蝶形计算需要~20个周期。

16位定点

此实现可使用 C28定点 CPU 或具有 VCU 增强功能的 C28x (C28x+VCU)。

C28x 定点

该实现使用 C28x 定点 CPU 的16位数学功能。 如果使用 C28 CPU 内核、每个 FFT 蝶形计算需要~16个周期

具有 VCU 的 C28x

此实现使用具有 VCU 的 C28x 的16位数学功能。 除了定点 CPU 之外、VCU 还提供优化的16位复数数学功能。 如果使用 C28x+VCU 增强功能、则每个 FFT 蝶形计算需要~5个周期。 目前有两个版本的 VCU、0类通常称为 VCU-I、2类称为 VCU-II FFT 在 VCU-II 上大幅上升、蝶形计算平均需要~2.5个周期才能完成。

注意:VCU 并非在所有器件上都可用、并且没有计划将其放置在未来的器件上。  

32位浮点

此实现使用扩展浮点指令集。 它使用 C28x+FPU 的32位浮点数学功能以及重复块(RPTB)指令。 根据经验、每个 FFT 蝶形计算需要~10个周期。 如果在浮点器件上实现并且需要32位、则这是首选实现。

具有 TMU 的32位浮点

三角函数加速器(TMU)是32位单精度浮点单元(FPU)的扩展。 它提供了以周期高效方式执行某些三角函数和算术函数的指令。 TMU 特定指令用于通过有效计算平方根、除法和反正切来加快幅度和相位计算。 可以通过设置以下编译器选项来启用 TMU:

注意: 有关所有与浮点相关的编译器选项、请参阅 C2000编译器用户指南(www.ti.com/.../spru514)。  

 --float_support=fpu32和--tmu_support=tmu0。

如果用户希望在 C 代码中使用 TMU、则必须打开附加选项、

--fp_mode=relaxed

这将使编译器用 TMU 指令替换对标准 C 数学库的调用、如正弦或余弦。

结论:

16位实现

虽然 C28x+VCU 实现可提供最佳性能、但 并非在所有器件上都可用、并且没有计划将其包含在未来的器件上。  VCU 幅度和相位计算与定点器件上的计算相同。 这是因为 VCU 没有改进这些算法的增强功能。

32位定点 FFT 性能

要提高32位定点 FFT 的性能、请执行以下操作:

考虑使用浮点器件。 FPU 可以使性能加倍。 此外、幅度和相位计算速度更快、因为 FPU 在这方面比32位定点数学做得更好。 32位定点和32位浮点实现之间的分辨率折衷可以忽略不计。

如果应用能够容忍16位实现、则考虑使用 C28x+VCU。 与32位定点实现相比、这会更快。 但是、VCU 没有改进幅度或相位计算性能的指令。 这些运算最好在浮点中完成。

32位 FPU 与16位 VCU

16位 VCU 和32位 FPU 实现之间的性能差异并不大。 VCU-I (0类)没有改进幅度和相位计算性能的增强功能。 VCU-II 有一条新指令、用于在单个周期内计算16位定点复数变量的幅度;它对相位计算没有任何改进。

CLA

虽然 CLA 本身不适合完整 FFT 算法、但可以考虑将其用于幅度和相位计算。 这将减轻主 CPU 的这些操作负载。 例如、在 F2806x 等器件上、可以在主 C28x+FPU 上执行浮点 FFT、并在 CLA 上执行幅度计算。  由于 CLA 的 RAM 有限、因此点数将受到限制。

C2000培训视频:https://training.ti.com/search-catalog/field_language/ZH-CN?keywords=C2000&start%5Bdate%5D=&end%5Bdate%5D=

C2000培训小程序码