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 | |
virtual void | generic_work (void *inbuffer, void *outbuffer)=0 |
int | unique_id () |
std::string | alias () |
generic_decoder (void) | |
generic_decoder (std::string name) | |
virtual | ~generic_decoder () |
virtual double | rate ()=0 |
virtual int | get_input_size ()=0 |
virtual int | get_output_size ()=0 |
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 bool | set_frame_size (unsigned int frame_size)=0 |
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_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< 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 |
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.
|
override |
|
overridevirtual |
Implements gr::fec::generic_decoder.
|
static |
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. |