xWRL6432 MMWAVE-L-SDK  05.05.00.00
1D Capon Beamforming

About Capon Beamforming

In FMCW radar signal processing a sequence of chirps, uniformly spaced in time, are transmitted. The reflected signal may be received across multiple RX antennas (say N). In many applications, it is desirable to know the Angle of Arrival (AoA) of the reflected signals, to know the angle at which an object is. Traditionally, this is calculated using a Fourier Transform (FFT) based technique for the signals received at the RX antennas. This technique utilises the relative phase differences across the RX antennas to estimate the AoA of the signal. The major issue with this FFT-based technique is that it has a poor angular resolution (theta_res = 2/N).

Capon Beamforming is an algorithm which helps improve the angular resolution of a sensor. Beamforming is the process of focussing a receiving device in a particular direction to "listen" to signals from that direction. This "listening" is done through a steering vector, which enables us to focus the receiver in a desired direction. A simple beamformer applies a time delay (Delta) and an amplitude weight (w) to the received signal at each antenna to form the steering vector. These weights have to be tuned to "listen" properly to a particular direction. Capon Beamforming uses optimization techniques to find the most optimal weights for a beamformer, hence giving us a good angular resolution.

Capon Beamforming v/s FFT Beamformer

We see in the above comparision that Capon Beamforming gives a better angular resolution than FFT-based AoA estimation. Additionally, we see that we also have much lesser side lobes in case of Capon Beamforming.

Structures and API Documentation

Structures

The structures to be used by the user are well-commented in the caponBeamforming.h file.

APIs

CaponBeamformingHWA_Handle CaponBeamformingHWA_init
(
CaponBeamformingHWA_InitParams *initCfg,
int32_t *errCode
)

Description: Capon Beamforming init function. It allocates memory to store its internal data object and returns a handle if it executes successfully.
Parameters:
initCfg – initCfg Pointer to initial configuration parameter.
errCode – errCode Pointer to errCode generates by the API.


Return values:
Success = valid handle
Error != 0: NULL


int32_t CaponBeamformingHWA_config
(
CaponBeamformingHWA_Handle handle,
CaponBeamformingHWA_Config *cfg
)

Description: Capon Beamforming configuration. Configures the Capon Beamforming DPU
Parameters:
handle – DPU handle.
cfg – Pointer to configuration parameters.


Return values:
Success = 0
Error != 0: DPU_CAPONBEAMFORMING_ERROR_CODE


int32_t CaponBeamformingHWA_process
(
CaponBeamformingHWA_Handle handle,
CaponBeamformingHWA_Config *cfg
)

Description: Capon Beamforming process function. Performs the Capon Beamforming algorithm
Parameters:
handle – DPU handle.
cfg – Pointer to configuration parameters.


Return values:
Success = 0
Error != 0: DPU_CAPONBEAMFORMING_ERROR_CODE


int32_t CaponBeamformingHWA_deinit
(
CaponBeamformingHWA_Handle handle,
CaponBeamformingHWA_Config *cfg
)

Description: Capon Beamforming DPU deinit
Parameters:
handle – DPU handle.
cfg – Pointer to configuration parameters.


Return values:
Success = 0
Error != 0: DPU_CAPONBEAMFORMING_ERROR_CODE


Benchmarks

N_ant N_snaps Angles Sampled Time (us)
6 128 32 648
4 64 64 314