Loading...
Searching...
No Matches
gr::fec::code::polar_decoder_sc_list Class Reference

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

## Detailed Description

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

## Constructor & Destructor Documentation

## ~polar_decoder_sc_list()

gr::fec::code::polar_decoder_sc_list::~polar_decoder_sc_list | ( |  | ) |

override

## Member Function Documentation

## generic_work()

void gr::fec::code::polar_decoder_sc_list::generic_work | ( | const void * | in_buffer,
|  | void * | out_buffer )

override virtual

Implements gr::fec::generic_decoder.

References gr::fec::code::polar_common::block_size(), and gr::fec::code::polar_common::num_info_bits().

## make()

generic_decoder::sptr gr::fec::code::polar_decoder_sc_list::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 )

static

Parameters

  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().

The documentation for this class was generated from the following file:

- polar_decoder_sc_list.h