In this single carrier QPSK receiver, is designed to receive QPSK data from a satellite in Low Earth Orbit. Since the satellite speed in this orbit is around 3000 m/s and our carrier frequency is 12 GHz, the doppler shift will be around 320 KHz.

Our sampling rate is 2 MSPS and our symbol rate is 1 MegaBaud. If I want to blindly estimate the doppler shift of 320 KHz, I won't be able to do it, because of the low sampling rate. So the fft approach (mentioned here won't work).

There are some sources that mention this can be done by using Costas loop, but I thought the Costas loop is going to be used in the Carrier Recovery block, which does the fine frequency and phase compensation. How can I get the coarse frequency estimate here?

This is the MATLAB code I used:


I have added the power spectrum after pulse shaping on the transmitter side:

enter image description here

enter image description here

  • 1
    $\begingroup$ Thanks. I edited the post to make some clarification. The 320 KHz Doppler shift comes from the satellite orbiting the earth at the speed of 3 km/s and having a carrier frequency of 12 GHz. $\endgroup$
    – Jacob
    Jan 3 at 23:40
  • 1
    $\begingroup$ The sampling rate seems more than sufficient for 320 kHz Doppler + order of 1 Hz signal bandwidth. Are you really doing a single symbol per second in QPSK? $\endgroup$ Jan 4 at 10:47
  • 1
    $\begingroup$ The Costas loop is not just for fine frequency recovery – make the feedback loop bandwidth large enough to accomodate your doppler! So, this should all be pretty straightforward; do you have an SNR range over this would have to work, and information on the pulse shape? $\endgroup$ Jan 4 at 10:48
  • 2
    $\begingroup$ I think the mental "trick" that Andy and I are doing here and that might be a bit surprising to you, Jacob, is that we simply look at the problem as "what changes fast, and what slow?". Look at it from this point: in the time your QPSK might do at most $\pi$ phase rotation, your Doppler might have caused 320,000$\pi$ rotation. So, for all practical purposes, you'd estimate the frequency of this signal as if it was a constant single tone – a simplification easily made (assuming sensible pulse shaping) if you take a part of your signal that's sufficiently shorter than your symbol period. $\endgroup$ Jan 4 at 12:56
  • 2
    $\begingroup$ For 1 MBd at 2 Msps, you can use an FLL Band-Edge CFO estimation & correction I would think. The QPSK Modulation RRC filter is going to need a high $\alpha$ for it to work well with that amount of doppler shift, I would think. (I think you need really wide band edges for the FLL band-edge CFO correction to be able to acquire reliably, given the doppler shifts). $\endgroup$
    – Andy Walls
    Jan 4 at 20:34


Your Answer

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

Browse other questions tagged or ask your own question.