GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
gr::fec::code::polar_decoder_sc_systematic Class Reference

Standard systematic successive cancellation (SC) decoder for POLAR codes. More...

#include <gnuradio/fec/polar_decoder_sc_systematic.h>

Public Member Functions

 ~polar_decoder_sc_systematic () override
 
void generic_work (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 block_size, int num_info_bits, std::vector< int > frozen_bit_positions)
 

Additional Inherited Members

- Public Types inherited from gr::fec::generic_decoder
typedef std::shared_ptr< generic_decodersptr
 
- 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< 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

Standard systematic successive cancellation (SC) decoder for POLAR codes.

It expects float input with bits mapped 1 --> 1, 0 --> -1 Or: f = 2.0 * bit - 1.0

Systematic encoding indicates that the info bit values are present in the codeword. 'info_bit_positions' may be obtained by ordering all non frozen_bit_positions in increasing order. One may extract them at their positions after a bit reversal operation. encoder -> decoder chain would need additional bit-reversal after encoding + before decoding. This is unnecessary.

Constructor & Destructor Documentation

◆ ~polar_decoder_sc_systematic()

gr::fec::code::polar_decoder_sc_systematic::~polar_decoder_sc_systematic ( )
override

Member Function Documentation

◆ generic_work()

void gr::fec::code::polar_decoder_sc_systematic::generic_work ( void *  in_buffer,
void *  out_buffer 
)
overridevirtual

◆ make()

static generic_decoder::sptr gr::fec::code::polar_decoder_sc_systematic::make ( int  block_size,
int  num_info_bits,
std::vector< int >  frozen_bit_positions 
)
static
Parameters
block_sizecodeword size. MUST be a power of 2.
num_info_bitsrepresents the number of information bits in a block. Also called frame_size. <= block_size
frozen_bit_positionsis 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.

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