Analysis of the above MATLAB code helps to identify the various compute workloads for the SAR BP algorithm:
Line 5: The algorithm requires an IFFT that is applied to the radar phase pulse data. A single transform is computed per radar pulse. Its output is used to update all pixels in the target image.
Line 7: A squared distance measure is computed between the antenna platform $(A_X,A_Y,A_Z)$ and every position \((x,y,z)\) in the target scene.
Line 10: The differential distance $d_R$ is computed as the difference between the target distance and the range to the scene center $R_0$. This requires a
sqrt()and subtraction operation for every pixel in the target image.Line 12: A complex-valued phase correction term is computed as the output of a complex
exp()function. Its input argument is the differential distance $d_R$ scaled by a number of the radar parameters, $\pi\(, \)F_{min}$ and \(c\), the speed of light. Once again, these computations must be performed for every pixel in the target image.Line 14: This indexing check ensures no computed distances fall outside the radar range. This may be avoided in practice by careful dimensioning of the solution parameters.
Line 16: A one-dimensional linear interpolation is made between the differential distance $d_R$ based on the radar range profile $r_c$ computed by the IFFT.
Line 17: Finally, each pixel in the target image is updated by adding the complex-valued product of the phase correction term and the interpolated differential distance.
Based on the analysis above, the following AI Engine kernels are identified to service the overall set of compute workloads:
ifft()– implement the IFFT transformdiff3dsq()– compute the 3D squared distancesqrt()– compute the square root of the squared distancedR_comp()– compute the difference between target distance and the range to scene centerfmod_floor()– reduce the input argument toexp()modulo $2\pi$ (may not be obvious without the discussion below)expjx()– compute the complex exponential functioninterp1()– interpolate the differential distance against the fixed radar gridbp_update()– update the SAR target image using the phase correction and distance terms.
Note that all AI Engine kernels will use single-precision floating-point data types. This means they can target the vectorized floating-point data path for the AIE architecture to yield good performance.