HI,
there is my configuration of HWA MULTIPLICATION DFT MODE:
I create 512 adcsamples array,every element of the array is 1.it is like that [1+1j,1+1j,...1+1j ].there are 512*4bytes.My question is:for the first iteration,the sum is the same between HWA and PYTHON,but for the second or the third and so on,the sum is defferent.So,How can I do to make it the same at any iterations.
hwaParamCfg[arrayIdx].accelMode = HWA_ACCELMODE_FFT; //do FFT
hwaParamCfg[arrayIdx].source.srcAcnt = numAdcSamples-1; /* 根据注释,这个值要填(采样点数 - 1),numAdcSamples = 512 */
hwaParamCfg[arrayIdx].source.srcAIdx = sizeof(uint32_t); /* 采样点的长度,使用复采样,固定为 4 bytes */
hwaParamCfg[arrayIdx].source.srcBcnt = numAdcSamples - 1; /* 迭代次数,DFE公式中的K值 */
hwaParamCfg[arrayIdx].source.srcBIdx = 0; /*每次迭代从sample0开始*/
hwaParamCfg[arrayIdx].source.srcShift = 0;
hwaParamCfg[arrayIdx].source.srcCircShiftWrap = 0;
hwaParamCfg[arrayIdx].source.srcRealComplex = HWA_SAMPLES_FORMAT_COMPLEX; /* ADC使用复采样,这里也将配置为复采样,ADC输入为一个32bit的数据,低地址/LSB为虚部(Q),高地址/MSB为实部(I) */
hwaParamCfg[arrayIdx].source.srcWidth = HWA_SAMPLES_WIDTH_16BIT; /* 复采样数据为 16-bit */
hwaParamCfg[arrayIdx].source.srcSign = HWA_SAMPLES_SIGNED; /* 复采样数据为有符号数 */
hwaParamCfg[arrayIdx].source.srcConjugate = 0; /* non conjugate */
hwaParamCfg[arrayIdx].source.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_SAMPLES_FORMAT_COMPLEX; /* 使用复采样 */
hwaParamCfg[arrayIdx].dest.dstWidth = HWA_SAMPLES_WIDTH_32BIT; /* 输入信号宽度-16bit */
hwaParamCfg[arrayIdx].dest.dstSign = HWA_SAMPLES_SIGNED; /* FFT输出为有符号数 */
hwaParamCfg[arrayIdx].dest.dstConjugate = 0; /* no conjugate */
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.butterflyScaling = 0x3ff; //LSB fftSize bits are relevant - revisit this for all FFT size and data size
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.interfZeroOutEn = 0; //disabled
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.windowEn = 0; //disabled
// hwaParamCfg[arrayIdx].accelModeArgs.fftMode.windowStart = 0; //start of window RAM
// hwaParamCfg[arrayIdx].accelModeArgs.fftMode.winSymm = HWA_FFT_WINDOW_SYMMETRIC; //non-symmetric - in demo do we make this symmetric
// hwaParamCfg[arrayIdx].accelModeArgs.fftMode.winInterpolateMode = 0; //fftsize is less than 1K
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.magLogEn = HWA_FFT_MODE_MAGNITUDE_LOG2_DISABLED; //disabled
hwaParamCfg[arrayIdx].accelModeArgs.fftMode.fftOutMode = HWA_FFT_MODE_OUTPUT_SUM_STATS;// output FFT samples
hwaParamCfg[arrayIdx].complexMultiply.mode = HWA_COMPLEX_MULTIPLY_MODE_SLOW_DFT;
hwaParamCfg[arrayIdx].complexMultiply.cmpMulArgs.dft.startFreq = 0;/*demo中该值可以设置为0或者其他值*/
hwaParamCfg[arrayIdx].complexMultiply.cmpMulArgs.dft.freqIncrement = log2Approx(numAdcSamples);/**/