IT++ Logo
Public Member Functions | Static Public Member Functions | List of all members
itpp::SISO Class Reference

Soft Input Soft Output (SISO) modules. More...

#include <itpp/comm/siso.h>

Public Member Functions

 SISO ()
 SISO class constructor
 
void set_map_metric (const std::string &in_MAP_metric)
 Sets the metric for MAP algorithm (convolutional codes and multipath channels)
 
void set_precoder_generator (const itpp::bvec &in_prec_gen)
 Sets the precoder generator polynomial for turbo equalizer.
 
void set_precoder_generator (const int &in_prec_gen, const int &constraint_length)
 
void set_generators (const itpp::bmat &in_gen)
 Sets convolutional code generator polynomials.
 
void set_generators (const itpp::ivec &in_gen, const int &constraint_length)
 
void set_tail (const bool &in_tail)
 Signals whether the trellis used in the MAP algorithm is terminated or not (only for convolutional codes and multipath channels)
 
void set_viterbi_win_len (const int &win_len)
 Sets the length of the trellis used by the SOVA.
 
void set_sova_scaling_factor (const double &scaling_factor)
 Sets the scaling factor used to normalize the reliability value computed by the SOVA.
 
void set_sova_threshold (const double &threshold)
 Sets the threshold value used to limit the reliability value computed by SOVA.
 
void set_viterbi_scaling_factors (const double &matching_scaling_factor, const double &nonmatching_scaling_factor)
 Sets the Viterbi algorithm scaling factors.
 
void set_viterbi_hard_output_flag (const bool &flag)
 Sets the Viterbi algorithm hard output flag (true when only the hard output is needed)
 
void set_noise (const double &in_sigma2)
 Sets Additive White Gaussian Noise variance for each dimension.
 
void set_impulse_response (const itpp::vec &h)
 Sets channel impulse response for equalizer.
 
void set_impulse_response (const itpp::mat &H)
 Sets channel impulse response for Multi-User Detectors.
 
void set_impulse_response (const itpp::cvec &h)
 Sets the channel attenuations for demappers (when only a modulator is used)
 
void set_impulse_response (const itpp::cmat &cH)
 Sets channel attenuations for demappers (when Space-Time codes are used)
 
void set_scrambler_pattern (const itpp::vec &phi)
 Sets scrambler pattern.
 
void set_scrambler_pattern (const itpp::bvec &phi)
 
void set_mud_method (const std::string &method)
 Sets Multi-User Detector method.
 
void set_constellation (const int &in_nb_bits_symb, const itpp::cvec &in_constellation, const itpp::bmat &in_bin_constellation)
 Sets symbol constellation.
 
void set_constellation (const int &in_nb_bits_symb, const itpp::cvec &in_constellation, const itpp::ivec &in_int_constellation)
 
void set_st_block_code (const int &Q, const itpp::cmat &A, const itpp::cmat &B, const int &N)
 Sets Space-Time block code parameters.
 
void set_demapper_method (const std::string &method)
 Sets demapper method.
 
void rsc (itpp::vec &extrinsic_coded, itpp::vec &extrinsic_data, const itpp::vec &intrinsic_coded, const itpp::vec &apriori_data)
 SISO decoder for RSC codes
 
void rsc (itpp::vec &extrinsic_coded, itpp::vec &extrinsic_data, const itpp::vec &intrinsic_coded, const itpp::vec &apriori_data, const bool &tail)
 SISO decoder for RSC codes (tail is set through input)
 
void nsc (itpp::vec &extrinsic_coded, itpp::vec &extrinsic_data, const itpp::vec &intrinsic_coded, const itpp::vec &apriori_data)
 SISO decoder for NSC codes
 
void nsc (itpp::vec &extrinsic_coded, itpp::vec &extrinsic_data, const itpp::vec &intrinsic_coded, const itpp::vec &apriori_data, const bool &tail)
 SISO decoder for NSC codes (tail is set through input)
 
void equalizer (itpp::vec &extrinsic_data, const itpp::vec &rec_sig, const itpp::vec &apriori_data)
 SISO equalizer
 
void equalizer (itpp::vec &extrinsic_data, const itpp::vec &rec_sig, const itpp::vec &apriori_data, const bool &tail)
 SISO equalizer (tail is set through input)
 
