I am currently trying to demodulate an Offset QPSK signal coming from a satellite using GNURadio. If I understood correctly, an OQPSK is a QPSK with one of the two bits per symbol delayed by half a symbol duration to prevent 180° phase changes. When trying to demodulate the signal, I tried two different approaches.

The first option is to delay the imaginary or real part of the signal by half a symbol duration before further processing it as seen in the first screenshot. This should restore the original QPSK signal which can then be further demodulated. This results in a constellation diagram, where you can see the QPSK constellation but with a lot of artefacts. Both the graph and the resulting constellation diagram are shown in the first screenshot.

The second option is to treat the OQPSK signal like a QPSK signal at twice the symbol rate. This should work since the additional phase changes are happening exactly at the middle of each symbol. However, this method results in a way worse constellation diagram than the first option, as seen in the second screenshot.

Has anyone already managed to demodulate an OQPSK signal with GNURadio and can help me out here?

Thank you and kind regards valkyrie

Option 1 - Delay

Option 2 - Double Speed

  • $\begingroup$ Is it a satellite signal record in raw file? There is no carrier and phase offset recovery mechanism. Option 1 could work. You could check eye diagram after AGC to investigate. $\endgroup$
    – gotchi85
    Dec 30 '20 at 12:09
  • $\begingroup$ The raw file contains a recorded signal from a vector signal generator. Therefore, I have no carrier offset correction. The phase sync is done within the symbol sync block and a fine correction again in den constellation receiver. The same minimal graph works without problems when using a BPSK or QPSK. Only the offset part ist not working. Regarding the Eye diagram, what can I see in it regarding this problem here? I only know it for finding interference like noise or multipath. $\endgroup$
    – valkyrie
    Jan 4 at 9:03
  • $\begingroup$ Ok, so no carrier offset. I suggested the eye diagram display as investigation to find a clue of what's wrong. It should be a QPSK ovr8 after one RRC applied perfectly synchronized. I guess it takes 5 sec to check it... You could try another timing error detector in symb sync block if available. Are you sure of your rrc taps? $\endgroup$
    – gotchi85
    Jan 4 at 10:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.