SPUC  3.0
Public Member Functions | Public Attributes | List of all members

A Configurable Maximum Likelihood Sequence Estimator Class. More...

#include <mle.h>

Collaboration diagram for SPUC::mle< Numeric >:
Collaboration graph
[legend]

Public Member Functions

 mle (int mlsd_size, int dfe_size=0, long q=1)
 phase increment for MLSD_CPM (should divide evenly into 360 degrees) (not implemented) More...
 
 ~mle (void)
 
void reset ()
 Reset filter. More...
 
void update_taps_lms (Numeric err)
 Update coefficients. More...
 
Numeric tap0 (void)
 Get tap0. More...
 
void set_cir (const fir< Numeric, Numeric > &cir)
 Copy channel impulse response. More...
 
Numeric df_est (int state)
 
Numeric ff_estimate (long seq)
 Feedforward estimates. More...
 
float_type estimate (Numeric rx, long seq, long state, long type)
 Allows selection of Equalizer type. More...
 
long ddfse (Numeric rx)
 Perform DDFSE Sequence detection. More...
 
long mlsd (Numeric rx)
 Perform MLSD Sequence detection. More...
 
long rsdfse (Numeric rx)
 Perform RSDFSE Sequence detection. More...
 
long equalize (Numeric rx, long type)
 Generic Sequence detection allowing selection of type. More...
 

Public Attributes

const long mlsd_span
 
const long dfe_span
 number of bits spanned by MLSD part of equaliser More...
 
const long n_states
 Number of bits spanned by DFE part of equaliser. More...
 
const long n_branches
 Number of states. More...
 
Numeric fb_est
 Number of branches. More...
 
fir_adapt< Numeric, Numeric > cfir
 Feedback estimator for RSDFSE. More...
 
std::vector< Numeric > cir_mlsd
 Channel impulse response. More...
 
std::vector< Numeric > cir_dfe
 
std::vector< Numeric > f_est
 
std::vector< Numeric > b_est
 Feedforward. More...
 
std::vector< float_typeweight
 
std::vector< long > path
 state metric calculations/state More...
 
std::vector< long > tmp_path
 path history More...
 
std::vector< float_typetmp_weight
 
std::vector< long > path_symbol
 
long phase_states
 
long total_states
 Phase states for MLSD_CPM (not implemented) More...
 
float_type phase_inc
 for CPM total = n_states*phase_states! (not implemented) More...
 

Detailed Description

template<class Numeric>
class SPUC::mle< Numeric >

A Configurable Maximum Likelihood Sequence Estimator Class.

can be configured as either a

MLSD - Basic Maximum Likelihood Sequence Detector

DDFSE - MLSD with Delayed Decision Feedback Sequence Detector

RSDFSE - MLSD with Reduced State Decision Feedback Sequence Detector

Author
Tony Kirke
Tony Kirke

Constructor & Destructor Documentation

template<class Numeric>
SPUC::mle< Numeric >::mle ( int  mlsd_size,
int  dfe_size = 0,
long  q = 1 
)
inline

phase increment for MLSD_CPM (should divide evenly into 360 degrees) (not implemented)

Constructor (default to MLSE with no feedback) q=1 Binary, q=2 Quaternary

References SPUC::mle< Numeric >::n_states, and SPUC::fir< Numeric, Coeff >::set_size().

Here is the call graph for this function:

template<class Numeric>
SPUC::mle< Numeric >::~mle ( void  )
inline

Member Function Documentation

template<class Numeric>
long SPUC::mle< Numeric >::ddfse ( Numeric  rx)
inline

Perform DDFSE Sequence detection.

References SPUC::mle< Numeric >::equalize().

Here is the call graph for this function:

template<class Numeric>
Numeric SPUC::mle< Numeric >::df_est ( int  state)
inline

Calculate convolution of feedback taps with past decisions for a particular state (for next iteration of branch metric calculation)

References SPUC::mle< Numeric >::dfe_span.

Referenced by SPUC::mle< Numeric >::equalize().

template<class Numeric>
long SPUC::mle< Numeric >::equalize ( Numeric  rx,
long  type 
)
inline

Generic Sequence detection allowing selection of type.

References SPUC::mle< Numeric >::df_est(), SPUC::mle< Numeric >::estimate(), and SPUC::mle< Numeric >::n_states.

