# Carrier frequency offset estimation for QPSK and asymmetrical spectrum

I am working on estimation of carrier frequency offset for QPSK data from a satellite. From my understanding, there are two main approaches: either remove data from the carrier (by taking the fourth power), or with band-edge filtering, or some other method of measuring difference of energy content in positive and negative parts of the spectrum.

In my particular case I have the signal converted to base-band (and with some offset). I'm now trying to estimate that offset. I can correctly estimate offset by taking the fourth power of the signal, and then running an FFT on that signal. However, I'm struggling with band-edge filtering, and it seems that the issue is not my implementation of the filter, but rather, the signal itself. While the algorithm works like charm on synthetic QPSK data, when I run it on some real satellite data, it is not able to compensate for frequency offset. I tried to find the cause of this behavior, and I was able to find that the signal spectrum is asymmetrical, and negative frequency content is having more energy than positive, as shown in the figure below (figure shows FFT of signal with frequency offset removed). What I do not understand why there is such a difference in the energy in the positive and negative parts of the spectrum, and I would appreciate if somebody could provide me some insight into this.

A likely source of the amplitude imbalance given it is on the actual signal is filtering distortion along the signal chain such that the gain is not flat across the bandwidth of the spectrum. This would not be uncommon with analog filtering and can be compensated for with equalization (if needed).

For an alternate approach to carrier tracking applicable to QPSK, consider estimating the carrier frequency offset using the baseband samples after timing recovery (timing recovery with a Gardner TED converges even under relatively large carrier offset frequencies). With that, the correct sample locations for each symbol (just prior to decision) are used with a cross product frequency discriminator to estimate carrier offset as follows:

$$Err = |I_2| |Q_1|-|I_1| |Q_2|$$

Where the absolute values convert all samples to the first quadrant (so this will work for offset frequencies such that the phase doesn't rotate more than $$pi/4$$ radians between samples, or up to 1/8th the symbol rate.

$$Err$$ is proportional to frequency offset as the result above is the imaginary portion of the complex conjugate product of the two samples, which is proportional to the phase between the samples. A change in phase versus a change in time (the symbol duration) is proportional to frequency, since $$f=d\phi/dt$$.

Thus the cross product frequency discriminator is the cross product phase detector for the phase between two samples at two different times.

• Thank you for your comment. My intention was to do coarse frequency offset estimation (and correction) to ease things for later synchronization (carrier and timing). I understand that equalization could correct non uniform channel, but for equalization I need to have signal synchronized. And if synchronization fails because of some reason, that I cannot get equalizer to help with synchronization. May 16 '20 at 5:26
• What is your maximum carrier offset that you are faced with (as a fraction of the symbol rate?) May 16 '20 at 20:37
• I think I can expect something like 10%, but I wouldn't be surprised if it end up being higher. May 18 '20 at 10:26
• Just a little more clarification from my side. Intention was to use MM TED for timing synchronization, and in this scenario carrier synchronization needs to handle non-coherent samples. I do not know if that is right approach, as somewhere I found some notes that MM TED provide lower noise on output than Gardner TED. I do not know how MM and Gardner TED compares in real world usage. May 18 '20 at 10:44
• @schnajc The M&M provides lower timing noise but that may not even be limiting your system- the Gardner operates with very wide carrier offsets while the M&M requires carrier synchronization first. I posted more details comparing Gardner and M&M here: dsp.stackexchange.com/questions/31517/… May 18 '20 at 19:29