1

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:

https://github.com/Jacobx0/QPSKRX/blob/main/QPSKRX.m

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

enter image description here

enter image description here

Jacob
  • 121
  • 7
  • You are asking too many questions at once :-) Please focus on one problem per post. But first of all, could you make sure your numbers are correct? 1 Bd, 2 MSPS, 300 kHz Doppler doesn't sound like a sensible combination. – MBaz Jan 03 '24 at 23:32
  • 1
    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. – Jacob Jan 03 '24 at 23:40
  • 1
    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? – Marcus Müller Jan 04 '24 at 10:47
  • 1
    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? – Marcus Müller Jan 04 '24 at 10:48
  • 1
    A 1 Bd QPSK signal is going to have a really narrow bandwidth compared to a 2 MHz processing bandwidth. A carrier tracking PLL might work well enough to give you a rough estimate of the center frequency for you to rotate the spectrum and remove most of the offset. You might need to create a spectral peak to track (maybe by squaring the signal?), and then adjust your offset correction accordingly. – Andy Walls Jan 04 '24 at 11:42
  • 1
    A matched filter for a 1 Bd pulse at a 2 Msps sampling rate is probably going to be a really long filter. I assume you'll be filtering and down-sampling after CFO. Your block diagram doesn't show that though. – Andy Walls Jan 04 '24 at 11:49
  • 2
    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. – Marcus Müller Jan 04 '24 at 12:56
  • 1
    And, say, a hundredth of a second would still contain plenty samples to do a reasonable frequency estimate – that is, given the SNR isn't terrible! We don't know that, though, you don't say it. – Marcus Müller Jan 04 '24 at 12:57
  • Thanks @MarcusMüller and Andy So sorry for the confusion. It is 1 Megabaud. I updated the post. With this in mind, can I use the dft approach? Or should I use the Costas loop to find a rough estimate of the FO. For pulse shaping, I am using square raised cosine filter. – Jacob Jan 04 '24 at 19:05
  • 2
    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). – Andy Walls Jan 04 '24 at 20:34
  • 1
    Agreed (with Andy). Hey, @Jacob, to assess what synchronizer to do, we really ought to know something about your pulse shape; as Andy says, 2 MS/s for 1 MBd should be plenty, even with your Doppler atop of it. But whether or not you can reasonably do it in a Costas loop, a band-edge FLL or anything else, really, depends at the very least on your spectral shape and your SNR. You've been asked about that pulse shaping filter twice now by me, and once by Andy (in the shape of asking about the Matched Filter). Could you maybe tell us all you know? Also, it might simply be a good idea to add a… – Marcus Müller Jan 04 '24 at 20:59
  • 1
    PSD (estimate) plot from your actual signal to your question, because, honestly, that would have saved us so much time! – Marcus Müller Jan 04 '24 at 20:59
  • Thanks a lot @AndyWalls and Marcus. I updated the post with PSD and the MATLAB code as well. I used RRC for the pulse shaping filter. My assumption was to design the system for SNR=20 dB for now to see if it works fine. – Jacob Jan 04 '24 at 21:59

0 Answers0