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.

[参考译文] MMWAVE-MCUPLUS-SDK:使用 HWA 在 AWR2944 上进行 4K FFT 拼接时出现的问题–输出大小错误和 M0 数据损坏

Guru**** 2812305 points

Other Parts Discussed in Thread: MMWAVE-MCUPLUS-SDK, AWR2944

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1624845/mmwave-mcuplus-sdk-issue-with-4k-fft-stitching-on-awr2944-using-hwa-output-size-incorrect-and-m0-data-corruption

部件号:MMWAVE-MCUPLUS-SDK
主题: AWR2944 中讨论的其他器件

尊敬的专家:

我正在尝试在 AWR2944 上使用 HWA 实现 4K FFT 拼接。 我参考了 AWR1432 文档中的 4K FFT 拼接、并尝试在 AWR2944 上复制相同的方法。

使用的 SDK:
mmwave_mcuplus_sdk_04_07_00_01

实施方法

从 1432 文档中、4K FFT 拼接流程从 M0 存储器读取输入、执行 FFT、并将输出写入 M2 存储器。

使用相同的概念:

从 M0 读取输入

FFT 使用 HWA 计算

输出被写入 M1

我按照文档中的说明配置了 Param 0 和 Param 1、当我在 1432 上尝试此流程时、缝合的 FFT 输出是在 M1 中正确获得的。

然后、我在 AWR2944 上的 hwa_real_FFT 示例中实现了相同的配置。

参考示例:
mcu_plus_sdk_awr294x_10_00_00_07\examples\drivers\hwa_real_fft\awr294x-evm\c66ss0_nortos


输入信号

为了测试实现方案、我生成了 4096 个正弦波样本。

#define FFT_SIZE  4096
#define PI      3.14159265358979323846f
#define FREQ     1210937.5f //以 Hz 为单位

Float sine_wave[fft_size];

对于 (uint32_t n = 0;n < fft_size;n++)

  SINE_WAVE[n]= 0.001 * sin (2 * PI *(FREQ / 1000000000)* n);
}

状态= HWAFT_fftRealToCmplxFloat (fftObj、
                  &gTestFFTFloatOutput[0]、
                  &SINE_WAVE[0]、
                  TEST_FFT_NUM_SAMPLES);
DebugP_assert (SystemP_Success == status);

由于每个样本为 4 个字节、因此 M0 中参数 0 的总输入大小为:

4096 × 4 字节= 16KB

预期的 FFT 输出是复数(实数+虚数)、因此预期的输出大小为:

4096 × 8 字节= 32KB


发现问题

情形 1 –使用 1432 中的参数设置(16 位配置)

最初、我使用了 1432 中的相同 Param 0 配置、该配置专为 16 位数据而设计。

采用以下配置:

M1 中观察到的输出大小约为 65KB、这是不正确的。


情形 2 –更新了 32 位输入的配置

然后、我修改了 param 0 以支持 32 位输入样本。

进行此修改后:

M1 中的输出大小增加到超过 100KB

未获得预期的 32 KB 输出

我尝试多次修改参数、但未达到预期的输出大小。


其他观察

为了进一步验证该问题、我在拼接中使用的四个迭代中绘制了中间 FFT 输出。

在所有迭代中都未观察到预期的 FFT 峰值、这表明可能无法正确配置 FFT 计算或内存处理。

调试期间出现问题

在验证输入数据时、我发现了另一个问题。

DMA 触发 HWA 后、M0 中的输入数据会损坏。

这种情况发生在:

状态+= HWA_setDMA2ACCManualTrig(fftObj->hwaHandle, resObj->rdDmaCh);

SemaphoreP_Pend(&fftObj->doneSem, SystemP_WAIT_FOREVER);

使用的触发功能为:

int32_t HWA_setDMA2ACCManualTrig (HWA_Handle handle、uint8_t idx)


使用的参数 0 配置:

paramCfg->triggerMode = HWA_TRIG_MODE_DMA;
paramCfg->triggerSrc = resObj->rdDmaCh;
paramCfg->accelMode = HWA_ACCELMODE_FFT;

paramCfg->source.srcAddr = HWADRV_ADDR_CONVERSION_CPU_TO_HWA (resObj->rdMemBankAddr);
paramCfg->source.srcSign = HWA_Samples_signed;
paramCfg->source.srcAcnt = 1023u;
paramCfg->source.srcBcnt = 3u;
paramCfg->source.srcBIdx = 8u;
paramCfg->source.srcWidth = hw_samples_width_32bit;
paramCfg->source.srcScale = 0u;
paramCfg->source.srcIQSwap = 0u;

paramCfg->dest.dstAddr = HWADRV_ADDR_CONVERSION_CPU_TO_HWA (resObj->wrMemBankAddr);
paramCfg->dest.dstSkipInit = 0U;
paramCfg->dest.dstAcnt = 1023u;
paramCfg->dest.dstAIdx = 32u;
paramCfg->dest.dstBIdx = 8u;
paramCfg->dest.dstRealComplex = HWA_Samples_format_complex;
paramCfg->dest.dstWidth = hw_samples_width_32bit;
paramCfg->dest.dstSign = hw_samples_signed;
paramCfg->dest.dstScale = 8u;

paramCfg->source.srcAIdx = 32u;
paramCfg->source.srcRealComplex = HWA_Samples_format_real;

paramCfg->accelModeArgs.fftMode.fftEn = HWA_FEATURE_BIT_ENABLE;
paramCfg->accelModeArgs.fftMode.fftSize = 10u;
paramCfg->accelModeArgs.fftMode.butterflyScaling = 0xFFFU;

paramCfg->accelModeArgs.fftMode.windowEn = HWA_FEATURE_BIT_DISABLE;
paramCfg->accelModeArgs.fftMode.postProcCfg.fftOutMode = HWA_FFT_MODE_OUTPUT_DEFAULT;

问题

在 AWR2944 HWA 上实现 4K FFT 拼接是否需要任何特定的参数配置?

需要考虑 AWR1432 和 AWR2944 之间的 FFT 拼接配置是否存在任何差异?

使用 32 位输入样本时、为什么输出大小超过预期的 32KB?

什么可能会导致 DMA 触发 HWA 后 M0 中的输入数据损坏?

在 AWR2944 上使用 HWA 实现 4K FFT 拼接的建议方法是什么?

对于 AWR2944 上使用 HWA 的 4K FFT 拼接、有关正确配置或示例实现的任何指导都会非常有用。

谢谢你。

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

    您好、 Nivethethha、

         如需配置 AWR2944 HWA2.1、请参阅 AWR294x 技术参考手册(修订版 D)的第 28.5.1.6 高级 FFT 特性–FFT 拼接和 28.7.6 复杂乘法–FFT 拼接模式。 每个器件都具有不同版本的硬件加速器。 因此、在配置参数集时请使用适当的文档。

    此致、

    Samhitha