Referenced by SPUC::mle< Numeric >::ddfse(), SPUC::mle< Numeric >::mlsd(), and SPUC::mle< Numeric >::rsdfse().

Here is the call graph for this function:

template<class Numeric>
float_type SPUC::mle< Numeric >::estimate ( Numeric  rx,
long  seq,
long  state,
long  type 
)
inline

Allows selection of Equalizer type.

References SPUC::mle< Numeric >::fb_est, SPUC::mle< Numeric >::ff_estimate(), and SPUC::magsq().

Referenced by SPUC::mle< Numeric >::equalize().

Here is the call graph for this function:

template<class Numeric>
Numeric SPUC::mle< Numeric >::ff_estimate ( long  seq)
inline
template<class Numeric>
long SPUC::mle< Numeric >::mlsd ( Numeric  rx)
inline

Perform MLSD Sequence detection.

References SPUC::mle< Numeric >::equalize().

Referenced by main(), and SPUC::baud_eq_env< Numeric >::step().

Here is the call graph for this function:

template<class Numeric>
void SPUC::mle< Numeric >::reset ( void  )
inline

Reset filter.

References SPUC::fir_adapt< Numeric, Coeff >::reset().

Here is the call graph for this function:

template<class Numeric>
long SPUC::mle< Numeric >::rsdfse ( Numeric  rx)
inline

Perform RSDFSE Sequence detection.

References SPUC::mle< Numeric >::equalize().

Here is the call graph for this function:

template<class Numeric>
void SPUC::mle< Numeric >::set_cir ( const fir< Numeric, Numeric > &  cir)
inline
template<class Numeric>
Numeric SPUC::mle< Numeric >::tap0 ( void  )
inline

Get tap0.

References SPUC::fir< Numeric, Coeff >::coeff.

template<class Numeric>
void SPUC::mle< Numeric >::update_taps_lms ( Numeric  err)
inline

Update coefficients.

References SPUC::fir_adapt< Numeric, Coeff >::update_lms().

Here is the call graph for this function:

Member Data Documentation

template<class Numeric>
std::vector<Numeric> SPUC::mle< Numeric >::b_est

Feedforward.

template<class Numeric>
fir_adapt< Numeric, Numeric > SPUC::mle< Numeric >::cfir

Feedback estimator for RSDFSE.

Referenced by main().

template<class Numeric>
std::vector<Numeric> SPUC::mle< Numeric >::cir_dfe
template<class Numeric>
std::vector<Numeric> SPUC::mle< Numeric >::cir_mlsd

Channel impulse response.

template<class Numeric>
const long SPUC::mle< Numeric >::dfe_span

number of bits spanned by MLSD part of equaliser

Referenced by SPUC::mle< Numeric >::df_est(), and SPUC::mle< Numeric >::set_cir().

template<class Numeric>
std::vector<Numeric> SPUC::mle< Numeric >::f_est
template<class Numeric>
Numeric SPUC::mle< Numeric >::fb_est

Number of branches.

Referenced by SPUC::mle< Numeric >::estimate().

template<class Numeric>
const long SPUC::mle< Numeric >::mlsd_span
template<class Numeric>
const long SPUC::mle< Numeric >::n_branches

Number of states.

template<class Numeric>
const long SPUC::mle< Numeric >::n_states

Number of bits spanned by DFE part of equaliser.

Referenced by SPUC::mle< Numeric >::equalize(), and SPUC::mle< Numeric >::mle().

template<class Numeric>
std::vector<long> SPUC::mle< Numeric >::path

state metric calculations/state

template<class Numeric>
std::vector<long> SPUC::mle< Numeric >::path_symbol
template<class Numeric>
float_type SPUC::mle< Numeric >::phase_inc

for CPM total = n_states*phase_states! (not implemented)

template<class Numeric>
long SPUC::mle< Numeric >::phase_states
template<class Numeric>
std::vector<long> SPUC::mle< Numeric >::tmp_path

path history

template<class Numeric>
std::vector<float_type> SPUC::mle< Numeric >::tmp_weight
template<class Numeric>
long SPUC::mle< Numeric >::total_states

Phase states for MLSD_CPM (not implemented)

template<class Numeric>
std::vector<float_type> SPUC::mle< Numeric >::weight

The documentation for this class was generated from the following file: