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.

IWR6843: Question about capon code in 3DPPL

Part Number: IWR6843

Hi,

In labs\common\src\dpu\capon3d\modules\DoA\CaponBF2D\src\RADARDEMO_aoaEst2DCaponBF_rnEstInv.c you will find below code.

My customer is asking why the code only uses the even chirp 1DFFT data, but not odd chirp info. Would you pls help?

void  RADARDEMO_aoaEst2DCaponBF_covInv()
{
...
/*Rn estimation */
 diagSum         =   0.f;
 for (antIdx = 0; antIdx < nRxAnt; antIdx++)
 {
  input1  = (cplx16_t *) &inputAntSamples[virtAntInd2Proc[antIdx] * nChirps];

  //i = antIdx case -- diagonal elements
  acc   = _ftof2(0.f, 0.f);
  acc1  = _ftof2(0.f, 0.f);
  acc2  = _ftof2(0.f, 0.f);
  acc3  = _ftof2(0.f, 0.f);
  for (chirpIdx = 0; chirpIdx < nChirps; chirpIdx += 8)
  {
   llinput1 = _amem8(&input1[chirpIdx]);
   itemp1  = _hill(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _cmpy(_hill(llinput1), itemp1);
   itemp1  = _loll(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
   acc   = _daddsp(acc, _dintsp(lltemp));
   llinput1 = _amem8(&input1[chirpIdx + 2]);
   itemp1  = _hill(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _cmpy(_hill(llinput1), itemp1);
   itemp1  = _loll(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
   acc2  = _daddsp(acc2, _dintsp(lltemp));
   
   llinput1 = _amem8(&input1[chirpIdx + 4]);
   itemp1  = _hill(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _cmpy(_hill(llinput1), itemp1);
   itemp1  = _loll(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
   acc1  = _daddsp(acc1, _dintsp(lltemp));
   llinput1 = _amem8(&input1[chirpIdx + 6]);
   itemp1  = _hill(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _cmpy(_hill(llinput1), itemp1);
   itemp1  = _loll(llinput1);
   itemp1  = _packhl2(itemp1, _ssub2(0, itemp1));
   lltemp  = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
   acc3  = _daddsp(acc3, _dintsp(lltemp));
   
  }

Thanks,

Chris

  • Hello

    Please note, that  code implementation support is outside the forum support.  Examples provided for mmWave devices are intended to demonstrate the device features.  User's are free to program their own configurations and algorithm implementation.

    For the question about usage specific chirp we would request  to the following:

    1.  Identify which virtual arrays  are being picked for processing.

    2. What kind of processing is being performed and what would be the relevant data set needed for that processing.

    Thank you,

    Vaibhav