SPUC  3.0
Classes | Functions
Communication classes And functions
Collaboration diagram for Communication classes And functions:

Classes

class  SPUC::base_demod< Numeric >
 base class for a demodulator (not currently used?) More...
 
class  SPUC::bit_scrambler
 Data scrambler. More...
 
class  SPUC::bpe< Numeric, Coeff >
 Block Phase Estimator. More...
 
class  SPUC::carrier_nco
 A specialization example of a sin/cosine look-up NCO. More...
 
class  SPUC::data_conv_encoder
 Convolutional encoder for punctured encoding. More...
 
class  SPUC::dqpsk
 Differential QPSK encoder/decoder. More...
 
class  SPUC::dvb_conv_encoder
 DVB Convolution encode for rate 1/2. More...
 
class  SPUC::fading_channel
 
class  SPUC::lms_dfe< Numeric, Coeff >
 Template Class for LMS Decision Feedback equalizer. More...
 
class  SPUC::mle< Numeric >
 A Configurable Maximum Likelihood Sequence Estimator Class. More...
 
class  SPUC::ofdm_data_encoder
 OFDM/802.11A/G Data Encoder. More...
 
class  SPUC::qam_conv_decoder
 QAM convolutional decoder. More...
 
class  SPUC::qam_mod
 QAM Modulator for BPSK - 64 QAM for 802.11A Data modulation. More...
 
class  SPUC::qam_tx< Numeric >
 Class for QAM transmitter using a root raised cosine transmit filter. More...
 
class  SPUC::qpsk< Numeric >
 A QPSK receiver that can operate at exactly 2 samples/symbol. More...
 
class  SPUC::qpsk_discriminators
 A Class incorporating several symbol and carrier discriminators for QPSK. More...
 
class  SPUC::qpsk_variable< Numeric >
 A QPSK receiver that can operate over a range of non-integer sampling rates. More...
 
class  SPUC::quad_data< Numeric >
 Class for QPSK data using a root raised cosine transmit filter. More...
 
class  SPUC::rls< Numeric >
 Recursive Least Squares Algorithm. More...
 
class  SPUC::viterbi
 A Viterbi decoder (for DVB) More...
 

Functions

template<class T >
SPUC::bpsk_dd_phase (complex< T > curr, complex< T > hard_data)
 Decision directed carrier phase discriminator for BPSK. More...
 
template<class T >
SPUC::bpsk_quadricorrelator (complex< T > hard_data, complex< T > prev)
 BPSK Quadricorrelator frequency discriminator. More...
 
template<class T >
SPUC::cp_afc (complex< T > prev, complex< T > curr)
 Cross-Product frequency discriminator. More...
 
template<class T >
SPUC::dd_symbol (complex< T > prev, complex< T > curr, complex< T > prev_hard_data, complex< T > hard_data)
 Decision directed timing discriminator (QPSK) More...
 
