diff options
Diffstat (limited to 'gr-digital/python/digital/psk_constellations.py')
-rw-r--r-- | gr-digital/python/digital/psk_constellations.py | 103 |
1 files changed, 79 insertions, 24 deletions
diff --git a/gr-digital/python/digital/psk_constellations.py b/gr-digital/python/digital/psk_constellations.py index c3809e7ade..520eafebe2 100644 --- a/gr-digital/python/digital/psk_constellations.py +++ b/gr-digital/python/digital/psk_constellations.py @@ -52,6 +52,7 @@ rotations are based off of. # BPSK Constellation Mappings + def psk_2_0x0(): ''' 0 | 1 @@ -59,9 +60,12 @@ def psk_2_0x0(): const_points = [-1, 1] symbols = [0, 1] return (const_points, symbols) + + psk_2 = psk_2_0x0 # Basic BPSK rotation psk_2_0 = psk_2 # First ID for BPSK rotations + def psk_2_0x1(): ''' 1 | 0 @@ -69,6 +73,8 @@ def psk_2_0x1(): const_points = [-1, 1] symbols = [1, 0] return (const_points, symbols) + + psk_2_1 = psk_2_0x1 @@ -81,18 +87,23 @@ def sd_psk_2_0x0(x, Es=1): 0 | 1 ''' x_re = x.real - dist = Es*numpy.sqrt(2) - return [dist*x_re,] + dist = Es * numpy.sqrt(2) + return [dist * x_re, ] + + sd_psk_2 = sd_psk_2_0x0 # Basic BPSK rotation sd_psk_2_0 = sd_psk_2 # First ID for BPSK rotations + def sd_psk_2_0x1(x, Es=1): ''' 1 | 0 ''' - x_re = [x.real,] - dist = Es*numpy.sqrt(2) - return -dist*x_re + x_re = [x.real, ] + dist = Es * numpy.sqrt(2) + return -dist * x_re + + sd_psk_2_1 = sd_psk_2_0x1 @@ -106,13 +117,16 @@ def psk_4_0x0_0_1(): | ------- | 00 | 01 ''' - const_points = [-1-1j, 1-1j, - -1+1j, 1+1j] + const_points = [-1 - 1j, 1 - 1j, + -1 + 1j, 1 + 1j] symbols = [0, 1, 2, 3] return (const_points, symbols) + + psk_4 = psk_4_0x0_0_1 psk_4_0 = psk_4 + def psk_4_0x1_0_1(): ''' | 11 | 10 @@ -122,8 +136,11 @@ def psk_4_0x1_0_1(): k = 0x1 pi = [0, 1] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) + + psk_4_1 = psk_4_0x1_0_1 + def psk_4_0x2_0_1(): ''' | 00 | 01 @@ -133,8 +150,11 @@ def psk_4_0x2_0_1(): k = 0x2 pi = [0, 1] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) + + psk_4_2 = psk_4_0x2_0_1 + def psk_4_0x3_0_1(): ''' | 01 | 00 @@ -144,8 +164,11 @@ def psk_4_0x3_0_1(): k = 0x3 pi = [0, 1] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) + + psk_4_3 = psk_4_0x3_0_1 + def psk_4_0x0_1_0(): ''' | 01 | 11 @@ -155,8 +178,11 @@ def psk_4_0x0_1_0(): k = 0x0 pi = [1, 0] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) + + psk_4_4 = psk_4_0x0_1_0 + def psk_4_0x1_1_0(): ''' | 00 | 10 @@ -166,8 +192,11 @@ def psk_4_0x1_1_0(): k = 0x1 pi = [1, 0] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) + + psk_4_5 = psk_4_0x1_1_0 + def psk_4_0x2_1_0(): ''' | 11 | 01 @@ -177,8 +206,11 @@ def psk_4_0x2_1_0(): k = 0x2 pi = [1, 0] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) + + psk_4_6 = psk_4_0x2_1_0 + def psk_4_0x3_1_0(): ''' | 10 | 00 @@ -188,9 +220,10 @@ def psk_4_0x3_1_0(): k = 0x3 pi = [1, 0] return constellation_map_generator(psk_4()[0], psk_4()[1], k, pi) -psk_4_7 = psk_4_0x3_1_0 +psk_4_7 = psk_4_0x3_1_0 + ############################################################ # QPSK Constellation Softbit LUT generators @@ -204,11 +237,14 @@ def sd_psk_4_0x0_0_1(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [dist*x_im, dist*x_re] + dist = Es * numpy.sqrt(2) + return [dist * x_im, dist * x_re] + + sd_psk_4 = sd_psk_4_0x0_0_1 sd_psk_4_0 = sd_psk_4 + def sd_psk_4_0x1_0_1(x, Es=1): ''' | 11 | 10 @@ -217,10 +253,13 @@ def sd_psk_4_0x1_0_1(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [dist*x_im, -dist*x_re] + dist = Es * numpy.sqrt(2) + return [dist * x_im, -dist * x_re] + + sd_psk_4_1 = sd_psk_4_0x1_0_1 + def sd_psk_4_0x2_0_1(x, Es=1): ''' | 00 | 01 @@ -229,10 +268,13 @@ def sd_psk_4_0x2_0_1(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [-dist*x_im, dist*x_re] + dist = Es * numpy.sqrt(2) + return [-dist * x_im, dist * x_re] + + sd_psk_4_2 = sd_psk_4_0x2_0_1 + def sd_psk_4_0x3_0_1(x, Es=1): ''' | 01 | 00 @@ -241,10 +283,13 @@ def sd_psk_4_0x3_0_1(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [-dist*x_im, -dist*x_re] + dist = Es * numpy.sqrt(2) + return [-dist * x_im, -dist * x_re] + + sd_psk_4_3 = sd_psk_4_0x3_0_1 + def sd_psk_4_0x0_1_0(x, Es=1): ''' | 01 | 11 @@ -253,10 +298,13 @@ def sd_psk_4_0x0_1_0(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [dist*x_re, dist*x_im] + dist = Es * numpy.sqrt(2) + return [dist * x_re, dist * x_im] + + sd_psk_4_4 = sd_psk_4_0x0_1_0 + def sd_psk_4_0x1_1_0(x, Es=1): ''' | 00 | 10 @@ -265,8 +313,10 @@ def sd_psk_4_0x1_1_0(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [dist*x_re, -dist*x_im] + dist = Es * numpy.sqrt(2) + return [dist * x_re, -dist * x_im] + + sd_psk_4_5 = sd_psk_4_0x1_1_0 @@ -278,10 +328,13 @@ def sd_psk_4_0x2_1_0(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [-dist*x_re, dist*x_im] + dist = Es * numpy.sqrt(2) + return [-dist * x_re, dist * x_im] + + sd_psk_4_6 = sd_psk_4_0x2_1_0 + def sd_psk_4_0x3_1_0(x, Es=1): ''' | 10 | 00 @@ -290,6 +343,8 @@ def sd_psk_4_0x3_1_0(x, Es=1): ''' x_re = x.real x_im = x.imag - dist = Es*numpy.sqrt(2) - return [-dist*x_re, -dist*x_im] + dist = Es * numpy.sqrt(2) + return [-dist * x_re, -dist * x_im] + + sd_psk_4_7 = sd_psk_4_0x3_1_0 |