您好!
下面是我的 HWA 乘法 DFT 模式配置:
我创建512个 adcsamples 数组、数组的每个元素都是1.it、就像[1+1J、1+1J、...1+1J ]。有512*4bytes.我的问题是:对于第一次迭代、和在 HWA 和 Python 之间是相同的、但对于第二次迭代或第三次迭代、求和是不同的。所以、我如何进行 在任何迭代中都是如此。
hwaParamCfg[arrayIdx].accelMode = HWA ACCELMODE_FFT;//do FFT
hwaParamCfg[arrayIdx].srcAcnt = numAdcSamples-1; //根据注释,这个值要填(采样点数- 1)、numAdcSamples = 512 */
hwaParamCfg[arrayIdx].source.srcAIdx = sizeof (uint32_t); //采样点的长度,使用复采样,固定为4字节*
hwaParamCfg[arrayIdx].srcBcnt = numAdcSamples - 1;//迭代次数,DFE公式中的K值*
hwaParamCfg[arrayIdx].srcBIdx = 0; /*每次迭代从sample0开始*
hwaParamCfg[arrayIdx].source.srcShift = 0;
hwaParamCfg[arrayIdx].srcCircShiftWrap=0;
hwaParamCfg[arrayIdx].source.srcRealComplex = HWA,高地址 samples_format_complex;// MSB为实部 ADC使用复采样,这里也将配置为复采样,ADC输入为一个32bit的数据,低地址/ LSB为虚部(Q)/(I)*
hwaParamCfg[arrayIdx].source.srcWidth = HWA 样片宽度16BIT; //复采样数据为16位*/
hwaParamCfg[arrayIdx].source.srcSign = Hwa_samples_signed; //复采样数据为有符号数*
hwaParamCfg[arrayIdx].srcConjugate = 0; //非共轭*
hwaParamCfg[arrayIdx].srcScale = 8; //对于16bit输入,在MSB添加srcScale bit的0,在LSB添加(8-srcScale)个0,组成一个24bit的数据*
hwaParamCfg[arrayIdx].source.bpmEnable = 0; // TI内置的BPM不适用,因此在这里失能
hwaParamCfg[arrayIdx].source.bpmPhase = 0; // TI内置的BPM不适用,因此在这里失能
hwaParamCfg[arrayIdx].dest.dstAcnt = 4095; //实际使用的range â fft长度- 1 */
hwaParamCfg[arrayIdx].dest.dstRealComplex = HWA 样片_format_complex; //使用复采样*
hwaParamCfg[arrayIdx].dest.dstWidth = HWA 样片宽度32位; //输入信号宽度-16位*/
hwaParamCfg[arrayIdx].dest.dstSign = HWA 样片_已签名; // FFT输出为有符号数*
hwaParamCfg[arrayIdx].dest.dstConjugate = 0; //无共轭*
hwaParamCfg[arrayIdx].dest.dstScale = 8; //对于16bit输出,删除LSB方向的srcScale位,同时删除MSB方向的(8-srcScale)位,组成一个16bit的数据*
hwaParamCfg[arrayIdx].dest.dstSkipInit = 0;
hwaParamCfg[arrayIdx].dest.dstAIdx = 8; /*实部虚部一共占据8个字节*;
hwaParamCfg[arrayIdx].dest.dstBIdx = 8; // dstBIdx设置参考radarCube *
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.fftSize = 0;
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.butflyScaling = 0x3ff; //LSB fftSize 位相关-针对所有 FFT 大小和数据大小重新访问此选项
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.interfZeroOutEn = 0; //禁用
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.windowEn = 0; //禁用
// hwaParamCfg[arrayIdx].accelModeArgs.fftMode.windowStart = 0;//开始窗口 RAM
// hwaParamCfg[arrayIdx].accelModeArgs.fftMode.winSymm = HWA FFT_WINDOW_MUST; //非对称-在演示中,我们是否使这个对称
// hwaParamCfg[arrayIdx].accelModeArgs.fftMode.winInterpolateMode = 0; //fftsize 小于1K
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.magLogEn = HWA FFT_MODE_Magnite_log2_DISABLED;//禁用
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.fftOutMode = HWA FFT_MODE_OUTPUT 和 STATS;//输出 FFT 样本
hwaParamCfg[arrayIdx].badMultiply.mode = Hwa_complex_乘 法_mode_slow_DFT;
hwaParamCfg[arrayIdx].clamMultiply.cmpMulArgs.dft.startFreq = 0;/* demo中该值可以设置为0或者其他值*
hwaParamCfg[arrayIdx].complexMultiply.cmpMulArgs.dft.freqIncrement = log2Approvx (numAdcSamples);/**/