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.

CCS/AWR1843BOOST: The computation of the detmatrix and CFAR thresholdScale in the SDK3.2

Part Number: AWR1843BOOST

Tool/software: Code Composer Studio

Hi,

The DSP mode in the SDK3.2 computes the detmatrix as follows in the function DPU_DopplerProcDSP_log2AbsAccum(3Tx antennas,4Rx Antennas for example):

static inline void DPU_DopplerProcDSP_log2AbsAccum
(
    DPU_DopplerProcDSP_Obj *obj,
    uint16_t               rxAntIdx,
    uint16_t               txAntIdx,
    uint16_t               rangeIdx,
    uint32_t               *waitingTime,
    uint16_t               fftOutIndx
)
{
    volatile uint32_t startTimeWait;
    uint32_t idx;
    uint16_t *log2AbsBuf = (uint16_t *)obj->cfg.hwRes.windowingLog2AbsBuf;
    mmwavelib_log2Abs32(
                (int32_t *) &obj->cfg.hwRes.fftOutBuf[fftOutIndx],
                log2AbsBuf,
                obj->cfg.staticCfg.numDopplerBins);

    /* Check if this is the first virtual antenna for this range bin*/
    if ((rxAntIdx == 0) && (txAntIdx == 0))
    {
        /*This is the first virtual antenna. Starting a new sum. */
        if (rangeIdx > 0)
        {
            /* check if previous  sumAbsBuf has been transferred */
            startTimeWait = Cycleprofiler_getTimeStamp();
            DPU_DopplerProcDSP_waitTransDetMatrix (obj);
            waitingTime += Cycleprofiler_getTimeStamp() - startTimeWait;
        }
        /* Start new sum*/
        for (idx = 0; idx < obj->cfg.staticCfg.numDopplerBins; idx++)
        {
            obj->cfg.hwRes.sumAbsBuf[idx] = log2AbsBuf[idx] >> obj->log2VirtAnt;
        }
    }
    else
    {
        /*Not the first virtual antenna. Accumulate.*/
        mmwavelib_accum16shift(log2AbsBuf,
                               obj->cfg.hwRes.sumAbsBuf,
                               obj->log2VirtAnt,                               
                               obj->cfg.staticCfg.numDopplerBins);
    }
}

In this function,the function mmwavelib_accum16shift is called.The element in the detmatrix is equal to sum(abs(xi)>>4),i=0:11.

The threshold TdB in  the CFAR step is derived as belows:

Because in the function MmwDemo_CLICfarCfg,MMWDEMO_CFAR_THRESHOLD_ENCODING_FACTOR=100.0, the configuration parameter  argv[8] should be  32/100*TdB.That is to say,if the threshold TdB=15, argv[8]=32*15/100=4.8.

I don't know whether my understanding is right or not.

Regards,

Rata