To use DFT/FFT (or maximum likelihood) method to estimate the frequency offset introduced by the channel, we need to remove the modulation on the received data samples in the front. If the unknown data samples belong to a QPSK constellation, how should this modulation removal be done?

  • $\begingroup$ um, do you know how many points the PSK constellation has, or do you know the symbol rate, at least roughly? $\endgroup$ Commented Nov 15, 2020 at 18:20
  • $\begingroup$ QPSK modulation a(k) at time instance k. conj(a(k)) * r(k) can remove the modulation, but a(k) is unknown. $\endgroup$
    – Linda
    Commented Nov 15, 2020 at 18:38
  • $\begingroup$ please add that to the question. That makes answering this a lot easier than for the "any PSK" case. $\endgroup$ Commented Nov 15, 2020 at 18:39
  • $\begingroup$ Actually, I am interested in knowing a general solution. Of course, QPSk is used most of the time. $\endgroup$
    – Linda
    Commented Nov 15, 2020 at 19:11
  • $\begingroup$ But... the general solution fills books, not answers on here. $\endgroup$ Commented Nov 15, 2020 at 19:45

1 Answer 1


For lower-cardinality PSKs like the QPSK, the "classical" way is to take the signal to the $M$th power, $M$ being the number of constellation points.

From the shape of an $M$-PSK modulation, it's clear that the constellation points are $e^{j2\pi \frac mM},\, m =0,1,\ldots,M-1$, and putting that to $M$th power yields $${\left(e^{j2\pi \frac mM}\right)}^M=e^{j2\pi m}=e^0=1,$$ due to the $2\pi$-periodicity of the complex exponential.

There you go, undergrad textbook-level data removal :)

Since your frequency offset is but a multiplied $e^{j2\pi f_\text{offset}t}$, you get a constant tone at $M$ times the offset frequency after.

Small problem: you don't have only signal, you do have noise in your received signal, which gets put to the $M$th power, too, and also intermodulated with the signal (you're converting nice additive noise to multiplicative noise). That typically drastically reduces your SNR – you don't get the most efficient frequency estimator that way. I'd advise against this whole approach!

The typical way to counter frequency offset in benign-sized modulation is to do a second-order PLL with loop filter tuned to the symbol rates you're expecting.

Add in that you'll of course have Gray mapping and forward error correcting codes, and that you can thus use your corrected decisions to refine your frequency error estimate, and you'll quickly see how undesirable "deleting" the info through nonlinear means (which are the only means to do that) is. For BPSK, the squaring approach is commonly done (because you'd want to do something similar to recover the timing, not only the frequency error, anyways), as it's low-complexity.

A second-order PLL works relatively well (even abused for QAM) until your constellation becomes large, where the probability that your PLL either "swallows" a legit symbol transition or misinterprets noise become problematic.

As everywhere, the synchronization of larger PSKs quickly becomes very system-specific and usually reflects the assumptions made on the channel. For example, if you have a satellite channel with substantial Doppler, and Doppler rate, but with low phase pertubations other than that, periodically sending a synchronization-aiding words from a smaller PSK might be a very good tradeoff in terms of complexity, robustness and data rate loss.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.