Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

SPUC::Rec_Syst_Conv_Code Class Reference
[Forward Error Correcting Codes]

A Recursive Systematic Convolutional Encoder/Decoder class. More...

#include <rec_syst_conv_code.h>

List of all members.

Public Member Functions

 Rec_Syst_Conv_Code (void)
 Class constructor.
void set_generator_polynomials (const ivec &gen, int constraint_length)
 Set generator polynomials.
void set_awgn_channel_parameters (double in_Ec, double in_N0)
 Sets the channel parameters needed for MAP-decoding.
void set_scaling_factor (double in_Lc)
 Set scaling factor for the decoder.
void encode_tail (const bvec &input, bvec &tail, bmat &parity_bits)
 Encode a binary vector of inputs and also adds a tail of K-1 zeros to force the encoder into the zero state.
void encode (const bvec &input, bmat &parity_bits)
 Encode a binary vector of inputs starting from zero state without adding of a tail.
void map_decode (const vec &rec_systematic, const mat &rec_parity, const vec &extrinsic_input, vec &extrinsic_output, bool set_terminated=false)
 Maximum Aposteriori Probability symbol-by-symbol decoder.
void log_decode (const vec &rec_systematic, const mat &rec_parity, const vec &extrinsic_input, vec &extrinsic_output, bool set_terminated=false, string metric="LOGMAX")
 Log domain implementation of the Maximum Aposteriori Probability symbol-by-symbol decoder.
void log_decode_n2 (const vec &rec_systematic, const vec &rec_parity, const vec &extrinsic_input, vec &extrinsic_output, bool in_terminated=false, string metric="LOGMAX")
 Special Log-MAP/Log-MAX decoder implementation for n = 2.


Detailed Description

A Recursive Systematic Convolutional Encoder/Decoder class.

The main purpose of this class is its use un the Turbo_Codec class which uses two recursive systematic convolutional encoders. It can however be used as a stand alone class. The map_decode member function implementation follows the paper "A Turbo Code Tutorial" by William E. Ryan, New Mexico State University. This paper was found on the web and is probably unpublished.


Constructor & Destructor Documentation

SPUC::Rec_Syst_Conv_Code::Rec_Syst_Conv_Code void   )  [inline]
 

Class constructor.


Member Function Documentation

void Rec_Syst_Conv_Code::encode const bvec &  input,
bmat &  parity_bits
 

Encode a binary vector of inputs starting from zero state without adding of a tail.

void Rec_Syst_Conv_Code::encode_tail const bvec &  input,
bvec &  tail,
bmat &  parity_bits
 

Encode a binary vector of inputs and also adds a tail of K-1 zeros to force the encoder into the zero state.

The encoder remembers that the trellis is terminated in the zero state at the end of the input block. This is then utilized by the decoder when going through the trellis in the reverse direction. The tailbits used are returned in tail. Parity bits for both the input part and the tail part of the data are returned in the matrix parity bits.

void Rec_Syst_Conv_Code::log_decode const vec &  rec_systematic,
const mat &  rec_parity,
const vec &  extrinsic_input,
vec &  extrinsic_output,
bool  set_terminated = false,
string  metric = "LOGMAX"
 

Log domain implementation of the Maximum Aposteriori Probability symbol-by-symbol decoder.

The extrinsic_input is the a priori information on each systematic bit. If no a priori information is availiable, this vector should contain only zeros. The extrinsic_output term may be passed to a subsequent decoder in a Turbo scheme. The decision variable is

 L = Lc*rec_systematic + extrinsic_output 
where
 Lc = 4*sqrt(Ec)/N0 

Parameters:
rec_systematic Including both systematic bits and tail bits (if any)
rec_parity Matrix including all parity bits from all polynomials as well as parity bits from the tail (if terminated)
extrinsic_input For all systematic bits
extrinsic_output For all systematic bits
set_terminated Equal to true if the trellis was terminated by the encoder and false otherwise
metric May be "LOGMAP" or "LOGMAX" (default)

void Rec_Syst_Conv_Code::log_decode_n2 const vec &  rec_systematic,
const vec &  rec_parity,
const vec &  extrinsic_input,
vec &  extrinsic_output,
bool  in_terminated = false,
string  metric = "LOGMAX"
 

Special Log-MAP/Log-MAX decoder implementation for n = 2.

Parameters:
rec_systematic Including both systematic bits and tail bits (if any)
rec_parity Matrix including all parity bits from all polynomials as well as parity bits from the tail (if terminated)
extrinsic_input For all systematic bits
extrinsic_output For all systematic bits
in_terminated Equal to true if the trellis was terminated by the encoder and false otherwise
metric May be "LOGMAP" or "LOGMAX" (default)

void Rec_Syst_Conv_Code::map_decode const vec &  rec_systematic,
const mat &  rec_parity,
const vec &  extrinsic_input,
vec &  extrinsic_output,
bool  set_terminated = false
 

Maximum Aposteriori Probability symbol-by-symbol decoder.

The extrinsic_input is the a priori information on each systematic bit. If no a priori information is availiable, this vector should contain only zeros. The extrinsic_output term may be passed to a subsequent decoder in a Turbo scheme. The decision variable is

 L = Lc*rec_systematic + extrinsic_output 
where
 Lc = 4*sqrt(Ec)/N0 

Parameters:
rec_systematic Including both systematic bits and tail bits (if any)
rec_parity Matrix including all parity bits from all polynomials as well as parity bits from the tail (if terminated)
extrinsic_input For all systematic bits
extrinsic_output For all systematic bits
set_terminated Equal to true if the trellis was terminated by the encoder and false otherwise

void Rec_Syst_Conv_Code::set_awgn_channel_parameters double  in_Ec,
double  in_N0
 

Sets the channel parameters needed for MAP-decoding.

Parameters:
in_Ec is the energy per channel symbol
in_N0 is the single-sided power spectral density of the AWGN on the channel.

void Rec_Syst_Conv_Code::set_generator_polynomials const ivec &  gen,
int  constraint_length
 

Set generator polynomials.

The generator polynomials are given in Proakis integer form. First generator (gen(0)) is the recursive polynomial.

Parameters:
gen A vector containing the generator polynomials of the RSC Code.
constraint_length The Constraing length of the encoder.

void Rec_Syst_Conv_Code::set_scaling_factor double  in_Lc  ) 
 

Set scaling factor for the decoder.

Parameters:
in_Lc is the channel reliability factor (i.e. Lc = 4 x sqrt( Ec ) / N0)


The documentation for this class was generated from the following files:
Generated on Fri Sep 16 11:08:06 2005 for spuc by  doxygen 1.4.4