2.6 KiB
Frequency Offset Correction
This paper </files/vtc04_freq_offset.pdf>
1 explains why frequency offset occurs and how to correct it. In a nutshell, there are two types of frequency offsets. The first is called Carrier Frequency Offset (CFO) and is caused by the difference between the transmitter and receiver's Local Oscillator (LO). This symptom of this offset is a phase rotation of incoming I/Q samples (time domain). The second is Sampling Frequency Offset (SFO) and is caused by the sampling effect. The symptom of this offset is a phase rotation of constellation points after FFT (frequency domain).
The CFO can be corrected with the help of short preamble (Coarse) long preamble (Fine). And the SFO can be corrected using the pilot sub-carriers in each OFDM symbol. Before we get into how exactly the correction is done. Let's see visually how each correction step helps in the final constellation plane.
Constellation Points Without Any Correction
Constellation Points With Coarse, Fine and Pilot Correction
fig_cons
to fig_cons_full
shows the constellation points of a 64-QAM modulated 802.11a packet.
Coarse CFO Correction
The coarse CFO can be estimated using the short preamble as follows:
$$\alpha_{ST} = \frac{1}{16}\angle(\sum_{i=0}^{N}\overline{S[i]}S[i+16])$$
where ∠( ⋅ ) is the phase of complex number and N ≤ 144(160 − 16) is the subset of short preambles utilized. The intuition is that the phase difference between S[i] and S[i+16] represents the accumulated CFO over 16 samples.
After getting αST, each following I/Q samples (starting from long preamble) are corrected as:
S′[m] = S[m]e − jmαST, m = 0, 1, 2, …
In , the coarse CFO is calculated in the sync_short
module, and we set N = 64. The prod_avg
in fig_sync_short
is fed into a moving_avg
module with window size set to 64.
Sourour, Essam, Hussein El-Ghoroury, and Dale McNeill. "Frequency Offset Estimation and Correction in the IEEE 802.11 a WLAN." Vehicular Technology Conference, 2004. VTC2004-Fall. 2004 IEEE 60th. Vol. 7. IEEE, 2004.↩︎