xWRL6432 MMWAVE-L-SDK  05.04.00.01
doaproc.h
Go to the documentation of this file.
1 
40 /**************************************************************************
41  *************************** Include Files ********************************
42  **************************************************************************/
43 #ifndef DOAPROC_HWA_H
44 #define DOAPROC_HWA_H
45 
46 /* Standard Include Files. */
47 #include <stdint.h>
48 #include <stdlib.h>
49 #include <stddef.h>
50 #include <string.h>
51 #include <stdio.h>
52 #include <math.h>
53 
54 /* mmWave SDK Driver/Common Include Files */
55 #include <drivers/hwa.h>
56 #include <common/syscommon.h>
57 
58 /* DPIF Components Include Files */
61 
62 /* mmWave SDK Data Path Include Files */
63 #include <datapath/dpif/dp_error.h>
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
78 #define DPU_DOAPROC_EINVAL (DP_ERRNO_DOA_PROC_BASE-1)
79 
83 #define DPU_DOAPROC_ENOMEM (DP_ERRNO_DOA_PROC_BASE-2)
84 
88 #define DPU_DOAPROC_EINPROGRESS (DP_ERRNO_DOA_PROC_BASE-3)
89 
93 #define DPU_DOAPROC_EHWARES (DP_ERRNO_DOA_PROC_BASE-4)
94 
98 #define DPU_DOAPROC_ESEMA (DP_ERRNO_DOA_PROC_BASE-5)
99 
103 #define DPU_DOAPROC_ESEMASTATUS (DP_ERRNO_DOA_PROC_BASE-6)
104 
108 #define DPU_DOAPROC_EEXCEEDHWAMEM (DP_ERRNO_DOA_PROC_BASE-7)
109 
113 #define DPU_DOAPROC_ECUBEFORMAT (DP_ERRNO_DOA_PROC_BASE-8)
114 
118 #define DPU_DOAPROC_EDETMFORMAT (DP_ERRNO_DOA_PROC_BASE-9)
119 
123 #define DPU_DOAPROC_EDETMSIZE (DP_ERRNO_DOA_PROC_BASE-10)
124 
128 #define DPU_DOAPROC_EWINDSIZE (DP_ERRNO_DOA_PROC_BASE-11)
129 
133 #define DPU_DOAPROC_E_NOTSUPPORTED_ANGLE_DIM_ONE_AND_CPU_LOOP_CTRL (DP_ERRNO_DOA_PROC_BASE-12)
134 
138 #define DPU_DOAPROC_E_EXCEEDED_MAX_NUM_DOPPLER_BINS (DP_ERRNO_DOA_PROC_BASE-13)
139 
147 #define DPU_DOAPROC_MAX_NUM_HWA_PARAMSET 11
148 
152 #define DPU_DOAPROC_NUM_HWA_MEMBANKS 4
153 
157 #define DPU_DOAPROC_FIRST_SCALING_DISABLED ((uint8_t)0U)
158 
162 #define DPU_DOAPROC_FIRST_SCALING_ENABLED ((uint8_t)1U)
163 
167 #define DPU_DOAPROC_RANGE_LOOP_HWA_CONTROL (0)
168 
171 #define DPU_DOAPROC_RANGE_LOOP_CPU_CONTROL (1)
172 
173 
183 typedef struct DPU_DoaProc_RadarCubeChunkEdmaCfg_t
184 {
186  uint32_t srcAddress;
187 
189  uint32_t dstAddress;
190 
192  uint32_t Bcnt_Acnt;
194 
195 typedef struct DPU_DoaProc_RadarCubeSource_t
196 {
199 
203 typedef void* DPU_DoaProc_Handle;
204 
214 typedef struct DPU_DoaProc_InitCfg_t
215 {
217 
219 
231 typedef struct DPU_DoaProc_HWA_Doppler_Fft_Cfg_t
232 {
234  uint16_t srcBcnt;
235 
237  int16_t srcAddrOffset;
238 
240  int16_t srcBidx;
241 
243  int16_t scale;
244 
246  int16_t dstAddrOffset;
247 
249  int16_t dstBidx;
251 
256 #define DPU_DOA_PROC_MAX_NUM_DOP_FFFT_PARAMS 5
257 
262 #define DPU_DOA_PROC_MAX_2D_ANT_ARRAY_ELEMENTS 16
263 
268 typedef struct DPU_DoaProc_HWA_Option_Cfg_t
269 {
273 
284 typedef struct DPU_DoaProc_HwaCfg_t
285 {
289  uint8_t winSym;
290 
300  uint32_t windowSize;
301 
303  int32_t *window;
304 
306  uint32_t winRamOffset;
307 
318 
325  uint8_t numParamSets;
326 
333 
336  uint32_t hwaMemInpAddr;
337 
341 
344  uint8_t dmaTrigSrcChan;
346 
353 typedef volatile struct DPU_DoaProc_HwaMaxOutput_t
354 {
355  uint32_t maxInd;
356  uint32_t peak;
358 
359 
370 typedef struct DPU_DoaProc_EdmaCfg_t
371 {
374 
376  uint32_t edmaInstanceId;
377 
380 
383 
390 
401 
403  uint32_t dummySrc;
405  uint32_t dummyDst;
406 
408 
419 typedef struct DPU_DoaProc_HW_Resources_t
420 {
423 
426 
429 
432 
435 
438 
441 
443  cmplx32ImRe_t *interLoopDataBuffer;
445 
453 typedef struct DPU_DoaProc_compRxChannelBiasCfg_t
454 {
455 
457  float rangeBias;
458 
462  cmplx32ReIm_t rxChPhaseComp[SYS_COMMON_NUM_TX_ANTENNAS * SYS_COMMON_NUM_RX_CHANNEL];
463 
465 
473 typedef struct DPU_DoaProc_compRxChannelBiasFloatCfg_t
474 {
475 
477  float rangeBias;
478 
482  float rxChPhaseComp[2 * SYS_COMMON_NUM_TX_ANTENNAS * SYS_COMMON_NUM_RX_CHANNEL];
483 
485 
486 
497 typedef struct DPU_DoaProc_StaticConfig_t
498 {
500  uint8_t numTxAntennas;
501 
503  uint8_t numRxAntennas;
504 
507 
509  uint16_t numRangeBins;
510 
513 
515  uint16_t numDopplerBins;
516 
518  uint16_t azimuthFftSize;
519 
522 
525 
528 
529 
532 
535 
537  uint8_t angleDimension;
538 
541 
544 
547 
550 
553 
556 
559 
561  uint16_t numAntRow;
562 
564  uint16_t numAntCol;
565 
567 
578 typedef struct DPU_DoaProc_Config_t
579 {
582 
585 
587 
588 
598 typedef struct DPU_DoaProc_OutParams_t
599 {
603 
604 
607  DPU_DoaProc_RadarCubeSource *radarCubeSrc,
608  DPIF_DetMatrix *detMatrix,
609  DPU_DoaProc_OutParams *outParams);
612 
613 #if 0
614 int32_t DPU_DoaProcHWA_control
615 (
616  DPU_AoAProcHWA_Handle handle,
617  DPU_AoAProcHWA_Cmd cmd,
618  void *arg,
619  uint32_t argSize
620 );
621 #endif
622 
623 
624 #ifdef __cplusplus
625 }
626 #endif
627 
628 #endif
DPU_DoaProc_HwaCfg::window
int32_t * window
Pointer to Doppler FFT window coefficients.
Definition: doaproc.h:303
DPU_DoaProc_init
DPU_DoaProc_Handle DPU_DoaProc_init(DPU_DoaProc_InitParams *initCfg, int32_t *errCode)
DPU_DoaProc_HwaMaxOutput::peak
uint32_t peak
Maximum peak value.
Definition: doaproc.h:356
DPU_DoaProc_StaticConfig::numRxAntennas
uint8_t numRxAntennas
Number of receive antennas.
Definition: doaproc.h:503
DPIF_DetMatrix
Detection matrix buffer interface.
Definition: dpif_detmatrix.h:81
DPU_DoaProc_HwaCfg::dmaTrigSrcChan
uint8_t dmaTrigSrcChan
HWA param set dma trigger source channel.
Definition: doaproc.h:344
DPU_DoaProc_EdmaCfg::edmaInstanceId
uint32_t edmaInstanceId
EDMA Instance id.
Definition: doaproc.h:376
DPU_DoaProc_EdmaCfg::dopIndMatOut
DPEDMA_ChanCfg dopIndMatOut
EDMA configuration for data output from HWA - Doppler Index matrix.
Definition: doaproc.h:387
DPU_DoaProc_EdmaCfg::edmaIn
DPU_DoaProc_Edma edmaIn
EDMA configuration for Input data (Radar cube -> HWA memory).
Definition: doaproc.h:379
DPU_DoaProc_EdmaCfg::edmaHandle
EDMA_Handle edmaHandle
EDMA driver handle.
Definition: doaproc.h:373
dpif_detmatrix.h
Defines the detection matrix buffer interface.
DPU_DoaProc_compRxChannelBiasFloatCfg::rangeBias
float rangeBias
Compensation for range estimation bias in meters.
Definition: doaproc.h:477
DPU_DoaProc_RadarCubeChunkEdmaCfg::srcAddress
uint32_t srcAddress
Address in L3 of the chunk of data in radar cube matrix to be copied to HWA
Definition: doaproc.h:186
Edma_IntrObject
EDMA interrupt configuration object. The object is passed to the EDMA_registerIntr() function....
Definition: edma/v0/edma.h:451
DPU_DoaProc_HW_Resources::hwaCfg
DPU_DoaProc_HwaCfg hwaCfg
HWA configuration.
Definition: doaproc.h:425
DPU_AoAProcHWA_Handle
void * DPU_AoAProcHWA_Handle
Handle for AoA Processing DPU.
Definition: aoaprochwa.h:182
DPU_DoaProc_EdmaCfg::intrObj
Edma_IntrObject * intrObj
EDMA interrupt object.
Definition: doaproc.h:400
DPU_DoaProc_StaticConfig::numDopplerChirps
uint16_t numDopplerChirps
Number of Doppler chirps.
Definition: doaproc.h:512
DPU_DoaProc_Handle
void * DPU_DoaProc_Handle
Handle for Doppler Processing DPU.
Definition: doaproc.h:203
DPU_DoaProc_EdmaCfg::edmaHotSig
DPEDMA_ChanCfg edmaHotSig
EDMA configuration for hot signature.
Definition: doaproc.h:382
DPU_DoaProc_Config::hwRes
DPU_DoaProc_HW_Resources hwRes
HW resources.
Definition: doaproc.h:581
DPU_DoaProc_StaticConfig::selectCoherentPeakInDopplerDim
uint8_t selectCoherentPeakInDopplerDim
true - select the coherent peak in Doppler, false - non-coherently combine accross Doppler
Definition: doaproc.h:534
DPU_DoaProc_HWA_Doppler_Fft_Cfg::dstAddrOffset
int16_t dstAddrOffset
column/row offset in the destination matrix dstAddrOffset = colOffset + rowOffset*numColumns
Definition: doaproc.h:246
DPU_DoaProc_StaticConfig::doaRangeLoopType
uint16_t doaRangeLoopType
Range loop type: 0 - HWA internal loop, 1- Loop controlled by CPU.
Definition: doaproc.h:552
dp_error.h
Base error codes for the data path Modules.
DPU_DoaProc_StaticConfig::isRxChGainPhaseCompensationEnabled
bool isRxChGainPhaseCompensationEnabled
Range Bias and rx channel gain/phase compensation enable flag.
Definition: doaproc.h:546
DPU_DoaProc_HW_Resources::radarCubeMinMot
DPIF_RadarCube radarCubeMinMot
Radar cube data interface for Minor Motion Detection.
Definition: doaproc.h:431
DPU_DoaProc_HwaCfg::doaRngGateCfg
DPU_DoaProc_HWA_Option_Cfg doaRngGateCfg
HWA Doppler FFT Parmas set configuration (performing Doppler FFT and antenna mapping)
Definition: doaproc.h:340
DPU_DoaProc_StaticConfig::enableMajorMotion
bool enableMajorMotion
Major motion detection enable flag.
Definition: doaproc.h:555
DPU_DoaProc_EdmaCfg::dummyDst
uint32_t dummyDst
Dummy location
Definition: doaproc.h:405
DPU_DoaProc_HWA_Option_Cfg::numDopFftParams
uint8_t numDopFftParams
Definition: doaproc.h:270
DPU_DoaProc_compRxChannelBiasFloatCfg
Range Bias and rx channel gain/phase compensation configuration.
Definition: doaproc.h:474
DPU_DoaProc_HW_Resources
Doppler DPU HW configuration parameters.
Definition: doaproc.h:420
DPU_DoaProc_Edma
doaProc DPU EDMA configuration parameters
Definition: doaproccommon.h:70
DPU_DoaProc_HW_Resources::radarCube
DPIF_RadarCube radarCube
Radar Cube.
Definition: doaproc.h:428
DPU_DoaProc_StaticConfig::enableMinorMotion
bool enableMinorMotion
Minor motion detection enable flag.
Definition: doaproc.h:558
DPU_DoaProc_StaticConfig::isDetMatrixLogScale
bool isDetMatrixLogScale
Detection matrix format 0 - Linear 32-bit integer, 1 - 16-bit log2 magnitude in Q11 format.
Definition: doaproc.h:540
DPU_DoaProc_StaticConfig::numRangeBins
uint16_t numRangeBins
Number of range bins.
Definition: doaproc.h:509
DPU_DoaProc_EdmaCfg::edmaInterLoopHotSig
DPEDMA_ChanCfg edmaInterLoopHotSig
EDMA configuration for hot signature.
Definition: doaproc.h:396
DPU_DoaProc_StaticConfig::numDopplerBins
uint16_t numDopplerBins
Number of Doppler bins.
Definition: doaproc.h:515
DPU_DoaProc_StaticConfig
Doppler DPU static configuration parameters.
Definition: doaproc.h:498
DPU_DoaProc_EdmaCfg::elevIndMatOut
DPEDMA_ChanCfg elevIndMatOut
EDMA configuration for data output from HWA - Elevation index matrix.
Definition: doaproc.h:389
DPU_DoaProc_StaticConfig::elevationFftSize
uint16_t elevationFftSize
elevation FFT size
Definition: doaproc.h:521
DPU_DoaProc_StaticConfig::angleDimension
uint8_t angleDimension
1 - 1D: 6x1 azimuth antenna array 2 - 2D: one lower row: 4 antennas, upper row 2 antennas
Definition: doaproc.h:537
DPU_DoaProc_StaticConfig::numAntRow
uint16_t numAntRow
Number of virtual antenna rows.
Definition: doaproc.h:561
DPU_DoaProc_StaticConfig::numAntCol
uint16_t numAntCol
Number of virtual antenna columns.
Definition: doaproc.h:564
DPU_DoaProc_HWA_Doppler_Fft_Cfg::scale
int16_t scale
Scale in pre compensation.
Definition: doaproc.h:243
DPU_DoaProc_InitParams::hwaHandle
HWA_Handle hwaHandle
Definition: doaproc.h:216
DPU_DoaProc_HWA_Option_Cfg
Definition: doaproc.h:269
DPU_DoaProc_HwaCfg::firstStageScaling
uint8_t firstStageScaling
Indicates if HWA should enable butterfly scaling (divide by 2) of the first radix-2 stage....
Definition: doaproc.h:317
DPU_DoaProc_HwaCfg::paramSetStartIdx
uint32_t paramSetStartIdx
HWA paramset Start index. Application has to ensure that paramSetStartIdx is such that [paramSetSt...
Definition: doaproc.h:332
DPU_DoaProc_HW_Resources::edmaCfg
DPU_DoaProc_EdmaCfg edmaCfg
EDMA configuration.
Definition: doaproc.h:422
DPU_DoaProc_HwaCfg::winSym
uint8_t winSym
Indicates if HWA window is symmetric or non-symmetric. Use HWA macro definitions for symmetric/non-sy...
Definition: doaproc.h:289
DPU_DoaProc_StaticConfig::numTxAntennas
uint8_t numTxAntennas
Number of transmit antennas.
Definition: doaproc.h:500
DPU_DoaProc_HW_Resources::interLoopDataBuffer
cmplx32ImRe_t * interLoopDataBuffer
For external range loop (CPU contolled) interloop buffer for Azimuth FFT output.
Definition: doaproc.h:443
DPU_DoaProc_HwaCfg::numParamSets
uint8_t numParamSets
Number of HWA paramsets reserved for the Doppler DPU. The number of HWA paramsets required by this DP...
Definition: doaproc.h:325
DPU_DoaProc_HW_Resources::dopplerIndexMatrix
DPIF_DetMatrix dopplerIndexMatrix
Doppler index matrix.
Definition: doaproc.h:437
DPU_DoaProc_RadarCubeChunkEdmaCfg
Source and destination addresses for EDMA input configuration.
Definition: doaproc.h:184
DPU_DoaProc_HwaCfg
dopplerProc DPU HWA configuration parameters
Definition: doaproc.h:285
doaproccommon.h
Implements Common definition across DoA Proc DPU.
DPU_DoaProc_StaticConfig::numVirtualAntennas
uint8_t numVirtualAntennas
Number of virtual antennas.
Definition: doaproc.h:506
DPU_DoaProc_HwaCfg::winRamOffset
uint32_t winRamOffset
HWA window RAM offset in number of samples.
Definition: doaproc.h:306
DPU_DoaProc_StaticConfig::log2NumDopplerBins
uint8_t log2NumDopplerBins
Log2 of number of Doppler bins.
Definition: doaproc.h:531
DPU_DoaProc_HwaMaxOutput
Maximum peaks filled by HWA statistics block.
Definition: doaproc.h:354
DPU_DoaProc_RadarCubeSource
Definition: doaproc.h:196
DPU_DoaProc_InitParams
dopplerProc DPU initial configuration parameters
Definition: doaproc.h:215
DPIF_RadarCube
Radar Cube Buffer Interface.
Definition: dpif_radarcube.h:105
DPU_DoaProc_EdmaCfg::edmaInterLoopChainBack
DPEDMA_ChanCfg edmaInterLoopChainBack
EDMA configuration for loop chain back.
Definition: doaproc.h:398
DPU_DoaProc_EdmaCfg::edmaInterLoopIn
DPEDMA_ChanCfg edmaInterLoopIn
EDMA configuration for data in.
Definition: doaproc.h:394
DPU_DoaProc_HwaCfg::hwaMemInpAddr
uint32_t hwaMemInpAddr
HWA input memory bank address.
Definition: doaproc.h:336
hwa.h
DPU_DoaProc_Stats
doaProc DPU statistics
Definition: doaproccommon.h:88
dpif_radarcube.h
Defines the data path radar cube data interface.
DPU_DoaProc_HWA_Doppler_Fft_Cfg
Configuration parameters for each HWA param set performing the Doppler FFTs and mappng output into ro...
Definition: doaproc.h:232
DPU_DoaProc_deinit
int32_t DPU_DoaProc_deinit(DPU_DoaProc_Handle handle)
DPU_DoaProc_process
int32_t DPU_DoaProc_process(DPU_DoaProc_Handle handle, DPU_DoaProc_RadarCubeSource *radarCubeSrc, DPIF_DetMatrix *detMatrix, DPU_DoaProc_OutParams *outParams)
DPU_DoaProc_compRxChannelBiasCfg
Range Bias and rx channel gain/phase compensation configuration.
Definition: doaproc.h:454
DPU_DoaProc_StaticConfig::numMinorMotionChirpsPerFrame
uint16_t numMinorMotionChirpsPerFrame
Number of chirps per frame for Minor Motion Detection.
Definition: doaproc.h:524
DPU_DoaProc_RadarCubeChunkEdmaCfg::dstAddress
uint32_t dstAddress
Destination address in HWA of the copied chunk.
Definition: doaproc.h:189
DPU_DOA_PROC_MAX_NUM_DOP_FFFT_PARAMS
#define DPU_DOA_PROC_MAX_NUM_DOP_FFFT_PARAMS
Maximum nuber of Doppler FFT params.
Definition: doaproc.h:256
DPU_DoaProc_Config::staticCfg
DPU_DoaProc_StaticConfig staticCfg
Static configuration.
Definition: doaproc.h:584
DPU_DoaProc_Config
dopplerProc DPU configuration parameters
Definition: doaproc.h:579
DPU_DoaProc_RadarCubeChunkEdmaCfg::Bcnt_Acnt
uint32_t Bcnt_Acnt
Packed EDMA values for A count (LSB 16-bit position) and B count (MSB 16-bit position.
Definition: doaproc.h:192
EDMA_Handle
void * EDMA_Handle
A handle that is returned from a EDMA_open() call.
Definition: edma/v0/edma.h:471
DPU_DoaProc_compRxChannelBiasCfg::rangeBias
float rangeBias
Compensation for range estimation bias in meters.
Definition: doaproc.h:457
DPU_DoaProc_config
int32_t DPU_DoaProc_config(DPU_DoaProc_Handle handle, DPU_DoaProc_Config *cfg)
DPU_DoaProc_EdmaCfg::edmaDetMatOut
DPEDMA_ChanCfg edmaDetMatOut
EDMA configuration for data output from HWA - Detection matrix.
Definition: doaproc.h:385
DPU_DoaProc_HWA_Doppler_Fft_Cfg::dstBidx
int16_t dstBidx
column increment in number of columns in destination matrix
Definition: doaproc.h:249
DPU_DoaProc_OutParams
DPU processing output parameters.
Definition: doaproc.h:599
DPU_DoaProc_HWA_Doppler_Fft_Cfg::srcBcnt
uint16_t srcBcnt
Number of input columns (doppler FFTs) in the input matrix to process.
Definition: doaproc.h:234
DPU_DoaProc_EdmaCfg::dummySrc
uint32_t dummySrc
Dummy location.
Definition: doaproc.h:403
DPU_DoaProc_StaticConfig::compRxChanCfg
DPU_DoaProc_compRxChannelBiasCfg compRxChanCfg
Range Bias and rx channel gain/phase compensation configuration.
Definition: doaproc.h:549
DPU_DoaProc_StaticConfig::isStaticClutterRemovalEnabled
bool isStaticClutterRemovalEnabled
Static Clutter Removal Cfg.
Definition: doaproc.h:543
DPU_DoaProc_EdmaCfg::edmaInterLoopOut
DPEDMA_ChanCfg edmaInterLoopOut
EDMA configuration for data output
Definition: doaproc.h:392
DPU_DoaProc_EdmaCfg
dopplerProc DPU EDMA configuration parameters
Definition: doaproc.h:371
DPU_DoaProc_HWA_Doppler_Fft_Cfg::srcBidx
int16_t srcBidx
column increment in number of columns in source matrix
Definition: doaproc.h:240
DPU_DoaProc_StaticConfig::numFrmPerMinorMotProc
uint16_t numFrmPerMinorMotProc
Number of frames Minor Motion Detection spreads over.
Definition: doaproc.h:527
DPU_DoaProc_HW_Resources::detMatrix
DPIF_DetMatrix detMatrix
Detection matrix.
Definition: doaproc.h:434
HWA_Handle
void * HWA_Handle
A handle that is returned from a HWA_open() call.
Definition: hwa/v0/hwa.h:620
DPU_DoaProc_HWA_Doppler_Fft_Cfg::srcAddrOffset
int16_t srcAddrOffset
Column offset in the input matrix.
Definition: doaproc.h:237
DPU_DoaProc_OutParams::stats
DPU_DoaProc_Stats stats
DPU statistics.
Definition: doaproc.h:601
DPU_DoaProc_HwaMaxOutput::maxInd
uint32_t maxInd
Maximum peak index position.
Definition: doaproc.h:355
DPU_DoaProc_HwaCfg::windowSize
uint32_t windowSize
Doppler FFT window size in bytes. This is the number of coefficients to be programmed in the HWA for ...
Definition: doaproc.h:300
DPU_DoaProc_StaticConfig::azimuthFftSize
uint16_t azimuthFftSize
Azimuth FFT size.
Definition: doaproc.h:518
DPEDMA_ChanCfg
EDMA channel configuration.
Definition: dpedma.h:132
DPU_DoaProc_HW_Resources::elevationIndexMatrix
DPIF_DetMatrix elevationIndexMatrix
elevation index matrix
Definition: doaproc.h:440