DFECDR

Decision feedback equalizer (DFE) with clock and data recovery (CDR)

  • Library:
  • SerDes Toolbox / Datapath Blocks

Description

The DFECDR block adaptively processes a sample-by-sample input signal or analytically processes an impulse response vector input signal to remove distortions at post cursor taps.

The decision feedback equalizer modifies baseband signals to minimize the intersymbol interference (ISI) at the clock sampling time. The DFE samples data at each clock tick and adjusts the amplitude of the waveform by a correction voltage. The correction voltage is determined by the previous N sampled unit interval (UI) values, where N is the number of DFE taps.

A clock and data recovery function provides the clock sampling location to the DFE. The clock recovery is a first order phase tracking CDR model. For more information, see Clock and Data Recovery in SerDes System.

Ports

Input

expand all

Input baseband signal. The input signal can be a sample-by-sample signal specified as a scalar, or an impulse response vector signal.

Data Types: double

Output

expand all

Estimated channel output. If the input signal is a sample-by-sample signal specified as a scalar, the output is also scalar. If the input signal is an impulse response vector signal, the output is also a vector.

Data Types: double

Parameters

expand all

Choose which parameters to include in IBIS-AMI models. By default, all four parameters are selected.

If you deselect a parameter, the parameter is removed from the AMI files, effectively hard-coding the parameter to its current value. For example, if Phase offset (symbol time) is set to 0 and you clear the check box for Phase offset under IBIS-AMI parameters, the value of Phase offset (symbol time) is hard-coded to 0.

DFE

DFE operating mode:

  • OffDFECDR is bypassed and the input waveform remains unchanged.

  • FixedDFECDR applies the input DFE tap weights specified in Initial tap weights (V) to the input waveform.

  • AdaptDFECDR adaptively determines the optimum DFE tap weights values for best eye opening and applies them to the input waveform.

Programmatic Use

  • Use get_param(gcb,'Mode') to view the current DFECDR Mode.

  • Use set_param(gcb,'Mode',value) to set DFECDR to a specific Mode.

Initial DFE tap weights, specified as a row vector in volts. The length of the vector specifies the number of DFE taps. The vector element value specifies the strength of the tap at that element position. Setting a vector element value to zero only initializes the tap.

Programmatic Use

  • Use get_param(gcb,'TapWeights') to view the current value of DFECDR Initial tap weights (V).

  • Use set_param(gcb,'TapWeights',value) to set DFECDR to a specific Initial tap weights (V) vector value.

Data Types: double

Controls DFE tap weight update rate, specified as a unitless positive real scalar. Increasing the value of Adaptive gain leads to a faster convergence of DFE adaptation at the expense of more noise in DFE tap values.

Programmatic Use

  • Use get_param(gcb,'EqualizationGain') to view the current DFECDR Adaptive gain value.

  • Use set_param(gcb,'EqualizationGain',value) to set DFECDR to a specific value of Adaptive gain.

Data Types: double

DFE adaptive step resolution, specified as a nonnegative real scalar in volts. Adaptive step size (V) specifies the minimum DFE tap change from one time step to the next to mimic hardware impairment. Setting Adaptive step size (V) to 0 yields DFE tap values without any resolution limitation.

Programmatic Use

  • Use get_param(gcb,'EqualizationStep') to view the current DFECDR Adaptive step size (V) value.

  • Use set_param(gcb,'EqualizationStep',value) to set DFECDR to a specific value of Adaptive step size (V).

Data Types: double

Minimum value of the adapted taps, specified as a real scalar or real-valued row vector in volts. Specify as a scalar to apply to all the DFE taps or as a vector that has the same length as the Initial tap weights (V).

Programmatic Use

  • Use get_param(gcb,'MinimumTap') to view the current DFECDR Minimum DFE tap value (V) value.

  • Use set_param(gcb,'MinimumTap',value) to set DFECDR to a specific value of Minimum DFE tap value (V).

Data Types: double

Maximum value of the adapted taps, specified as a nonnegative real scalar or real-valued row vector in volts. Specify as a scalar to apply to all the DFE taps or as a vector that has the same length as the Initial tap weights (V).

Programmatic Use

  • Use get_param(gcb,'MaximumTap') to view the current DFECDR Maximum DFE tap value (V) value.

  • Use set_param(gcb,'MaximumTap',value) to set DFECDR to a specific value of Maximum DFE tap value (V).

Data Types: double

CDR

Manual clock phase offset to move the recovered clock phase, specified as a real scalar in the range [-0.5, 0.5] in the fraction of symbol time. Phase offset (symbol time) is used to manually shift the clock probability distribution function (PDF) for a better bit error rate (BER).

Programmatic Use

  • Use get_param(gcb,'PhaseOffset') to view the current DFECDR Phase offset (symbol time) value.

  • Use set_param(gcb,'PhaseOffset',value) to set DFECDR to a specific value of Phase offset (symbol time).

Data Types: double

Reference clock offset impairment, specified as a real scalar in the range [−300, 300] in parts per million (ppm). Reference offset (ppm) is the deviation between transmitter oscillator frequency and receiver oscillator frequency.

Programmatic Use

  • Use get_param(gcb,'ReferenceOffset') to view the current DFECDR Reference offset (ppm) value.

  • Use set_param(gcb,'ReferenceOffset',value) to set DFECDR to a specific value of Reference offset (ppm).

Data Types: double

Early or late CDR count threshold to trigger a phase update, specified as a unitless positive real integer ≥5. Increasing the value of Early/late count threshold provides a more stable output clock phase at the expense of convergence speed. Because the bit decisions are made at the clock phase output, a more stable clock phase has a better bit error rate (BER).

Early/late count threshold also controls the bandwidth of the CDR, which is approximately calculated by using the equation:

Programmatic Use

  • Use get_param(gcb,'Count') to view the current DFECDR Early/late count threshold value.

  • Use set_param(gcb,'Count',value) to set DFECDR to a specific value of Early/late count threshold.

Data Types: double

Clock phase resolution of the recovered clock, specified as a real scalar in fraction of symbol time. Step (symbol time) is the inverse of the number of phase adjustments in the CDR. If the CDR has 128 steps of phase adjustment, the Step (symbol time) value is 1/128.

Programmatic Use

  • Use get_param(gcb,'ClockStep') to view the current DFECDR Step (symbol time) value.

  • Use set_param(gcb,'ClockStep',value) to set DFECDR to a specific value of Step (symbol time).

Data Types: double

Sampling latch metastability voltage, specified as a real scalar in volts. If the data sample voltage lies within the region of (±Sensitivity (V)), there is a 50% probability of bit error.

Programmatic Use

  • Use get_param(gcb,'Sensitivity') to view the current DFECDR Sensitivity (V) value.

  • Use set_param(gcb,'Sensitivity',value) to set DFECDR to a specific value of Sensitivity (V).

Data Types: double

Introduced in R2019a