https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1441550/awr2944-hwa-fft
器件型号:AWR2944工具与软件:
您好:
使用2944LC HWA 加速器计算64点 FFT、结果与 MATLAB 不同。 结果如下所示。 结果是对称的。 FFT 参数集配置如下。 设置是否有任何问题?
谢谢你!!
{{
paramsetIdx++;
hwParamsetIdx++;
hwaParamCfg[paramsetIdx].triggerMode = HWA_TRIG_MODE_IMmediate;
hwaParamCfg[paramsetIdx].accelMode = HWA_ACCELMODE_FFT;
/* PREPROC 配置*/
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.preProcCfg.dcEstResetMode = HWA_DCEST_INTERFSUM_RESET_MODE_NOUPDATE;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.preProcCfg.dcSubEnable = HWA_FEATURE_BIT_DISABLE;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.preProcCfg.complexMultiply.cmultMode = HWA 复数乘法_mode_disable;
/* ACCELMODE 配置(FFT)*/
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.fftEn = HWA_FEATURE_BIT_ENABLE;
if (obj->numDopplerBins % 3 == 0){
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.fftSize = mathUtils_ceLog2 (obj->numDopplerBins/3);
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.fftSize3xEn = HWA_FEATURE_BIT_ENABLE;
}
否则{
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.fftSize = mathUtils_ceLog2 (obj->numDopplerBins);
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.fftSize3xEn = HWA_FEATURE_BIT_DISABLE;
}
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.butterflyScaling = 0;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.windowEn = HWA_FEATURE_BIT_ENABLE;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.windowStart = cfg->hwRes.hwaCfg.winRamOffset;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.winSymm = cfg->hwRes.hwaCfg.winSym;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.postProcCfg.magLogEn = HWA_FFT_MODE_MAGNITUDE_LOG2_DISABLED;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.postProcCfg.fftOutMode = HWA_FFT_MODE_OUTPUT_DEFAULT;
hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.preProcCfg.complexMultiply.cmultMode = HWA 复数乘法_mode_disable;
/*源配置*/
hwaParamCfg[paramsetIdx].source.srcAddr = DPU_DOPPLERHWADDMA_ADDR_DOPPLERFFT_PING_IN;
hwaParamCfg[paramsetIdx].source.srcAcnt = cfg->staticCfg.numChirps - 1;/*这是样本- 1 */
hwaParamCfg[paramsetIdx].source.srcAIdx = cfg->staticCfg.numRxtames * obj->dopplerDemodCfg.dopplerIOCfg.input.bytesPerSample;
hwaParamCfg[paramsetIdx].source.srcBcnt = cfg->staticCfg.numRxtames - 1;
hwaParamCfg[paramsetIdx].source.srcBIdx = obj->dopplerDemodCfg.dopplerIOCfg.input.bytesPerSample;
hwaParamCfg[paramsetIdx].source.srcRealComplex = obj->dopplerDemodCfg.dopplerIOCfg.input.isReal;
if (obj->dopplerDemodCfg.dopplerIOCfg.input.bytesPerSample == 2 ||
(obj->dopplerDemodCfg.dopplerIOCfg.input.bytesPerSample == 4 &&
(!obj->dopplerDemodCfg.dopplerIOCfg.input.isReal))){
hwaParamCfg[paramsetIdx].source.srcWidth = HWA_SAMPLE_WIDTH_16BIT;
}
否则{
hwaParamCfg[paramsetIdx].source.srcWidth = HWA_SAMPLE_WIDTH_32位;
}
hwaParamCfg[paramsetIdx].source.srcSign = obj->dopplerDemodCfg.dopplerIOCfg.input.isSigned;
hwaParamCfg[paramsetIdx].source.srcConjugate = 0;
hwaParamCfg[paramsetIdx].source.srcScale = 8;
/*目标配置*/
hwaParamCfg[paramsetIdx].dstAddr = DPU_DOPPLERHWADDMA_ADDR_DOPPLERFFT_PING_OUT;
hwaParamCfg[paramsetIdx].dstAcnt = obj->numDopplerBins - 1;
hwaParamCfg[paramsetIdx].destAIdx = cfg->staticCfg.numRxtames * obj->dopplerDemodCfg.dopplerIOCfg.output.bytesPerSample;
hwaParamCfg[paramsetIdx].dest.dstBITx = obj->dopplerDemodCfg.dopplerIOCfg.output.bytesPerSample;
hwaParamCfg[paramsetIdx].dstRealComplex = obj->dopplerDemodCfg.dopplerIOCfg.output.isreal;
if (obj->dopplerDemodCfg.dopplerIOCfg.output.bytesPerSample == 2 ||
(obj->dopplerDemodCfg.dopplerIOCfg.output.bytesPerSample == 4 &&
(!obj->dopplerDemodCfg.dopplerIOCfg.output.isreal))){
hwaParamCfg[paramsetIdx].dstWidth = HWA_SAMPLE_WIDTH_16BIT;
}
否则{
hwaParamCfg[paramsetIdx].dstWidth = HWA_SAMPLE_WIDTH_32位;
}
hwaParamCfg[paramsetIdx].dstSign = obj->dopplerDemodCfg.dopplerIOCfg.output.isSigned;
hwaParamCfg[paramsetIdx].dest.dstConjugate = hwa_feature_bit_disable;
hwaParamCfg[paramsetIdx].dest.dstScale = 0;
hwaParamCfg[paramsetIdx].destSkipInit = 0;
errCode = HWA_configParamSet (obj->hwaHandle、
hwParamsetIdx、
&hwaParamCfg[paramsetIdx]、NULL);
if (错误代码!= 0)
{
转至退出;
}
}