Successive cancellation list (SCL) decoder for polar codes. More...
#include <gnuradio/fec/polar_decoder_sc_list.h>
| Public Member Functions | |
| ~polar_decoder_sc_list () override | |
| void | generic_work (const void *in_buffer, void *out_buffer) override | 
| Public Member Functions inherited from gr::fec::code::polar_decoder_common | |
| polar_decoder_common (int block_size, int num_info_bits, std::vector< int > frozen_bit_positions, std::vector< uint8_t > frozen_bit_values) | |
| ~polar_decoder_common () override | |
| double | rate () override | 
| int | get_input_size () override | 
| int | get_output_size () override | 
| bool | set_frame_size (unsigned int frame_size) override | 
| Public Member Functions inherited from gr::fec::generic_decoder | |
| int | unique_id () | 
| std::string | alias () | 
| generic_decoder (void) | |
| generic_decoder (std::string name) | |
| virtual | ~generic_decoder () | 
| virtual int | get_history () | 
| virtual float | get_shift () | 
| virtual int | get_input_item_size () | 
| virtual int | get_output_item_size () | 
| virtual const char * | get_input_conversion () | 
| virtual const char * | get_output_conversion () | 
| virtual float | get_iterations () | 
| Public Member Functions inherited from gr::fec::code::polar_common | |
| polar_common (int block_size, int num_info_bits, std::vector< int > frozen_bit_positions, std::vector< uint8_t > frozen_bit_values) | |
| ~polar_common () | |
| Static Public Member Functions | |
| static generic_decoder::sptr | make (int max_list_size, int block_size, int num_info_bits, std::vector< int > frozen_bit_positions, std::vector< uint8_t > frozen_bit_values) | 
| Additional Inherited Members | |
| Public Types inherited from gr::fec::generic_decoder | |
| typedef std::shared_ptr< generic_decoder > | sptr | 
| Public Attributes inherited from gr::fec::generic_decoder | |
| int | my_id | 
| std::string | d_name | 
| Static Public Attributes inherited from gr::fec::generic_decoder | |
| static int | base_unique_id | 
| Protected Member Functions inherited from gr::fec::code::polar_decoder_common | |
| float | llr_odd (const float la, const float lb) const | 
| float | llr_even (const float la, const float lb, const unsigned char f) const | 
| unsigned char | llr_bit_decision (const float llr) const | 
| bool | is_frozen_bit (const int u_num) const | 
| unsigned char | next_frozen_bit () | 
| void | initialize_decoder (unsigned char *u, float *llrs, const float *input) | 
| void | butterfly (float *llrs, unsigned char *u, const int stage, const int u_num, const int row) | 
| void | butterfly_volk (float *llrs, unsigned char *u, const int stage, const int u_num, const int row) | 
| void | butterfly_generic (float *llrs, unsigned char *u, const int stage, const int u_num, const int row) | 
| void | even_u_values (unsigned char *u_even, const unsigned char *u, const int u_num) | 
| void | odd_xor_even_values (unsigned char *u_xor, const unsigned char *u, const int u_num) | 
| void | extract_info_bits (unsigned char *output, const unsigned char *input) const | 
| void | print_pretty_llr_vector (const float *llr_vec) const | 
| Protected Member Functions inherited from gr::fec::code::polar_common | |
| int | block_size () const | 
| int | block_power () const | 
| int | num_info_bits () const | 
| long | bit_reverse (long value, int active_bits) const | 
| void | print_packed_bit_array (const unsigned char *printed_array, const int num_bytes) const | 
| void | print_unpacked_bit_array (const unsigned char *bits, const unsigned int num_bytes) const | 
| void | setup_info_bit_positions_reversed () | 
| void | setup_volk_vectors () | 
| void | volk_encode (unsigned char *out_buf, const unsigned char *in_buf) | 
| void | volk_encode_block (unsigned char *out_buf, unsigned char *in_buf) | 
| Protected Attributes inherited from gr::fec::generic_decoder | |
| gr::logger_ptr | d_logger | 
| Protected Attributes inherited from gr::fec::code::polar_common | |
| std::vector< int > | d_frozen_bit_positions | 
| std::vector< uint8_t > | d_frozen_bit_values | 
| std::vector< int > | d_info_bit_positions | 
| std::vector< int > | d_info_bit_positions_reversed | 
| volk::vector< unsigned char > | d_volk_temp | 
| volk::vector< unsigned char > | d_volk_frozen_bit_mask | 
| volk::vector< unsigned char > | d_volk_frozen_bits | 
Successive cancellation list (SCL) decoder for polar codes.
Decoder is based on Tal, Vardy "List Decoding of Polar Codes", 2012 LLR version: Balatsoukas-Stimming, Parizi, Burg "LLR-based Successive Cancellation List Decoding of Polar Codes", 2015.
Block expects float input with bits mapped 1 --> 1, 0 --> -1 Or: f = 2.0 * bit - 1.0
| 
 | override | 
| 
 | overridevirtual | 
Implements gr::fec::generic_decoder.
References gr::fec::code::polar_common::block_size(), and gr::fec::code::polar_common::num_info_bits().
| 
 | static | 
| max_list_size | caps number of followed decoding paths. | 
| block_size | codeword size. MUST be a power of 2. | 
| num_info_bits | represents the number of information bits in a block. Also called frame_size. <= block_size | 
| frozen_bit_positions | is an integer vector which defines the position of all frozen bits in a block. Its size MUST be equal to block_size - num_info_bits. Also it must be sorted and every position must only occur once. | 
| frozen_bit_values | holds an unpacked byte for every frozen bit position. It defines if a frozen bit is fixed to '0' or '1'. Defaults to all ZERO. | 
References gr::fec::code::polar_common::block_size(), and gr::fec::code::polar_common::num_info_bits().