IT++ Logo
Public Member Functions | Static Public Member Functions
itpp::SISO Class Reference

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

#include <itpp/comm/siso.h>

List of all members.

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:

BPSK mapping is realized as follows: 0 -> +1 and 1 -> -1. Thus the xor truth table is preserved when multiplying BPSK symbols.

Definition at line 53 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 436 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 Soft Output Viterbi Algorithm (SOVA) is equivalent to the MAP algorithm only when the a priori information is zero.

Definition at line 452 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 457 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 468 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 482 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 502 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 519 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 525 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 530 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 536 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 541 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 556 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.

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 561 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 569 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 583 of file siso.h.

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

Sets demapper method.

Possible input values are:

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

Definition at line 594 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 606 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 599 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 641 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 634 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 668 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 658 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 690 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 714 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 735 of file siso.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SourceForge Logo

Generated on Wed Jul 27 2011 16:27:08 for IT++ by Doxygen 1.7.4