void descrambler (itpp::vec &extrinsic_coded, itpp::vec &extrinsic_data, const itpp::vec &intrinsic_coded, const itpp::vec &apriori_data)
 SISO descrambler
 
void mud (itpp::mat &extrinsic_data, const itpp::vec &rec_sig, const itpp::mat &apriori_data)
 SISO Multi-User Detector
 
void demapper (itpp::vec &extrinsic_data, const itpp::cvec &rec_sig, const itpp::vec &apriori_data)
 SISO demapper (when only a modulator is used)
 
void demapper (itpp::vec &extrinsic_data, const itpp::cmat &rec_sig, const itpp::vec &apriori_data)
 SISO demapper (when Space-Time codes are used)
 

Static Public Member Functions

static double threshold (const double &x, const double &value)
 Functions used to limit values at a given +- threshold.
 
static itpp::vec threshold (const itpp::vec &in, const double &value)
 
static itpp::mat threshold (const itpp::mat &in, const double &value)
 

Detailed Description

Soft Input Soft Output (SISO) modules.

The following SISO modules are implemented:

Definition at line 71 of file siso.h.

Constructor & Destructor Documentation

itpp::SISO::SISO ( )
inline

SISO class constructor

Internal variables are initialized with default values:

  • the trellis used in MAP algorithm is not terminated
  • maxlogMAP metric is used
  • simplified GCD is selected
  • no scrambler is used
  • GA demapper is selected, etc.

Definition at line 495 of file siso.h.

Member Function Documentation

void itpp::SISO::set_map_metric ( const std::string &  in_MAP_metric)
inline

Sets the metric for MAP algorithm (convolutional codes and multipath channels)

Possible input values are:

  • logMAP
  • maxlogMAP
  • SOVA
  • Viterbi
Note
Soft Output Viterbi Algorithm (SOVA) is equivalent to the MAP algorithm only when the a priori information is zero.

Definition at line 574 of file siso.h.

void itpp::SISO::set_precoder_generator ( const itpp::bvec &  in_prec_gen)
inline

Sets the precoder generator polynomial for turbo equalizer.

The precoder is used in turbo equalization. The generator polynomial describes the feedback connections of the precoder.

Definition at line 579 of file siso.h.

void itpp::SISO::set_generators ( const itpp::bmat in_gen)
inline

Sets convolutional code generator polynomials.

The generator polynomials are specified as rows of the input binary matrix.

Definition at line 590 of file siso.h.

void itpp::SISO::set_tail ( const bool &  in_tail)
inline

Signals whether the trellis used in the MAP algorithm is terminated or not (only for convolutional codes and multipath channels)

If the input value is true, the trellis is terminated. In order to terminate the trellis an ending bit tail is added to the input stream of the encoder.

Definition at line 604 of file siso.h.

Referenced by equalizer(), nsc(), and rsc().

void itpp::SISO::set_viterbi_scaling_factors ( const double &  matching_scaling_factor,
const double &  nonmatching_scaling_factor 
)
inline

Sets the Viterbi algorithm scaling factors.

Parameters
matching_scaling_factorscaling factor for matching bits
nonmatching_scaling_factorscaling factor for non matching bits

Definition at line 624 of file siso.h.

void itpp::SISO::set_impulse_response ( const itpp::vec &  h)
inline

Sets channel impulse response for equalizer.

The input is a real channel impulse response.

Definition at line 641 of file siso.h.

void itpp::SISO::set_impulse_response ( const itpp::mat &  H)
inline

Sets channel impulse response for Multi-User Detectors.

The input is a real matrix with each row represented by the channel impulse response of one user.

Definition at line 647 of file siso.h.

void itpp::SISO::set_impulse_response ( const itpp::cvec &  h)
inline

Sets the channel attenuations for demappers (when only a modulator is used)

The input is the vector of channel attenuations for each received symbol

Definition at line 652 of file siso.h.

void itpp::SISO::set_impulse_response ( const itpp::cmat &  cH)
inline

Sets channel attenuations for demappers (when Space-Time codes are used)

The input is a complex matrix of dimension $MN\times tx\_duration$, where $M$ and $N$ is the number of emission and reception antennas, respectively and $tx\_duration$ is the transmission duration expressed in symbol durations.

