Re: how to use the gr_mpsk_receiver_cc

Did anyone use it to receive pi/4 DQPSK signal before?

In the op25-dev project http://sedition.org.au/op25/ we see a
very common variant of PI/4 DQPSK, so-called CQPSK/LSM.

Experimentation has shown that the gr_mpsk_receiver_cc() is not
optimal for CQPSK. There seem to be multiple causes, e.g.,:

  1. PI/4 (D)QPSK apparently looks enough like 8-PSK that the standard
    GR QPSK phase detector has difficulty achieving phase lock. There’s
    a hack to rotate the second of every two symbols by 45 degress which
    seems to give a large improvement [see Fig 10. of my LSM page
    at LSM Gallery ]

  2. At least for the specific case of LSM/CQPSK, it was found that a
    Gardner symbol timing loop was superior to the M&M loop (and to the
    GR PFB clock sync block) as used in the GR receivers.

The op25 site has example code for using both the gr_mpsk_receiver_cc
as well as a complete working example using Gardner’s method, including
the PI/4 hack mentioned above.

Finally, you should also take a look at the new “magic” PFB receiver
(dqpsk2.py in GR) for your application…

Max