Robochameleon  v1.0
Public Member Functions | Public Attributes | List of all members
AdaptiveEqualizer_MMA_RDE_v1 Class Reference

Radius directed equalization. More...

Inherits unit.

Public Member Functions

function AdaptiveEqualizer_MMA_RDE_v1 (in params)
 Class constructor. More...
 
function traverse (in obj, in in)
 Main routine.
 
function checkSettings (in obj)
 Check user settings. More...
 
function initialize (in obj)
 Initialize object. More...
 
function train_equalizer (in obj, in in)
 
function poldemux_cr_qam_v4_fast (in obj, in in)
 Fast equalization routine. More...
 
function poldemux_cr_qam_v4_medium (in obj, in in)
 Medium-fast equalization routine. More...
 
function poldemux_cr_qam_v4_slow (in obj, in in)
 Slow equalization routine. More...
 
function plotConv (in obj)
 Plot equalizer convergence.
 
function plotTaps (in obj)
 Plot filter taps.
 
- Public Member Functions inherited from unit
function traverseNode (in obj)
 Set unique ID when creating a unit. More...
 
function connectOutput (in obj, in uobj, in unitOutput, in nextUnitInput)
 Specify where signal should go next. More...
 
function connectOutputs (in obj, in units, in destInputs)
 Specify where signal should go next. More...
 
function writeInputBuffer (in obj, in sig, in inputId)
 write input buffer
 
function horzcat (in varargin)
 horizontal concatenation
 
function vertcat (in varargin)
 vertical concatenation
 
function setparams (in obj, in params, in REQUIRED_PARAMS, in QUIET_PARAMS)
 set parameters More...
 
function view (in obj)
 Show interactive GUI through unit_view-class.
 

Public Attributes

Property nInputs
 Number of inputs.
 
Property nOutputs
 Number of outputs.
 
Property type
 Type {'cma' | 'mma'}.
 
Property h_ortho
 Reset taps to be orthogonal between training iterations (avoid CMA singularity) {true | false}.
 
Property taps
 Number of taps.
 
Property mu
 Tap update coefficient.
 
Property cma_preconv
 CMA pre-convergence length.
 
Property equalizer_conv
 Training period convergence length.
 
Property iter
 Number of iterations for training.
 
Property constellation
 Vector of symbols in constellation (see constref.m)
 
Property operation
 Operation mode {'training' | 'equalization' | 'semiadaptive' | 'adaptive'}.
 
Property trainingType
 Training type mode {'blind' | 'dataAided'}.
 
Property trainingSequences
 N-by-2 training symbols matrix for dataAided mode.
 
Property h_init
 Inital center tap value.
 
Property hxx
 Store taps for h_xx.
 
Property hxy
 Store taps for h_xy.
 
Property hyx
 Store taps for h_yx.
 
Property hyy
 Store taps for h_yy.
 
Property R
 Store ring radii for MMA.
 
- Public Attributes inherited from unit
Property inputBuffer
 Buffer for storing inputs as we traverse the graph.
 
Property nextNodes
 Children nodes.
 
Property destInputs
 Destination inputs in children.
 
Property results
 For storing results.
 
Property label
 
Property draw
 enable/disable plotting
 
Property nInputs
 Number of signals traverse expects.
 
Property nOutputs
 Number of outputs traverse expects.
 

Detailed Description

Radius directed equalization.

Runs blind adaptive equalization on dual-polarization coherent signals with M>=4. Equalization is split into a training part and a main filtering part. There are two ways to perform training and three ways to do the main equalization:

Training modes:

  1. blind: Radius is chosen based on minimum Euclidean distance criteria
  2. dataAided: Radius is chosen based on training sequence provide by user

In blind training mode, for M>4, we bootstrap initially using the constant modulus algorithm (CMA), then after pre-convergence we switch to the multiple-modulus algorithm (MMA). Training sequence length and pre-convergence length can be set using class properties.

Equalization modes:

  1. training: train-only. In this case, there is still an output signal, and it is the estmated field during training.
  2. equalization: Equalizer taps are calculated using the first part of the sequence for training, then applied without further adaptation to the rest of the sequence.
  3. semiadaptive: Training is performed as usual to initialize, but taps are also updated over the whole sequence.
  4. adaptive: Training is performed as usual to initialize, then both taps and the update step are also updated over the whole sequence.

Observations:

  1. There are inherent limitations to blind equalization. This doesn't attempt to solve any of them.

Example:

paramDSP.eq.iter = 4; %Run 4 iterations of CMA/MMA on training seq. (default 1)
paramDSP.eq.taps = 31; %number of equalizer taps (default 7)
paramDSP.eq.mu = 1e-3; %update coefficient (default 6e-4)
paramDSP.eq.type = 'cma'; %cma or mma
paramDSP.eq.h_ortho = true; %Force-orthogonalize taps to avoid CMA singularity
paramDSP.eq.cma_preconv = 10000; %Run CMA this many samples
paramDSP.eq.equalizer_conv = 20000; %Train equalizer this many samples
paramDSP.eq.constellation = [constref('QAM',16)]; %constellation
paramDSP.eq.draw = false; %disable convergence plotting
paramDSP.eq.operation = 'equalization'; %Run both training and equalization
DSP = AdaptiveEqualizer_MMA_RDE_v1(paramDSP.eq); %construct
Signal_after_eq = traverse(DSP, Signal_before_eq); %run
Author
Edson Porto da Silva
Robert Borkowski
Version
1

Definition at line 62 of file AdaptiveEqualizer_MMA_RDE_v1.m.

Constructor & Destructor Documentation

function AdaptiveEqualizer_MMA_RDE_v1::AdaptiveEqualizer_MMA_RDE_v1 ( in  params)

Class constructor.

Only constellation is required, everything else has a default value. Plotting is on by default, disable using params.draw=0.

Parameters
paramsparameter structure (fields correspond to class properties).

Member Function Documentation

function AdaptiveEqualizer_MMA_RDE_v1::checkSettings ( in  obj)

Check user settings.

There are many options with this function, and it's easy to get confused. This checks for some more common mistakes and displays warnings when they arise

function AdaptiveEqualizer_MMA_RDE_v1::initialize ( in  obj)

Initialize object.

Set filter taps and check user-specified parameter values.

function AdaptiveEqualizer_MMA_RDE_v1::poldemux_cr_qam_v4_fast ( in  obj,
in  in 
)

Fast equalization routine.

Equalizer taps are calculated using the first part of the sequence for training, then applied without further adaptation to the rest of the sequence. For M>4, on the first training iteration, we bootstrap with CMA. Between iterations, the last value of the taps is retained. If obj.h_ortho is false, this is done for all filters; if it is true, we take h.yy = conj(h.xx) and h.yx = -conj(h.xy).

Parameters
ininput signal
Return values
out1equalized output at 1 sample per symbol
outNssequalized output at same oversampling rate as input
function AdaptiveEqualizer_MMA_RDE_v1::poldemux_cr_qam_v4_medium ( in  obj,
in  in 
)

Medium-fast equalization routine.

Equalizer taps are applied WITH further adaptation to the rest of the sequence. Tap update step size remains constant for the whole sequence.

Parameters
ininput signal
Return values
out1equalized output at 1 sample per symbol
function AdaptiveEqualizer_MMA_RDE_v1::poldemux_cr_qam_v4_slow ( in  obj,
in  in 
)

Slow equalization routine.

Equalizer taps are applied WITH further adaptation to the rest of the sequence. Tap update step size is adapted at each step.

Parameters
ininput signal
Return values
out1equalized output at 1 sample per symbol

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