template<class T >
SPUC::nda_symbol (complex< T > prev, complex< T > curr)
 Non-decision aided timing discriminator (Gardiner's algorithm) More...
 
void SPUC::qam_data_demap (long rate_index, complex< long > data_in, long soft_decision_level, std::vector< long > &viterbi_input)
 Soft-decision QAM Demapper for use with QAM_MOD class. More...
 
void SPUC::bpsk_soft_decision (complex< long > data_in, std::vector< long > &viterbi_input)
 BPSK data demapping. More...
 
void SPUC::qpsk_soft_decision (complex< long > data_in, std::vector< long > &viterbi_input)
 QPSK data demapping. More...
 
void SPUC::qam16_soft_decision (complex< long > data_in, long soft_decision_level, std::vector< long > &viterbi_input)
 16-QAM data demapping More...
 
void SPUC::qam64_soft_decision (complex< long > data_in, long soft_decision_level, std::vector< long > &viterbi_input)
 64-QAM data demapping More...
 
template<class T >
SPUC::qpsk_dd_phase (complex< T > curr, complex< T > hard_data)
 Decision directed carrier phase discriminator for QPSK. More...
 
template<class T >
SPUC::qpsk_quadricorrelator (complex< T > hard_data, complex< T > prev)
 
template<class T >
SPUC::qpsk_rcfd (complex< T > fmf, complex< T > curr)
 
template<class T >
void SPUC::raised_cosine (fir_coeff< T > &rcfir, float_type alpha, float_type rate)
 Raised Cosine functions. More...
 
template<class T >
void SPUC::root_raised_cosine_quantized (fir_coeff< T > &rcfir, float_type alpha, int rate, int bits, float_type scale)
 Root Raised Cosine functions. More...
 

Detailed Description

Function Documentation

template<class T >
T SPUC::bpsk_dd_phase ( complex< T >  curr,
complex< T >  hard_data 
)

Decision directed carrier phase discriminator for BPSK.

Runs at the symbol rate Curr - current symbol Hard_data - Hard decision for current symbol

Author
Tony Kirke

Referenced by SPUC::qpsk_discriminators::pll_disc().

template<class T >
T SPUC::bpsk_quadricorrelator ( complex< T >  hard_data,
complex< T >  prev 
)

BPSK Quadricorrelator frequency discriminator.

Hard_data - Hard decision (complex) data for current symbol Prev - Previous symbol (prior to hard decision)

Author
Tony Kirke
void SPUC::bpsk_soft_decision ( complex< long >  data_in,
std::vector< long > &  viterbi_input 
)

BPSK data demapping.

Author
Tony Kirke

Referenced by SPUC::qam_data_demap().

template<class T >
T SPUC::cp_afc ( complex< T >  prev,
complex< T >  curr 
)

Cross-Product frequency discriminator.

Prev - previous symbol Curr - current symbol

Author
Tony Kirke

Referenced by SPUC::qpsk_discriminators::cross_prod_afc().

template<class T >
T SPUC::dd_symbol ( complex< T >  prev,
complex< T >  curr,
complex< T >  prev_hard_data,
complex< T >  hard_data 
)

Decision directed timing discriminator (QPSK)

Runs at the symbol rate Curr - current symbol Hard_data - Hard decision for current symbol Prev - Previous symbol Prev_Hard_data - Hard decision for previous symbol

Author
Tony Kirke
dd_symbol.png

References SPUC::conj().

Referenced by SPUC::qpsk< Numeric >::clock(), and SPUC::qpsk_discriminators::dd_timing_disc().

Here is the call graph for this function:

template<class T >
T SPUC::nda_symbol ( complex< T >  prev,
complex< T >  curr 
)

Non-decision aided timing discriminator (Gardiner's algorithm)

Runs at twice the symbol rate Curr - current sample Prev - Previous sample

nda_timing.gif
Author
Tony Kirke

Referenced by SPUC::qpsk< Numeric >::clock(), and SPUC::qpsk_discriminators::nda_timing_disc().

void SPUC::qam16_soft_decision ( complex< long >  data_in,
long  soft_decision_level,
std::vector< long > &  viterbi_input 
)

16-QAM data demapping

Author
Tony Kirke

Referenced by SPUC::qam_data_demap().

void SPUC::qam64_soft_decision ( complex< long >  data_in,
long  soft_decision_level,
std::vector< long > &  viterbi_input 
)

64-QAM data demapping

Author
Tony Kirke

References SPUC::ABS().

Referenced by SPUC::qam_data_demap().

Here is the call graph for this function:

void SPUC::qam_data_demap ( long  rate_index,
complex< long >  data_in,
long  soft_decision_level,
std::vector< long > &  viterbi_input 
)

Soft-decision QAM Demapper for use with QAM_MOD class.

Soft-decision QAM Demapper (used in 802.11A)

Author
Tony Kirke, Copyright(c) 2001 Returns an array of soft decision bits, array size is dependant on modulation type

This de-maps the QAM used in 802.11A

Returns an array of soft decision bits, array size is dependant on modulation type

Author
Tony Kirke

References SPUC::bpsk_soft_decision(), SPUC::qam16_soft_decision(), SPUC::qam64_soft_decision(), and SPUC::qpsk_soft_decision().

Referenced by SPUC::qam_conv_decoder::data_decode().

Here is the call graph for this function:

template<class T >
T SPUC::qpsk_dd_phase ( complex< T >  curr,
complex< T >  hard_data 
)

Decision directed carrier phase discriminator for QPSK.

Runs at the symbol rate Curr - current symbol Hard_data - Hard decision for current symbol

Author
Tony Kirke
qpsk_dd_phase.png
qpsk_dd_phase.gif

References SPUC::conj().

Referenced by SPUC::qpsk< Numeric >::clock(), and SPUC::qpsk_discriminators::pll_disc().

Here is the call graph for this function:

template<class T >
T SPUC::qpsk_quadricorrelator ( complex< T >  hard_data,
complex< T >  prev 
)

Hard_data - Hard decision (complex) data for current symbol Prev - Previous symbol (prior to hard decision)

Author
Tony Kirke
qpsk_quadricorrelator.png
qpsk_quadricorrelator.gif

Referenced by SPUC::qpsk_discriminators::quad().

template<class T >
T SPUC::qpsk_rcfd ( complex< T >  fmf,
complex< T >  curr 
)

using the "frequency matched filter" approach derived from the Maximum likelihood principle. see

A Reduced-complexity frequency discriminator derived from the maximum likelihood principle

IEEE Transactions on Communications Oct. 1995

. FMF - output from frequency matched filter (must be done externally) Curr - current sample

Author
Tony Kirke

Referenced by SPUC::qpsk_discriminators::rcfd().

void SPUC::qpsk_soft_decision ( complex< long >  data_in,
std::vector< long > &  viterbi_input 
)

QPSK data demapping.

Author
Tony Kirke

Referenced by SPUC::qam_data_demap().

template<class T >
void SPUC::raised_cosine ( fir_coeff< T > &  rcfir,
float_type  alpha,
float_type  rate 
)

Raised Cosine functions.

Author
Tony Kirke

References SPUC::fir_coeff< Numeric >::coeff, SPUC::fir_coeff< Numeric >::num_taps, and SPUC::raised_cosine_imp().

Referenced by SPUC::notch_example().

Here is the call graph for this function:

template<class T >
void SPUC::root_raised_cosine_quantized ( fir_coeff< T > &  rcfir,
float_type  alpha,
int  rate,
int  bits,
float_type  scale 
)

Root Raised Cosine functions.

Author
Tony Kirke

Referenced by SPUC::qpsk< Numeric >::qpsk().