new general processing structure just before splitting off the projects folder from this repo
40 lines
1.8 KiB
Matlab
40 lines
1.8 KiB
Matlab
function [eq_, pf_, mlse_, mlse_db_, eq_post] = configureEqualizers(M, len_tr, vnle_order, dfe_order, mu_dc, mu_ffe, mu_dfe, pf_ncoeffs)
|
|
% CONFIGUREEQUALIZERS Creates and configures equalizer objects
|
|
%
|
|
% Inputs:
|
|
% M - PAM level
|
|
% len_tr - Training length
|
|
% vnle_order - Array with orders for VNLE [order1, order2, order3]
|
|
% dfe_order - Array with orders for DFE
|
|
% mu_dc - DC adaptation rate
|
|
% mu_ffe - Array with adaptation rates for FFE [mu1, mu2, mu3]
|
|
% mu_dfe - Adaptation rate for DFE
|
|
% pf_ncoeffs - Number of coefficients for postfilter
|
|
%
|
|
% Outputs:
|
|
% eq_ - Configured EQ object
|
|
% pf_ - Configured Postfilter object
|
|
% mlse_ - Configured MLSE_viterbi object
|
|
% mlse_db_ - Configured MLSE_viterbi object for duobinary
|
|
% eq_post - Configured FFE object for post-processing
|
|
|
|
% Configure main equalizer
|
|
eq_ = EQ("Ne", vnle_order, "Nb", dfe_order, ...
|
|
"training_length", len_tr, "training_loops", 5, "dd_loops", 5, ...
|
|
"K", 2, "DCmu", mu_dc, "DDmu", [mu_ffe mu_dfe], ...
|
|
"DFEmu", 0.005, "FFEmu", 0, "plotfinal", 0, "ideal_dfe", 1);
|
|
|
|
% Configure postfilter
|
|
pf_ = Postfilter("ncoeff", pf_ncoeffs, "useBurg", 1);
|
|
|
|
% Configure MLSE objects
|
|
mlse_ = MLSE_viterbi("duobinary_output", 0, 'M', M, ...
|
|
'trellis_states', PAMmapper(M,0).levels);
|
|
mlse_db_ = MLSE_viterbi("DIR", [1,1], "duobinary_output", 0, ...
|
|
"M", M, "trellis_states", PAMmapper(M,0).levels);
|
|
|
|
% Configure post-FFE
|
|
eq_post = FFE("epochs_tr", 5, "epochs_dd", 5, "len_tr", 4096*2, ...
|
|
"mu_dd", 1e-4, "mu_tr", 0, "order", 2001, ...
|
|
"sps", 1, "decide", 0);
|
|
end |