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.
Tool/software:
Hello,
Currently, we utilize the AWR1843 with the mmWave demo SDK 3.06 for collecting data from some stationary targets. Among the TLVs, TLV 2, which relates to Range Profile data (see attached picture), provides us with 512 data points corresponding to 265 bins. According to the configuration attached below, the device is configured with two Tx and four Rx antennas, and each frame includes 32 loops. Each loop contains two chirps (Tx1 and Tx2). This means that the cube data in L3 should contain 8 (2 Tx * 4 Rx) * 32 * 512 data points.
Given that TLV 2 includes only data with Doppler 0, the output should theoretically have 8 * 512 data points. However, only 512 data points are transferred to the output. We need to understand the algorithm and process in the demo firmware that converts the 8 * 512 data points to the 512 output data points in TLV 2.
Hello,
The equation for the radar cube which seems that you got mostly correct is (#_rx * #_tx) * #_chirps * #_adcSamples
A few questions for you
-why did you multiply by 512 when you have 256 ADC samples
-you said you have 512 data points, but how were you able to verify that. The picture does not provide any clarification for that.
Also here is the section on tlv2 to see if that clears up any confusion.
Best,
Gigliotti
Hello Gabriel,
Thank you very much for your response.
Regarding the image you shared, the data format in TLV2 is an unsigned uint16, meaning each piece of data occupies two bytes. On the other hands, the received data in TLV2 (profile range) can be represented in Python as a list with 512 elements, where every two consecutive elements correspond to one bin. To process this, we can reshape the list into a 256 by 2 array and then multiply it by the vector [0 256]ᵀ, yielding 256 values corresponding to 256 bins.
For verification, the first 8 bytes in each TLV indicate the type and length of the TLV. For TLV2, you can see that the length is 512 bytes. I have already generated a plot similar to the one shown in the visualizer, and I am confident that the algorithm is correct. However, as mentioned, I'm unsure how the firmware converts the 8 by 512 zero Doppler matrix to a 512 by 1 vector. I wonder if it sends the average of the values from the 8 virtual antennas to the port.
Hello,
I understand your question know.
So the conversion begins by taking the log2(Abs) of the 2D FFT for each Rx.
Then summation takes place on these four values (log2(|Z1|) + log2(|Z2|) + log2(|Z3|) + log2(|Z4|)).
For reference Z is the real and complex values of the output of the 2D FFT.
This algorithm effectively divides the memory by 8 explaining what you are seeing. This compression is done to prevent overflow.
For more info on this, here is where to find some further documentation on the FFT, Log2, and summation in SDK 3.6.
/mmwave_sdk_03_06_02_00-LTS/packages/ti/datapath/dpc/dpu/dopplerproc/docs/doxygen/html/index.html
Best,
Gigliotti