This input matrix is formed as follows:

  • the starting point is an $M\times N$ complex matrix (channel matrix) with one row represented by the atenuations seen by each of $N$ reception antennas during one symbol duration, when the signal is emitted by a given emission antenna. The row number represents the number of emission antenna.
  • the $M\times N$ channel matrix is then transformed into a vector of length $MN$, with the first $M$ elements the first column of the channel matrix
  • the vector of length $MN$ represents one column of the input matrix
  • in the input matrix, the vector is repeated $\tau_c$ times and $tx\_duration/\tau_c$ different vectors are used. Thus, the channel is supposed constant over $\tau_c$ symbol durations (channel coherence time) and $tx\_duration/\tau_c$ different channel realisations are used.
  • in our implementation $\tau_c$ must be and integer multiple of $T$, where $T$ is the ST block code duration expressed in symbol durations. This means that the channel matrix must be constant over at least $T$ symbol durations.

Definition at line 658 of file siso.h.

void itpp::SISO::set_scrambler_pattern ( const itpp::vec &  phi)
inline

Sets scrambler pattern.

The scrambler pattern must be a sequence of $\pm1$ and is used by the SISO NSC module in IDMA systems reception. At emission side the bits are first encoded by an NSC code, BPSK modulated and then scrambled with the given pattern.

Definition at line 663 of file siso.h.

void itpp::SISO::set_mud_method ( const std::string &  method)
inline

Sets Multi-User Detector method.

Possible input values are:

  • maxlogMAP
  • GCD
  • sGCD (simplified GCD)

Definition at line 678 of file siso.h.

void itpp::SISO::set_constellation ( const int &  in_nb_bits_symb,
const itpp::cvec &  in_constellation,
const itpp::bmat in_bin_constellation 
)
inline

Sets symbol constellation.

The correspondence between each symbol and its binary representation is given. Note that if the symbols are normalized to the square root of the number of emission antenna you should use the normalized constellation as input for this method.

Parameters
in_nb_bits_symbthe number of symbols
in_constellationall possible symbols as a complex vector
in_bin_constellationbinary representations of symbols as a binary matrix (each row corresponds to one symbol)

Definition at line 683 of file siso.h.

void itpp::SISO::set_constellation ( const int &  in_nb_bits_symb,
const itpp::cvec &  in_constellation,
const itpp::ivec &  in_int_constellation 
)
inline
Parameters
in_nb_bits_symbthe number of symbols
in_constellationall possible symbols as a complex vector
in_int_constellationinteger representations of symbols as a vector

Definition at line 691 of file siso.h.

References itpp::dec2bin().

void itpp::SISO::set_st_block_code ( const int &  Q,
const itpp::cmat &  A,
const itpp::cmat &  B,
const int &  N 
)
inline

Sets Space-Time block code parameters.

ST block codes are generated using Hassibi's model.

Parameters
Qthe number of symbols per block
Agenerator matrices
Bof the ST block code
Nthe number of reception antennas

Definition at line 705 of file siso.h.

void itpp::SISO::set_demapper_method ( const std::string &  method)
inline

Sets demapper method.

