summaryrefslogtreecommitdiff
path: root/gr-digital/python/qam.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/python/qam.py')
-rw-r--r--gr-digital/python/qam.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/gr-digital/python/qam.py b/gr-digital/python/qam.py
index 5b1f7683b8..73bad2f75b 100644
--- a/gr-digital/python/qam.py
+++ b/gr-digital/python/qam.py
@@ -30,7 +30,7 @@ from generic_mod_demod import generic_mod, generic_demod
from utils.gray_code import gray_code
from utils import mod_codes
import modulation_utils
-import digital_swig
+import digital_swig as digital
# Default number of points in constellation.
_def_constellation_points = 16
@@ -157,16 +157,22 @@ def qam_constellation(constellation_points=_def_constellation_points,
else:
raise ValueError("Mod code is not implemented for QAM")
if differential:
- points = make_differential_constellation(constellation_points, gray_coded)
+ points = make_differential_constellation(constellation_points, gray_coded=False)
else:
points = make_non_differential_constellation(constellation_points, gray_coded)
side = int(sqrt(constellation_points))
width = 2.0/(side-1)
- # No pre-diff code
- # Should add one so that we can gray-code the quadrant bits too.
- pre_diff_code = []
- constellation = digital_swig.constellation_rect(points, pre_diff_code, 4,
- side, side, width, width)
+ # For differential and gray-coded then gray-code the first two
+ # bits with a pre_diff_code.
+ # FIXME: It would be good to have a test to make sure that gray-coded constellations
+ # are really gray-coded. Perhaps by checking on the correlation between bit-errors.
+ if differential and gray_coded:
+ m = constellation_points
+ pre_diff_code = range(0, m/2) + range(3*m/4, m) + range(m/2, 3*m/4)
+ else:
+ pre_diff_code = []
+ constellation = digital.constellation_rect(points, pre_diff_code, 4,
+ side, side, width, width)
return constellation
# /////////////////////////////////////////////////////////////////////////////