summaryrefslogtreecommitdiff
path: root/gr-digital/python/digital/qam_constellations.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/python/digital/qam_constellations.py')
-rw-r--r--gr-digital/python/digital/qam_constellations.py150
1 files changed, 98 insertions, 52 deletions
diff --git a/gr-digital/python/digital/qam_constellations.py b/gr-digital/python/digital/qam_constellations.py
index 2ddaa92d15..42aa31611f 100644
--- a/gr-digital/python/digital/qam_constellations.py
+++ b/gr-digital/python/digital/qam_constellations.py
@@ -85,6 +85,7 @@ For 16QAM:
3, 2, 1, 0
'''
+
def qam_16_0x0_0_1_2_3():
'''
| 0010 0110 | 1110 1010
@@ -95,18 +96,21 @@ def qam_16_0x0_0_1_2_3():
|
| 0000 0100 | 1100 1000
'''
- const_points = [-3-3j, -1-3j, 1-3j, 3-3j,
- -3-1j, -1-1j, 1-1j, 3-1j,
- -3+1j, -1+1j, 1+1j, 3+1j,
- -3+3j, -1+3j, 1+3j, 3+3j]
+ const_points = [-3 - 3j, -1 - 3j, 1 - 3j, 3 - 3j,
+ -3 - 1j, -1 - 1j, 1 - 1j, 3 - 1j,
+ -3 + 1j, -1 + 1j, 1 + 1j, 3 + 1j,
+ -3 + 3j, -1 + 3j, 1 + 3j, 3 + 3j]
symbols = [0x0, 0x4, 0xC, 0x8,
0x1, 0x5, 0xD, 0x9,
0x3, 0x7, 0xF, 0xB,
0x2, 0x6, 0xE, 0xA]
return (const_points, symbols)
+
+
qam_16 = qam_16_0x0_0_1_2_3
qam_16_0 = qam_16
+
def qam_16_0x1_0_1_2_3():
'''
| 0011 0111 | 1111 1011
@@ -120,8 +124,11 @@ def qam_16_0x1_0_1_2_3():
k = 0x1
pi = [0, 1, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_1 = qam_16_0x1_0_1_2_3
+
def qam_16_0x2_0_1_2_3():
'''
| 0000 0100 | 1100 1000
@@ -135,8 +142,11 @@ def qam_16_0x2_0_1_2_3():
k = 0x2
pi = [0, 1, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_2 = qam_16_0x2_0_1_2_3
+
def qam_16_0x3_0_1_2_3():
'''
| 0001 0101 | 1101 1001
@@ -150,6 +160,8 @@ def qam_16_0x3_0_1_2_3():
k = 0x3
pi = [0, 1, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_3 = qam_16_0x3_0_1_2_3
@@ -166,8 +178,11 @@ def qam_16_0x0_1_0_2_3():
k = 0x0
pi = [1, 0, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_4 = qam_16_0x0_1_0_2_3
+
def qam_16_0x1_1_0_2_3():
'''
| 0000 0100 | 1100 1000
@@ -181,8 +196,11 @@ def qam_16_0x1_1_0_2_3():
k = 0x1
pi = [1, 0, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_5 = qam_16_0x1_1_0_2_3
+
def qam_16_0x2_1_0_2_3():
'''
| 0011 0111 | 1111 1011
@@ -196,8 +214,11 @@ def qam_16_0x2_1_0_2_3():
k = 0x2
pi = [1, 0, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_6 = qam_16_0x2_1_0_2_3
+
def qam_16_0x3_1_0_2_3():
'''
| 0010 0110 | 1110 1010
@@ -211,6 +232,8 @@ def qam_16_0x3_1_0_2_3():
k = 0x3
pi = [1, 0, 2, 3]
return constellation_map_generator(qam_16()[0], qam_16()[1], k, pi)
+
+
qam_16_7 = qam_16_0x3_1_0_2_3
@@ -229,7 +252,7 @@ def sd_qam_16_0x0_0_1_2_3(x, Es=1):
| 0000 0100 | 1100 1000
'''
- dist = Es*numpy.sqrt(2)
+ dist = Es * numpy.sqrt(2)
boundary = dist / 3.0
dist0 = dist / 6.0
# print "Sample: ", x
@@ -242,26 +265,29 @@ def sd_qam_16_0x0_0_1_2_3(x, Es=1):
x_im = x.imag
if x_re < -boundary:
- b3 = boundary*(x_re + dist0)
+ b3 = boundary * (x_re + dist0)
elif x_re < boundary:
b3 = x_re
else:
- b3 = boundary*(x_re - dist0)
+ b3 = boundary * (x_re - dist0)
if x_im < -boundary:
- b1 = boundary*(x_im + dist0)
+ b1 = boundary * (x_im + dist0)
elif x_im < boundary:
b1 = x_im
else:
- b1 = boundary*(x_im - dist0)
+ b1 = boundary * (x_im - dist0)
b2 = -abs(x_re) + boundary
b0 = -abs(x_im) + boundary
- return [(Es / 2.0)*b3, (Es / 2.0)*b2, (Es / 2.0)*b1, (Es / 2.0)*b0]
+ return [(Es / 2.0) * b3, (Es / 2.0) * b2, (Es / 2.0) * b1, (Es / 2.0) * b0]
+
+
sd_qam_16 = sd_qam_16_0x0_0_1_2_3
sd_qam_16_0 = sd_qam_16
+
def sd_qam_16_0x1_0_1_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -274,29 +300,32 @@ def sd_qam_16_0x1_0_1_2_3(x, Es=1):
|
| 0001 0101 | 1101 1001
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b1 = 2*(x_im + 1)
+ b1 = 2 * (x_im + 1)
elif x_im < 2:
b1 = x_im
else:
- b1 = 2*(x_im - 1)
+ b1 = 2 * (x_im - 1)
b2 = -abs(x_re) + 2
b0 = +abs(x_im) - 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_1 = sd_qam_16_0x1_0_1_2_3
+
def sd_qam_16_0x2_0_1_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -310,29 +339,32 @@ def sd_qam_16_0x2_0_1_2_3(x, Es=1):
| 0010 0110 | 1110 1010
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b1 = -2*(x_im + 1)
+ b1 = -2 * (x_im + 1)
elif x_im < 2:
b1 = -x_im
else:
- b1 = -2*(x_im - 1)
+ b1 = -2 * (x_im - 1)
b2 = -abs(x_re) + 2
b0 = -abs(x_im) + 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_2 = sd_qam_16_0x2_0_1_2_3
+
def sd_qam_16_0x3_0_1_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -345,29 +377,32 @@ def sd_qam_16_0x3_0_1_2_3(x, Es=1):
|
| 0011 0111 | 1111 1011
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b1 = -2*(x_im + 1)
+ b1 = -2 * (x_im + 1)
elif x_im < 2:
b1 = -x_im
else:
- b1 = -2*(x_im - 1)
+ b1 = -2 * (x_im - 1)
b2 = -abs(x_re) + 2
b0 = +abs(x_im) - 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_3 = sd_qam_16_0x3_0_1_2_3
+
def sd_qam_16_0x0_1_0_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -380,29 +415,32 @@ def sd_qam_16_0x0_1_0_2_3(x, Es=1):
|
| 0000 0100 | 1100 1000
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b0 = 2*(x_im + 1)
+ b0 = 2 * (x_im + 1)
elif x_im < 2:
b0 = x_im
else:
- b0 = 2*(x_im - 1)
+ b0 = 2 * (x_im - 1)
b2 = -abs(x_re) + 2
b1 = -abs(x_im) + 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_4 = sd_qam_16_0x0_1_0_2_3
+
def sd_qam_16_0x1_1_0_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -415,29 +453,32 @@ def sd_qam_16_0x1_1_0_2_3(x, Es=1):
|
| 0001 0101 | 1101 1001
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b0 = -2*(x_im + 1)
+ b0 = -2 * (x_im + 1)
elif x_im < 2:
b0 = -x_im
else:
- b0 = -2*(x_im - 1)
+ b0 = -2 * (x_im - 1)
b2 = -abs(x_re) + 2
b1 = -abs(x_im) + 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_5 = sd_qam_16_0x1_1_0_2_3
+
def sd_qam_16_0x2_1_0_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -450,29 +491,32 @@ def sd_qam_16_0x2_1_0_2_3(x, Es=1):
|
| 0010 0110 | 1110 1010
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b0 = 2*(x_im + 1)
+ b0 = 2 * (x_im + 1)
elif x_im < 2:
b0 = x_im
else:
- b0 = 2*(x_im - 1)
+ b0 = 2 * (x_im - 1)
b2 = -abs(x_re) + 2
b1 = +abs(x_im) - 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_6 = sd_qam_16_0x2_1_0_2_3
+
def sd_qam_16_0x3_1_0_2_3(x, Es=1):
'''
| Soft bit LUT generator for constellation:
@@ -485,25 +529,27 @@ def sd_qam_16_0x3_1_0_2_3(x, Es=1):
|
| 0011 0111 | 1111 1011
'''
- x_re = 3*x.real
- x_im = 3*x.imag
+ x_re = 3 * x.real
+ x_im = 3 * x.imag
if x_re < -2:
- b3 = 2*(x_re + 1)
+ b3 = 2 * (x_re + 1)
elif x_re < 2:
b3 = x_re
else:
- b3 = 2*(x_re - 1)
+ b3 = 2 * (x_re - 1)
if x_im < -2:
- b0 = -2*(x_im + 1)
+ b0 = -2 * (x_im + 1)
elif x_im < 2:
b0 = -x_im
else:
- b0 = -2*(x_im - 1)
+ b0 = -2 * (x_im - 1)
b2 = -abs(x_re) + 2
b1 = +abs(x_im) - 2
return [b3, b2, b1, b0]
+
+
sd_qam_16_7 = sd_qam_16_0x3_1_0_2_3