SPUC
3.0
|
A Configurable Maximum Likelihood Sequence Estimator Class. More...
#include <mle.h>
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_type > | weight |
std::vector< long > | path |
state metric calculations/state More... | |
std::vector< long > | tmp_path |
path history More... | |
std::vector< float_type > | tmp_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... | |
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
|
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().
|
inline |
Perform DDFSE Sequence detection.
References SPUC::mle< Numeric >::equalize().
|
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().
|
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().
|
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().
|
inline |
Feedforward estimates.
References SPUC::fir< Numeric, Coeff >::coeff, and SPUC::mle< Numeric >::mlsd_span.
Referenced by SPUC::mle< Numeric >::estimate().
|
inline |
Perform MLSD Sequence detection.
References SPUC::mle< Numeric >::equalize().
Referenced by main(), and SPUC::baud_eq_env< Numeric >::step().
|
inline |
Reset filter.
References SPUC::fir_adapt< Numeric, Coeff >::reset().
|
inline |
Perform RSDFSE Sequence detection.
References SPUC::mle< Numeric >::equalize().
|
inline |
Copy channel impulse response.
References SPUC::fir< Numeric, Coeff >::coeff, SPUC::mle< Numeric >::dfe_span, SPUC::mle< Numeric >::mlsd_span, and SPUC::fir< Numeric, Coeff >::num_taps.
Referenced by SPUC::baud_eq_env< Numeric >::loop_init().
|
inline |
Get tap0.
References SPUC::fir< Numeric, Coeff >::coeff.
|
inline |
Update coefficients.
References SPUC::fir_adapt< Numeric, Coeff >::update_lms().
std::vector<Numeric> SPUC::mle< Numeric >::b_est |
Feedforward.
Feedback estimator for RSDFSE.
Referenced by main().
std::vector<Numeric> SPUC::mle< Numeric >::cir_dfe |
std::vector<Numeric> SPUC::mle< Numeric >::cir_mlsd |
Channel impulse response.
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().
std::vector<Numeric> SPUC::mle< Numeric >::f_est |
Numeric SPUC::mle< Numeric >::fb_est |
Number of branches.
Referenced by SPUC::mle< Numeric >::estimate().
const long SPUC::mle< Numeric >::mlsd_span |
Referenced by SPUC::mle< Numeric >::ff_estimate(), and SPUC::mle< Numeric >::set_cir().
const long SPUC::mle< Numeric >::n_branches |
Number of states.
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().
std::vector<long> SPUC::mle< Numeric >::path |
state metric calculations/state
std::vector<long> SPUC::mle< Numeric >::path_symbol |
float_type SPUC::mle< Numeric >::phase_inc |
for CPM total = n_states*phase_states! (not implemented)
long SPUC::mle< Numeric >::phase_states |
std::vector<long> SPUC::mle< Numeric >::tmp_path |
path history
std::vector<float_type> SPUC::mle< Numeric >::tmp_weight |
long SPUC::mle< Numeric >::total_states |
Phase states for MLSD_CPM (not implemented)
std::vector<float_type> SPUC::mle< Numeric >::weight |