Successive cancellation list (SCL) decoder for polar codes. More...
#include <gnuradio/fec/polar_decoder_sc_list.h>
Public Member Functions | |
~polar_decoder_sc_list () | |
void | generic_work (void *in_buffer, void *out_buffer) |
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< char > frozen_bit_values) | |
~polar_decoder_common () | |
double | rate () |
int | get_input_size () |
int | get_output_size () |
bool | set_frame_size (unsigned int frame_size) |
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< char > 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< char > frozen_bit_values) |
Additional Inherited Members | |
Public Types inherited from gr::fec::generic_decoder | |
typedef boost::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 |
const bool | is_frozen_bit (const int u_num) const |
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 | |
const int | block_size () const |
const int | block_power () const |
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< char > | d_frozen_bit_values |
std::vector< int > | d_info_bit_positions |
std::vector< int > | d_info_bit_positions_reversed |
unsigned char * | d_volk_temp |
unsigned char * | d_volk_frozen_bit_mask |
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
gr::fec::code::polar_decoder_sc_list::~polar_decoder_sc_list | ( | ) |
|
virtual |
Implements gr::fec::generic_decoder.
|
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. |