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.

[参考译文] TMS320C6678:FFT 库函数

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/788384/tms320c6678-fft-library-function

器件型号:TMS320C6678
主题中讨论的其他器件:FFTLIB

您好!

我最近在处理器论坛中提出了一个有关选择正确 FFT 库的问题。 遗憾的是、该帖子标记为已解决、尽管它未解决我的问题。

您可以在 https://e2e.ti.com/support/processors/f/791/p/787393/2912430#2912430上找到原始帖子

  1. 是否有适合 windowSizes < 64k 的 FFT 函数?
  2. 函数名称中没有"omp"的 FFTlib 函数是否不使用 OpenMP?
  3. 在我的项目中、我使用 L2SRAM 作为显式调整的存储器(包含数据和可执行程序内容)。 这会干扰 FFTlib 或 DSPLIB 中 FFT 函数的实现吗? (这些函数是否覆盖 L2SRAM)
  4. 我还在项目中使用 EDMA 表单 CSL 库。 这是否会干扰使用 EDMA3库中函数的 FFTlib 的 EDMA 实现?
  5. 是否有任何 FFT 函数(DSPLib 或 FFTlib)就地可用?

提前感谢您提供有关所有五个问题的详细答案。

此致

Paul

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

    将来请不要重复发布、只需在该主题上发布您的其他问题/反馈、您就可以在 e2e 中重新打开原始主题。 我现在已经关闭了您的旧线程。

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

    是否有关于此主题的新闻?
    请告诉我需要多长时间才能得到答案。

    此致、并提前表示感谢

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

    很抱歉、在本主题上给您回复的延迟。 对于小于64K 的 FFT 函数、您可以对这些器件使用 Processor SDK RTOS 中的 DSPLIB。 n`t 中没有 OpenMP 的 API 不使用 OpenMP 运行时。 您可以构建/导入函数的单元测试以查看相关性。 API 指南还指示哪些 API 应是多核实现。

    该库n`t 任何存储器。 由应用程序开发人员提供链接器命令文件或 BIOS 平台配置来提供代码/数据放置。 FFTLIB 使用框架组件中的 EDMA 管理器。 EDMA 的使用、配置和使用的通道位于源代码中、位于以下位置:fftlib_c66x_2_0_0_2\packages/ti\fftlib\src\common

    文档中列出了支持就地的函数。 例如、DSPLIB 中的以下函数就位可用。
    DSPF_sp_cholesky_in_place。 大多数 FFT 函数都不能就地运行、这在 API 文档的假设部分中进行了说明。

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

    DSPLIB 的问题是它只支持基数2、例如、具有长度为2的输入。 如果零填充不可能或不合适、则无法使用 DSPLIB。

    相反、FFTLIB 支持任何长度的输入。 但是、DSPLIB 仅适用于长度大于1024 (或4 * 1024)的情况。

    -为什么 FFTLIB 仅支持大于1024的输入?

    -如果给定长度为150的向量、如何在 c6678上实现 FFT (r2c)?

    我在 http://processors.wiki.ti.com/index.php/MCSDK_HPC_3.x_FFTW_Library 上找到了这个 wiki ,但在任何地方都找不到提到的库。 我正在使用最新的 SDK。 我可以从何处下载相应的库? 这将非常有帮助。

    非常感谢您的回答。

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

    您好、Rahul、

    感谢您的详细回答!

    本周、我开始将 DSPLIB 集成到我们的项目中。 在这样做的同时、我偶然发现了一些问题、这些问题涉及到了旋转因子的计算。 DSPLIB 示例中显示的计算结果不正确(TI 可能会更正该示例)。 在这篇文章的帮助下、我设法获得了更好的结果(我使用了 Twiddle 因子生成、如 DSPLIB FFT 函数的单元测试中所示、例如在 DSPF_sp_fftSPxSP_d.c 中)。

    另一个有用的文档是 有关 DSPLib FFT 函数的应用报告。

    为了检查我的集成是否正确、我将 FFT 结果与我们当前的实现和 Matlab FFT 进行了比较。 如以下示例所示、傅里叶系数之间存在细微差异。

    (fftlength = 32;input[i]= 0.1 *(0.7 *(i % 131)+(i % 29));(0 <= i < 32);使用 DSPF_sp_fftSPxSP_r2c (...)计算)

    MATLAB:

     75.620000000000005 + 0.0000000000000000000i
    -10.654789833129481 -24.329925890833721i
     -8.559642263582479 - 7.834721154999828i
     -5.675281895689369 - 1.831956695103285i
     -2.7199999999999 + 0.434558441227158i
     -0.377094408728717+0.5675123739745i
     0.9000783558864959 - 0.450689318585172i
     1.004642386192805 - 1.771532198248551i
     0.180000000000000 - 2.7199999999999i
     -1.086141097627343 - 2.9012827420728i
     -2.238859024982983 - 2.298586870157509i
     -2.8433416835553761 - 1.156097124544730i
     -2.7199999999999 + 0.074558441227155i
     -1.984282012028152 + 0.951077365231513i
     -0.981577067299496 + 1.197381293427834i
     -0.143711455435983 +0.799237038613374i

    TI:

     75.620003 + 0.000000 I
     -10.654790 + 24.329926 I
      -8.559643 + 7.834720 I
     -5.675283+1.831957一
     -2.720000 - 0.434558 I
     -0.377094 -0.67513 I
      0.900079 + 0.450688 I
       1.004644 + 1.771532 I
       0.180000 + 2.720001 I
      -1.086141 + 2.909012 I
      -2.238859 + 2.298586 I
      -2.843342 + 1.156097 I
      -2.720001 - 0.074559 I
      -1.984282 - 0.951078 I
     -0.981577 - 1.197381 I
      -0.143711-0.799238 I

    我的问题是:这种微小的差异是正确的还是我做的事情不是正确的?

    此致

    Paul

    注:我更改了 tw_gen (..)中 PI 的定义 函数与 math.h 的 M_PI 进行比较

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于 MATLAB 在 x86上运行、并且可能使用双精度数据类型、因此由于数据截断以及为提高性能而进行的一些优化、会有一些差异。

    此致、
    Rahul