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.

AWR1243BOOST: Ambiguity in Logic and code for Doppler compensation

Part Number: AWR1243BOOST
Other Parts Discussed in Thread: AWR1642,

Dear ,

Here i am work with AWR1243boost EVM + DCA1000 EVM for IQ post processing chain . I am able to configure the radar to operate in TDM MIMO configure but in doppler compensation i found one piece of code in forum members and other in SDK code for demo AWR1642 .................... both the logics are different and made we confused on which logic should i work 

SDK code of AWR1642 from line number 2638 it is given as Mmdemo_addDopplerCompensation ()

If (dopplerCompensationIdx >=numDopplerBins/2)

{

dopplerCompensationIdx -=(int32_t) numberDopplerBins;

}

dopplerCompensationIdx =dopplerCompensationIdx /2 ;

if (dopplerCompensationIdx < 0)

{

dopplerCompensationIdx +=(int32_t) numDopplerBins;

}

expDoppComp=azimuthModCoefs[dopplerCompensationIdx];

if (dopplerIdx & 0x1)

{

expDoppComp= _cmpyri(expDoppComp, *azimuthModCoefsHalfBin);

}

/* rotate symbols *

-----------------------------------------------------------------------------------------------------------------------------

The other logic which is mentioned by forum members is

if (current_obj.dopplerInd ~= dopplerFFTSize/2)

                   dopplerInd1 = current_obj.dopplerInd;

                   deltaPhi = 2*pi*(dopplerInd1-dopplerFFTSize/2)/(3*dopplerFFTSize);

                   corZz = exp(-1j*deltaPhi);

                   X(5:12) = X(5:12)*corZz;

                   X(9:12) = X(9:12)*corZz;

end

Please clear my doubt as soon as possible ......If possible Please provide us piece of matlab code where the doppler compensation is done .

Thanks in advance !

  • Hi,

    The C code provided in the mmWave SDK has been tested and works with the TI EVMs. You can trust that it is correct and use it.

    Let's open this question to the forum community to share any matlab code they may have.

    thank you

    Cesar

  • Hi Cesar,

    Here is the algorithm flow

    for i=1: Nframe

    for j=1:Txantennas

    1DFFT

    2DFFT

    end

    CFAR detection

    Detection matrix 

    for n=1:detection objects list

    doppler compensation for TX2 i.e., X(5:8)

    3DFFT

    end

    angle plot

    end

    Even i applied above logic as doppler compensation

    If (dopplerCompensationIdx >=numDopplerBins/2)

    {

    dopplerCompensationIdx -=(int32_t) numberDopplerBins;

    }

    dopplerCompensationIdx =dopplerCompensationIdx /2 ;

    if (dopplerCompensationIdx < 0)

    {

    dopplerCompensationIdx +=(int32_t) numDopplerBins;

    }

    expDoppComp=azimuthModCoefs[dopplerCompensationIdx];

    if (dopplerIdx & 0x1)

    {

    expDoppComp= _cmpyri(expDoppComp, *azimuthModCoefsHalfBin);

    }

    /* rotate symbols *

    Please correct if i am doing wrong and Can you elaborate what function or process will be done in rotate symbols

    When i am doing angle fft on 8 antenna peaks i am getting error .i.e., X=[P1,P2,P3,P4,P5,P6,P7,P8] combined angle fft result showing error 

    but when i perform angle fft on each individual chirp data angle estimation is correct i don't understand why this happening . 

     

  • Please give me some solution!

  • Hi,

    Please refer to the demo code provided in the mmWave SDK.

    thank you

    Cesar

  • Hi Cesar,

    I have seen the SDK code and verified the algorithm flow . Both are similar 

    for i=1: Nframe

    for j=1:Txantennas

    1DFFT

    2DFFT

    end

    CFAR detection

    Detection matrix 

    for n=1:detection objects list

    doppler compensation for TX2 i.e., X(5:8)

    3DFFT

    end

    angle plot

    end

     i applied below logic as doppler compensation

    If (dopplerCompensationIdx >=numDopplerBins/2)

    {

    dopplerCompensationIdx -=(int32_t) numberDopplerBins;

    }

    dopplerCompensationIdx =dopplerCompensationIdx /2 ;

    if (dopplerCompensationIdx < 0)

    {

    dopplerCompensationIdx +=(int32_t) numDopplerBins;

    }

    expDoppComp=azimuthModCoefs[dopplerCompensationIdx];

    if (mod((dopplerIdx/2 ),1)~=0)

    {

    expDoppComp= azimuthModCoefsHalfBin;

    }

    even processing the data as mentioned above i am not getting correct angle 

    When i am doing angle fft on 8 antenna peaks i am getting error .i.e., X=[P1,P2,P3,P4,P5,P6,P7,P8] combined angle fft result showing error

    and i suspect that in doppler compensation my implementation is wrong

    Please tell me that in --TDM MIMO (all three TX enabled)

    ar1.ChirpConfig(1, 1, 0, 0, 0, 0, 0, 1, 0, 0)
    ar1.ChirpConfig(2, 2, 0, 0, 0, 0, 0, 0, 0, 1)
    ar1.ChirpConfig(3, 3, 0, 0, 0, 0, 0, 0, 1, 0)

    Now when I go to configure my frame to use these three chirps, this would look like the following:

    ar1.FrameConfig(1, 3, 20, 128, 160, 0, 1)

    for above settings in adc.bin file the chirp data will be loaded as TX1, TX3,TX2,TX1, TX3,TX2,TX1, TX3,TX2,TX1, TX3,TX2,TX1, TX3,TX2,...............

    Please correct if im wrong ....

  • Hi,

    I recommend you try first 2 TX in the azimuth. Make sure that will work before you move on to 3 Tx.

    The following seems correct

    --TDM MIMO (all three TX enabled)
    ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0) //TX1 enabled
    ar1.ChirpConfig(1, 1, 0, 0, 0, 0, 0, 0, 0, 1) //TX3 enabled
    ar1.ChirpConfig(2, 2, 0, 0, 0, 0, 0, 0, 1, 0) //TX2 enabled

    Thank you

    Cesar

  • HI Cesar ,

    Thanks for replying .

    As you recommend me to work first with 2 TX in the azimuth antennas.

    Here is the case simulated one strong static target by using Test source in mmWave Studio 2.0.0.2 

    Test source settings : (static target )


    Object1                          X                       Y                              Z

    Position(m)                   4                       30                              0

    Velocity (m/s)               0.0                    0.0                             0.0 

    Signal Level(dBFS)    -2.50

    Rx Antenna Position                       X                        Z

    Rx1(lambda)               0.0                       0.0

    Rx2(lambda)               0.5                       0.0

    Rx3(lambda)               1.0                       0.0

    Rx4(lambda)               1.5                       0.0

    Chirp Config:(working with AWR1243boost . Now verifying with 2Tx azimuth antennas)

    --TDM MIMO (all three TX enabled)
    ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0) //TX1 enabled
    ar1.ChirpConfig(1, 1, 0, 0, 0, 0, 0, 0, 0, 1) //TX3 enabled

    Frame Config:

    ar1.FrameConfig(0,0,1, 256, 64, 40, 0, 1)

    ________________________________________________________________________________________

    For the above setting captured IQ raw data and processed with own post processing algorithm and passed as input for TI inbuilt matlab GUI (RadarStudio PostProcessing (4.75)).

    For the above settings results should be (TDM MIMO XY Results ) in GUI 

    X=-4 ,     Y=30 and Z =0

    But the results are 

    X=-1.141, Y=30.24 and Z=0 

    similar kind of results are observed for own algorithm.

    In this case, does range FFT produce expected output i.e strong energy at the expected bin [noise/clutter elsewhere, there may be some bins near 0 on either side that are stronger though, ignore them]?

    Ans : The range FFT produced expected output at 156 bin where the range will be 156 *range resolution = 30.4873 m

    Does doppler FFT output look good [should show only energy at 0th bin]?

    Ans: Yes , The energy is at 0th bin only .

    If these two are good, and if you only compute azimuth FFT of all 8 virtual azimuth antennas for this scene and not do any doppler compensation [bypass completely your doppler code], do you see the expected angle?

    Ans: By passed complete doppler compensation code of mine and computed azimuth FFT of all 8 virtual azimuth antennas for this scene. But also the results are wrong.

    Now tell me what to do .

    Please guide me with your knowledge ........ I know you are not allowed to answer straightly regarding problem but i hope you can me that what is Correct and Wrong for guiding to some extent. 

    Please find the below attachment of adc_data.bin and adc_data_LogFile.txt2021.Results.rar

    Please validate with your TI GUI and tell Why TI GUI showing wrong results 

    Please guide me with solution as you always do .

    But please do reply as soon as possible because i was doing this for a long time and i have very short time to work on .I hope you understood .

    Thanks for understanding .

     

  • Hi,

    The TestSource does not support MIMO.

    Please use it with single TX.

    Since there are several threads that you have open I will close this one.

    thank you

    Cesar