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