I am designing a QPSK demodulator to be used for receiving Meteor M2 (LEO satellite) signals (QPSK at 72Kbaud). However, I am finding a lot of problems in my way.
First of all, this is the flowchart I came with:
First, I filtered the signal, applied it a $\frac{3}{16}$ fractional downsampling and fed it to a Polyphase Clock Sync block (8sps input, 2sps output and 2pi/100 bandwidth, 0.5 TED Gain and 0.7 Damping factor and 0.15 Deviation). Then, since I thought that for lower passes multipath would be a thing, I added a CMA equalizer after the symbol sync block. Lastly, I placed a Costas Loop just before the soft decoder.
When the elevation of the satellite is above ~50°, I obtain a pretty clear constellation with no decoding errors. Nevertheless, the interesting challenge of designing such demodulator is for it to work at lower elevations. It is very important that it does not lose lock at any moment of the pass, since even the shortest lock loss will produce a black line on the final image.
I am having a lot of trouble with the signal lock at low elevations. I assume that this is caused by a "dirty" signal at the input of the Polyphase Clock Sync block.
• Does my flowchart look good? This is the first digital receiver I design in GNURadio and have very little experience in this field.
• Is there any way (other than trial and error) to optimise Symbol Sync block parameters?
• What technique (filtering, equalization, etc.) may I use in order to solve the locking problems?
Thank you in advance!
Edit: the input signal to the low pass filter has already no doppler shift.
Edit 2: can a PLL Carrier Tracking block help in this situation? The signal seems to be frequency stable, but I do not know whether such block can help avoiding phase locks at the symbol sync stage. Can placing the Costas Loop before symbol sync help?
Edit 3: after some refinement, this is the look of the receiver
Thank you very much @gotchi85 por the help