There's a bug in the block for the DBPSK modulator. The "differential" param isn't set to True in dbpsk_mod; it's just left to default, and differential defaults to False in the bpsk_mod block. So it really acts like a BPSK modulator. QPSK was the same. Here's a patch.
diff --git a/gr-digital/python/digital/bpsk.py b/gr-digital/python/digital/bpsk.py
index 57cf253..92f3254 100644
--- a/gr-digital/python/digital/bpsk.py
+++ b/gr-digital/python/digital/bpsk.py
@@ -117,7 +117,7 @@ class dbpsk_mod(bpsk_mod):
def __init__(self, mod_code=None, *args, **kwargs):
- super(dbpsk_mod, self).__init__(*args, **kwargs)
+ super(dbpsk_mod, self).__init__(differential=True, *args, **kwargs)
# /////////////////////////////////////////////////////////////////////////////
# DBPSK demodulator
@@ -139,7 +139,7 @@ class dbpsk_demod(bpsk_demod):
def __init__(self, mod_code=None, *args, **kwargs):
- super(dbpsk_demod, self).__init__(*args, **kwargs)
+ super(dbpsk_demod, self).__init__(differential=True, *args, **kwargs)
#
# Add these to the mod/demod registry
diff --git a/gr-digital/python/digital/qpsk.py b/gr-digital/python/digital/qpsk.py
index 859d981..1ed3357 100644
--- a/gr-digital/python/digital/qpsk.py
+++ b/gr-digital/python/digital/qpsk.py
@@ -149,7 +149,7 @@ class dqpsk_mod(qpsk_mod):
__doc__ += shared_mod_args
def __init__(self, mod_code=_def_mod_code, *args, **kwargs):
- super(dqpsk_mod, self).__init__(mod_code,
+ super(dqpsk_mod, self).__init__(mod_code, True,
*args, **kwargs)
# /////////////////////////////////////////////////////////////////////////////
@@ -171,7 +171,7 @@ class dqpsk_demod(qpsk_demod):
__doc__ += shared_demod_args
def __init__(self, mod_code=_def_mod_code, *args, **kwargs):
- super(dqpsk_demod, self).__init__(mod_code,
+ super(dqpsk_demod, self).__init__(mod_code, True,
*args, **kwargs)
#
Incidentally, I question the need for the DBPSK mod GRC block now that we have the generic PSK mod GRC block. Might make sense to deprecate it.