3.16 Frequency Offset Calculation
In the ATA8350 UWB device, when the device is in RXo, VRo or PRo mode, the received message contains a postamble to calculate an estimation of the frequency offset. Perform this estimation by analyzing the received payload data. The receiving device detects the LE position, Time-of-arrival (Toa_p) in the preamble section, and the Leading Edge (LE2) in the postamble section within one telegram.
The shift in the Leading Edge positions (LE_SHIFTm), depending on the clock offset between the two devices, is calculated with the following:
if ( LE >= PulseLength - 55 ) and ( LE2 <= 55 )
LE_SHIFTm = LE2 + PulseLength – LE - 8 [in tADC units]
else if ( LE2 >= PulseLength - 55 ) and ( LE <= 55 )
LE_SHIFTm = LE2 - (LE + PulseLength) - 8 [in tADC units]
else
LE_SHIFTm = LE2 – LE - 8 [in tADC units]
In the ATA8352 UWB device, the receiving device detects the LE position, Toa_p in the preamble section, and the Leading Edge Toa2_p in the postamble section within one telegram. In addition to the Toa2_p data, use the LETrack data from the footer section of the data telegram. In low SNR conditions, the Toa2_p data show higher variance and the LETrack data are more reliable.
The shift in the Leading Edge positions (le_shift), depending on the clock offset between the two devices, is calculated with the following:
if(((LETrack - (Toa2-8)) < 4) && (nlos < 50) && (maxDEM < 550))
le_shift_raw = LETrack - Toa2;
else
le_shift_raw = Toa2_p - Toa_p - 8;
if ( (Toa >= (SYMBOL_RATE - 55)) && (Toa2 <= 55) )
le_shift = le_shift_raw + SYMBOL_RATE;
else
if ((Toa2 >= (SYMBOL_RATE - 55)) && (Toa <= 55))
le_shift = le_shift_raw - SYMBOL_RATE;
else
le_shift = le_shift_raw;
if(((LETrack - (Toa2-8)) < 4) && (nlos < 50) && (maxDEM < 550))
le_shift = le_shift * 1.7;
else
le_shift = le_shift * 1.35 - 1;
if(((LETrack - (Toa2-8)) < 4) && (nlos < 50) && (maxDEM < 550))
le_shift_raw = LETrack - Toa2;
else
le_shift_raw = Toa2_p - Toa_p - 8;
if ( (Toa >= (SYMBOL_RATE - 55)) && (Toa2 <= 55) )
le_shift = le_shift_raw + SYMBOL_RATE;
else
if ((Toa2 >= (SYMBOL_RATE - 55)) && (Toa <= 55))
le_shift = le_shift_raw - SYMBOL_RATE;
else
le_shift = le_shift_raw;
if(((LETrack - (Toa2-8)) < 4) && (nlos < 50) && (maxDEM < 550))
le_shift = le_shift * 1.7;
else
le_shift = le_shift * 1.35 - 1;