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.

AWR1642BOOST: [mmWave Demo / SDK 3.2] Window functions

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642

Hi together,

I need some clarification regarding windowing in the mmWave Demo v. 3.2.

According to the RangeProcDSP Doxygen, digitized IF raw data is 1D-Range-FFT processed without mentioning any windowing. Then, according to the Doppler DPU Doxygen, "input samples are multiplied by a window function" before performing the 2D-Doppler-FFT. Furthermore, it says that the window size and coefficients are defined in DPU_DopplerProcHWA_HwaCfg_t. However in the program code, there is no such struct instantiated.

Even more confusing, the object_detection_data_scaling.xlsx excel sheet in \ti\mmwave_sdk_03_02_00_04\packages\ti\datapath\dpc\objectdetection\common\docs states that data is tapered with a Blackman window before the 1D-FFT and Hann windowed before the 2D-FFT.

So what I want to know: Is data anywhere in the Demo processing chain windowed? If yes, which window is used? And where is this action to be found? As the Doppler DPU Doxygen says, "Window coefficients must be provided by application".

Best regards

  • Hi,

    Regarding FFT processing and Windowing, the first thing to consider is if the FFT processing occurs on the DSP or Hardware Accelerator.

    If the FFT processing occurs on the DSP, the windowing function is implemented in software.

    If the FFT processing occurs on the HWA, the windowing function occurs in the HWA.

    In mmWave SDK 3.2 demo the windowing is configured as part of the RangeProcHWA

    file:///C:/ti/mmwave_sdk_03_02_00_04/packages/ti/datapath/dpu/rangeproc/docs/doxygen/html/dpu_rangehwa.html

    Thank you

    Cesar

  • Hi Cesar,

    as you can see, I have a AWR1642BOOST. As far as I'm aware, this part does not have an HWA, correct?

    So, where in the software can I find the window function used? My assumption is that no windowing at all happens, i.e., FFT processing is done with a rectangular window.

    EDIT: I believe to have found the corresponding part in the code. See this snapshot:

    So, please confirm: Is the range FFT tapered with a Blackman and the Doppler FFT tapered with a Hanning window?

  • Hi,

    Yes you are correct, on AWR1642 the processing is performed on DSP. So you need to use the dpu_rangedsp.

    As you can see in the documentation windowing is included as part of the dpu.

    file:///C:/ti/mmwave_sdk_03_02_00_04/packages/ti/datapath/dpu/rangeproc/docs/doxygen/html/dpu_rangedsp.html

    If we look at the source code

    C:\ti\mmwave_sdk_03_02_00_04\packages\ti\datapath\dpu\rangeproc\src\rangeprocdsp.c

    Here is where the windowing function is called before the FFT processing.

               /*********************************
                 * Data Processing
                 *********************************/

                /* Only support even length of windowing */
                mmwavelib_windowing16x16_evenlen(
                        (int16_t *) fftSrcAddr,
                        (int16_t *) rangeProcObj->window,
                        DPParams->numAdcSamples);

                /* Zero out padding region */
                memset((void *)&rangeProcObj->adcDataIn[pingPongId(rxChanId) * DPParams->numRangeBins + DPParams->numAdcSamples],
                    0 , (DPParams->numRangeBins - DPParams->numAdcSamples) * sizeof(cmplx16ImRe_t));

                /* 16bit FFT in imre format */
                DSP_fft16x16_imre(
                        (int16_t *) rangeProcObj->twiddle16x16,
                        DPParams->numRangeBins,
                        (int16_t *)fftSrcAddr,
                        (int16_t *) fftDestAddr);

            }

    The windowing function is defined in the mmwave lib

    C:\ti\mmwave_sdk_03_02_00_04\packages\ti\alg\mmwavelib\src\fft\mmwavelib_windowing.c

    Thank you

    Cesar

  • Splendid!