Possible input values are:

  • Hassibi_maxlogMAP (maxlogMAP algorithm applied for ST block codes represented using Hassibi's model)
  • GA
  • sGA (simplified GA)
  • mmsePIC
  • zfPIC (simplified mmsePIC)
  • Alamouti_maxlogMAP (maxlogMAP algorithm applied to Alamouti code using matched-filter reception method)

Definition at line 716 of file siso.h.

void itpp::SISO::rsc ( itpp::vec &  extrinsic_coded,
itpp::vec &  extrinsic_data,
const itpp::vec &  intrinsic_coded,
const itpp::vec &  apriori_data 
)
inline

SISO decoder for RSC codes

Parameters
extrinsic_codedextrinsic information of coded bits
extrinsic_dataextrinsic information of data bits
intrinsic_codedintrinsic information of coded bits
apriori_dataa priori information of data bits

Definition at line 728 of file siso.h.

Referenced by rsc().

void itpp::SISO::rsc ( itpp::vec &  extrinsic_coded,
itpp::vec &  extrinsic_data,
const itpp::vec &  intrinsic_coded,
const itpp::vec &  apriori_data,
const bool &  tail 
)
inline

SISO decoder for RSC codes (tail is set through input)

Parameters
extrinsic_codedextrinsic information of coded bits
extrinsic_dataextrinsic information of data bits
intrinsic_codedintrinsic information of coded bits
apriori_dataa priori information of data bits
tailif true the trellis is terminated

Definition at line 721 of file siso.h.

References rsc(), and set_tail().

void itpp::SISO::nsc ( itpp::vec &  extrinsic_coded,
itpp::vec &  extrinsic_data,
const itpp::vec &  intrinsic_coded,
const itpp::vec &  apriori_data 
)
inline

SISO decoder for NSC codes

Parameters
extrinsic_codedextrinsic information of coded bits
extrinsic_dataextrinsic information of data bits
intrinsic_codedintrinsic information of coded bits
apriori_dataa priori information of data bits

Definition at line 763 of file siso.h.

Referenced by nsc().

void itpp::SISO::nsc ( itpp::vec &  extrinsic_coded,
itpp::vec &  extrinsic_data,
const itpp::vec &  intrinsic_coded,
const itpp::vec &  apriori_data,
const bool &  tail 
)
inline

SISO decoder for NSC codes (tail is set through input)

Parameters
extrinsic_codedextrinsic information of coded bits
extrinsic_dataextrinsic information of data bits
intrinsic_codedintrinsic information of coded bits
apriori_dataa priori information of data bits
tailif true the trellis is terminated

Definition at line 756 of file siso.h.

References nsc(), and set_tail().

void itpp::SISO::equalizer ( itpp::vec &  extrinsic_data,
const itpp::vec &  rec_sig,
const itpp::vec &  apriori_data 
)
inline

SISO equalizer

Channel trellis is generated so that BPSK mapping is assumed: 0->+1 and 1->-1 (xor truth table is preserved)

Parameters
extrinsic_dataextrinsic informations of input symbols
rec_sigreceived signal
apriori_dataa priori informations of input symbols

Definition at line 790 of file siso.h.

Referenced by equalizer().

void itpp::SISO::equalizer ( itpp::vec &  extrinsic_data,
const itpp::vec &  rec_sig,
const itpp::vec &  apriori_data,
const bool &  tail 
)
inline

SISO equalizer (tail is set through input)

Channel trellis is generated so that BPSK mapping is assumed: 0->+1 and 1->-1 (xor truth table is preserved)

Parameters
extrinsic_dataextrinsic informations of input symbols
rec_sigreceived signal
apriori_dataa priori informations of input symbols
tailif true the trellis is terminated

Definition at line 780 of file siso.h.

References equalizer(), and set_tail().

void itpp::SISO::descrambler ( itpp::vec &  extrinsic_coded,
itpp::vec &  extrinsic_data,
const itpp::vec &  intrinsic_coded,
const itpp::vec &  apriori_data 
)

SISO descrambler

Parameters
extrinsic_codedextrinsic information of scrambled bits
extrinsic_dataextrinsic information of informational bits
intrinsic_codedintrinsic information of scrambled bits
apriori_dataa priori information of informational bits

Definition at line 37 of file siso_mud.cpp.

void itpp::SISO::mud ( itpp::mat &  extrinsic_data,
const itpp::vec &  rec_sig,
const itpp::mat &  apriori_data 
)
inline

SISO Multi-User Detector

Parameters
extrinsic_dataextrinsic informations of emitted chips from all users
rec_sigreceived signal
apriori_dataa priori informations of emitted chips from all users

Definition at line 812 of file siso.h.

void itpp::SISO::demapper ( itpp::vec &  extrinsic_data,
const itpp::cvec &  rec_sig,
const itpp::vec &  apriori_data 
)
inline

SISO demapper (when only a modulator is used)

Parameters
extrinsic_dataextrinsic informations of emitted bits
rec_sigreceived signal
apriori_dataa priori informations of emitted bits

Definition at line 836 of file siso.h.

void itpp::SISO::demapper ( itpp::vec &  extrinsic_data,
const itpp::cmat &  rec_sig,
const itpp::vec &  apriori_data 
)
inline

SISO demapper (when Space-Time codes are used)

Parameters
extrinsic_dataextrinsic informations of emitted bits
rec_sigreceived signal
apriori_dataa priori informations of emitted bits

Definition at line 857 of file siso.h.


The documentation for this class was generated from the following files:
SourceForge Logo

Generated on Sat Jul 6 2013 10:54:33 for IT++ by Doxygen 1.8.2