Constellation Object: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Block Docs]]
GNU Radio supports the creation and use of Constellation objects for many of its digital communications needs. We define these constellations with a set of constellation points in complex space and the symbol mappings to those points. For a constellation that has 4 symbols, it then has log2(4) = 2 bits/symbol. We define this constellation with a list of Constellation Points and Symbol Map.  For example, 16QAM would have:
GNU Radio supports the creation and use of Constellation objects for many of its digital communications needs. We define these constellations with a set of constellation points in complex space and the symbol mappings to those points. For a constellation that has 4 symbols, it then has log2(4) = 2 bits/symbol. We define this constellation with a list of Constellation Points and Symbol Map.  For example, 16QAM would have:


Line 8: Line 9:
See [https://www.gnuradio.org/doc/doxygen/page_digital.html] for more info.
See [https://www.gnuradio.org/doc/doxygen/page_digital.html] for more info.


== Parameters ==


== Parameters ==
; Constellation Type
'''
: Type of modulation scheme.  Choose Variable Constellation for more control.
Constellation Type''' - Type of modulation scheme.  Choose Variable Constellation for more control.


'''Soft Decisions Precision''' - Specifies how accurate the look up table (LUT) is to a given number of bits.
; Soft Decisions Precision
: Specifies how accurate the look up table (LUT) is to a given number of bits.


'''Soft Decisions LUT''' - Vector of floating point tuples that acts as the look up table (LUT). Can be set to 'auto' for GNU Radio to populate it.  
; Soft Decisions LUT
: Vector of floating point tuples that acts as the look up table (LUT). Can be set to 'auto' for GNU Radio to populate it.  


'''Symbol Map''' - (Available when using Variable Constellation) Manually specify the symbol map, in list form.  
; Symbol Map
: (Available when using Variable Constellation) Manually specify the symbol map (in pre-diff values) in list form. For manually defined symbols in QPSK, symbols start in quadrant 1 and proceeding counterclockwise (standardvalues are sometimes in different order). 8PSK symbols start at (0.92,0.38) and proceed in the nonsensical order of Pi/8 times: 1, 7, 15, 9, 3, 5, 13, 11. So symbols [0,1,2,3,4,5,6,7] become 0, 4, 5, 1, 3, 7, 6, 2, counterclockwise from (0.92,0.38).


'''Constellation Points''' - (Available when using Variable Constellation) Manually specify the constellation points, using a list of complex numbers.  
; Constellation Points
: (Available when using Variable Constellation) Manually specify the constellation points, using a list of complex numbers.  


'''Rotational Symmetry''' - (Available when using Variable Constellation) The number of rotations per 360 degrees that the constellation is symmetric, which is 4 for the common constellations.
; Rotational Symmetry
: (Available when using Variable Constellation) The number of rotations per 360 degrees that the constellation is symmetric, which is 4 for the common constellations. Unclear if this affects anything other than some tests in qa_constellation.py.


'''Dimensionality''' - (Available when using Variable Constellation) The number of dimensions, typically set to 1.
; Dimensionality
: (Available when using Variable Constellation) The number of dimensions, typically set to 1.


== Example Flowgraph ==
== Example Flowgraph ==
Line 30: Line 37:


[[File:constellation_soft_decoder_ex.png|800px]]
[[File:constellation_soft_decoder_ex.png|800px]]
== Source Files ==
; C++ files
: [https://github.com/gnuradio/gnuradio/blob/0fa281fd7369348dbdeadcecfebb20b73082e93e/gr-digital/lib/constellation.cc see middle of this page]
; Header files
: [https://github.com/gnuradio/gnuradio TODO]
; Public header files
: [https://github.com/gnuradio/gnuradio/blob/0fa281fd7369348dbdeadcecfebb20b73082e93e/gr-digital/include/gnuradio/digital/constellation.h Here]
; Block definition
: TODO

Revision as of 19:00, 20 September 2021

GNU Radio supports the creation and use of Constellation objects for many of its digital communications needs. We define these constellations with a set of constellation points in complex space and the symbol mappings to those points. For a constellation that has 4 symbols, it then has log2(4) = 2 bits/symbol. We define this constellation with a list of Constellation Points and Symbol Map. For example, 16QAM would have:

Constellation 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)]
Symbol Map = [0, 4, 12, 8, 1, 5, 13, 9, 3, 7, 15, 11, 2, 6, 14, 10]

The mapping is a 1-to-1 for the items in both lists. The symbols are referred to as the 'pre_diff_code' since this is the mapping before the application of differential modulation, if used.

See [1] for more info.

Parameters

Constellation Type
Type of modulation scheme. Choose Variable Constellation for more control.
Soft Decisions Precision
Specifies how accurate the look up table (LUT) is to a given number of bits.
Soft Decisions LUT
Vector of floating point tuples that acts as the look up table (LUT). Can be set to 'auto' for GNU Radio to populate it.
Symbol Map
(Available when using Variable Constellation) Manually specify the symbol map (in pre-diff values) in list form. For manually defined symbols in QPSK, symbols start in quadrant 1 and proceeding counterclockwise (standardvalues are sometimes in different order). 8PSK symbols start at (0.92,0.38) and proceed in the nonsensical order of Pi/8 times: 1, 7, 15, 9, 3, 5, 13, 11. So symbols [0,1,2,3,4,5,6,7] become 0, 4, 5, 1, 3, 7, 6, 2, counterclockwise from (0.92,0.38).
Constellation Points
(Available when using Variable Constellation) Manually specify the constellation points, using a list of complex numbers.
Rotational Symmetry
(Available when using Variable Constellation) The number of rotations per 360 degrees that the constellation is symmetric, which is 4 for the common constellations. Unclear if this affects anything other than some tests in qa_constellation.py.
Dimensionality
(Available when using Variable Constellation) The number of dimensions, typically set to 1.

Example Flowgraph

This flowgraph generates symbols using a chosen modulation scheme, runs the signal through a channel model, and then simulates a receiver by synchronizing to the signal and performing soft decoding.

Constellation soft decoder ex.png

Source Files

C++ files
see middle of this page
Header files
TODO
Public header files
Here
Block definition
TODO