Main Content

Construct loss model from channel loss metric or impulse response

**Library:**SerDes Toolbox / Utilities

The Analog Channel block constructs a loss model using a channel loss metric or an impulse response from another source in a SerDes Toolbox™ model. Analog model inputs are only used for IBIS file construction when using impulse response. For more information, see Analog Channel Loss in SerDes System.

`WaveIn`

— Input signalscalar | vector

Input signal, specified as a waveform.

**Data Types: **`double`

`WaveOut`

— Modified output datascalar | vector

Modified output data that includes the effect of a lossy printed circuit board transmission line model according to the method outlined in [1].

**Data Types: **`double`

`Channel model`

— Source of channel model`Loss model`

(default) | `Impulse response`

Source of channel model.

Select

`Loss model`

to model the analog channel from a loss model.Select

`Impulse response`

to model the analog channel from an impulse response.

Use

`get_param(gcb,'ChannelType')`

to view the current**Channel model**.Use

`set_param(gcb,'ChannelType',value)`

to set a specific**Channel model**.

`Target frequency (Hz)`

— Frequency for desired channel loss`20e9`

(default) | positive real scalarFrequency for the desired channel loss, specified as a positive real scalar in hertz. It corresponds to the Nyquist frequency of the system.

This parameter is only available when `Loss model`

is
selected as **Channel model**.

Use

`get_param(gcb,'TargetFrequency')`

to view the current value of**Target frequency (Hz)**.Use

`set_param(gcb,'TargetFrequency',value)`

to set**Target frequency (Hz)**to a specific value.

**Data Types: **`double`

`Loss (dB)`

— Channel loss at target frequency`8`

(default) | scalarChannel loss at the target frequency, specified as a scalar in dB.

This parameter is only available when `Loss model`

is
selected as **Channel model**.

Use

`get_param(gcb,'Loss')`

to view the current value of**Loss (dB)**.Use

`set_param(gcb,'Loss',value)`

to set**Loss (dB)**to a specific value.

**Data Types: **`double`

`Impedance (Ohms)`

— Channel characteristic impedancepositive real scalar

Characteristic impedance of the channel, specified as a positive real scalar in
ohms. **Impedance (Ohms)** depends on the setting of
**Signaling** in the **Configuration** tab in the
**SerDes
Designer** app or in the Configuration block.

If

**Signaling**is set to`Differential`

, the default value of**Impedance (Ohms)**is`100`

.If

**Signaling**is set to`Single-ended`

, the default value of**Impedance (Ohms)**is`50`

.

This parameter is only available when `Loss model`

is
selected as **Channel model**.

Use

`get_param(gcb,'Zc')`

to view the current value of**Impedance**.Use

`set_param(gcb,'Zc',value)`

to set**Impedance**to a specific value.

**Data Types: **`double`

`Impulse response`

— User provided impulse response`[zeros(1,63),1/SampleInterval,zeros(1,192)]`

(default) | matrixUser provided impulse response, specified as a unitless matrix. **Impulse
response** is used to construct a channel loss model from the user-defined
impulse response of the system.

You can use user specified impulse response to define your own crosstalk. If you decide to include crosstalk from your custom impulse response, you can specify upto six crosstalk stimuli as new columns in the impulse response.

This parameter is only available when ```
Impulse
response
```

is selected as **Channel model**

Use

`get_param(gcb,'ImpulseResponse')`

to view the current value of**Impulse response**.Use

`set_param(gcb,'ImpulseResponse',value)`

to set**Impulse response**to a specific value.

**Data Types: **`double`

`Impulse sample interval`

— Sample interval of user provided impulse response`6.25e-12`

(default) | positive real scalarSample interval of the user provided impulse response, specified as a positive real scalar in seconds.

**Data Types: **`double`

`Tx R (Ohms)`

— Single-ended impedance of transmitter analog model`50`

(default) | nonnegative real scalarSingle-ended impedance of the transmitter analog model, specified as a nonnegative real scalar in ohms.

Use

`get_param(gcb,'TxR')`

to view the current value of**Tx R (Ohms)**.Use

`set_param(gcb,'TxR',value)`

to set**Tx R (Ohms)**to a specific value.

**Data Types: **`double`

`Tx C (F)`

— Capacitance of transmitter analog model`100e-15`

(default) | nonnegative real scalarCapacitance of the transmitter analog model, specified as a nonnegative real scalar in farads.

Use

`get_param(gcb,'TxC')`

to view the current value of**Tx C (F)**.Use

`set_param(gcb,'TxC',value)`

to set**Tx C (F)**to a specific value.

**Data Types: **`double`

`Rx R (Ohms)`

— Single-ended impedance of receiver analog model`50`

(default) | nonnegative real scalarSingle-ended impedance of the receiver analog model, specified as a nonnegative real scalar in ohms.

Use

`get_param(gcb,'RxR')`

to view the current value of**Rx R (Ohms)**.Use

`set_param(gcb,'RxR',value)`

to set**Rx R (Ohms)**to a specific value.

**Data Types: **`double`

`Rx C (F)`

— Capacitance of receiver analog model`200e-15`

(default) | nonnegative real scalarCapacitance of the receiver analog model, specified as a nonnegative real scalar in farads.

Use

`get_param(gcb,'RxC')`

to view the current value of**Rx C (F)**.Use

`set_param(gcb,'RxC',value)`

to set**Rx C (F)**to a specific value.

**Data Types: **`double`

`Rise time (s)`

— 20%−80% rise time of stimulus input`10e-12`

(default) | positive real scalar20%−80% rise time of the stimulus input to transmitter analog model, specified as a positive real scalar in seconds.

Use

`get_param(gcb,'RiseTime')`

to view the current value of**Rise time (s)**.Use

`set_param(gcb,'RiseTime',value)`

to set**Rise time (s)**to a specific value.

**Data Types: **`double`

`Voltage (V)`

— Peak-to-peak voltage at input of transmitter analog model`1`

(default) | positive real scalarPeak-to-peak voltage at the input of transmitter analog model, specified as a positive real scalar in volts.

Use

`get_param(gcb,'VoltageSwingIdeal')`

to view the current value of**Voltage (V)**.Use

`set_param(gcb,'VoltageSwingIdeal',value)`

to set**Voltage (V)**to a specific value.

**Data Types: **`double`

`Include crosstalk`

— Include crosstalk in simulationoff (default) | on

Select to include crosstalk in the simulation. By default, this option is deselected.

`Specification`

— Specify magnitude of near and far end aggressors`100GBASE-CR4`

(default) | `CEI-25G-LR`

| `CEI-28G-SR`

| `CEI-28G-VSR`

| `Custom`

Specify the magnitude of the near and far end aggressors. You can choose to
include maximum allowed crosstalk for specifications such as
`100GBASE-CR4`

, `CEI-25G-LR`

,
`CEI-28G-SR`

, `CEI-28G-VSR`

, or
you can specify your own custom crosstalk integrated crosstalk noise (ICN)
level.

Use

`get_param(gcb,'CrosstalkSpecification')`

to view the current value of**Specification**.Use

`set_param(gcb,'CrosstalkSpecification',value)`

to set**Specification**to a specific value.

`Far end crosstalk ICN (V)`

— Desired integrated noise level of far end aggressor`15e-3`

(default) | nonnegative real scalarDesired integrated crosstalk noise (ICN) level of the far end aggressor, specified as a nonnegative real scalar in volts. ICN specifies the strength of the crosstalk.

This parameter is only available when you choose
`Custom`

as crosstalk
**Specification**.

Use

`get_param(gcb,'FEXTICN')`

to view the current value of**Far end crosstalk ICN (V)**.Use

`set_param(gcb,'FEXTICN',value)`

to set**Far end crosstalk ICN (V)**to a specific value.

**Data Types: **`double`

`Near end crosstalk ICN (V)`

— Desired integrated noise level of near end aggressor`10e-3`

(default) | nonnegative real scalarDesired integrated crosstalk noise (ICN) level of the near end aggressor, specified as a nonnegative real scalar in volts. ICN specifies the strength of the crosstalk.

This parameter is only available when you choose
`Custom`

as crosstalk
**Specification**.

Use

`get_param(gcb,'NEXTICN')`

to view the current value of**Near end crosstalk ICN (V)**.Use

`set_param(gcb,'NEXTICN',value)`

to set**Near end crosstalk ICN (V)**to a specific value.

**Data Types: **`double`

`Symbol Time (s)`

— Symbol time of far end crosstalk stimulus`100e-12`

(default) | positive real scalarSymbol time of the far end crosstalk (FEXT) stimulus, specified as a positive real scalar in seconds.

Use

`get_param(gcb,'UIFEXT')`

to view the current value of**Symbol Time (s)**in FEXT stimulus.Use

`set_param(gcb,'UIFEXT',value)`

to set**Symbol Time (s)**in FEXT stimulus to a specific value.

**Data Types: **`double`

`Delay (s)`

— Delay offset of far end crosstalk stimulus`0`

(default) | nonnegative real scalarDelay offset of the far end crosstalk (FEXT) stimulus, specified as a positive real scalar in seconds.

Use

`get_param(gcb,'DelayFEXT')`

to view the current value of**Delay (s)**in FEXT stimulus.Use

`set_param(gcb,'DelayFEXT',value)`

to set**Delay (s)**in FEXT stimulus to a specific value.

**Data Types: **`double`

`Modulation`

— Modulation levels of far end crosstalk stimulus`NRZ`

(default) | `PAM4`

Modulation levels of the far end crosstalk (FEXT) stimulus, specified between
`NRZ`

(2-level) and `PAM4`

(4-level).

Use

`get_param(gcb,'ModulationFEXT')`

to view the current value of**Modulation**in FEXT stimulus.Use

`set_param(gcb,'ModulationFEXT',value)`

to set**Modulation**in FEXT stimulus to a specific value.

`PRBS Order`

— PRBS order of far end crosstalk stimulus`7`

(default) | `9`

| `11`

| `13`

| `15`

| `20`

| `23`

| `31`

| `47`

Pseudorandom binary sequence (PRBS) order of the far end crosstalk (FEXT) stimulus.

Use

`get_param(gcb,'OrderFEXT')`

to view the current value of**PRBS Order**in FEXT stimulus.Use

`set_param(gcb,'OrderFEXT',value)`

to set**PRBS Order**in FEXT stimulus to a specific value.

**Data Types: **`double`

`Symbol Time (s)`

— Symbol time of near end crosstalk stimulus`100e-12`

(default) | positive real scalarSymbol time of the near end crosstalk (NEXT) stimulus, specified as a positive real scalar in seconds.

Use

`get_param(gcb,'UINEXT')`

to view the current value of**Symbol Time (s)**in NEXT stimulus.Use

`set_param(gcb,'UINEXT',value)`

to set**Symbol Time (s)**in NEXT stimulus to a specific value.

**Data Types: **`double`

`Delay (s)`

— Delay offset of near end crosstalk stimulus`0`

(default) | nonnegative real scalarDelay offset of the near end crosstalk (NEXT) stimulus, specified as a positive real scalar in seconds.

Use

`get_param(gcb,'DelayNEXT')`

to view the current value of**Delay (s)**in NEXT stimulus.Use

`set_param(gcb,'DelaynEXT',value)`

to set**Delay (s)**in NEXT stimulus to a specific value.

**Data Types: **`double`

`Modulation`

— Modulation levels of near end crosstalk stimulus`NRZ`

(default) | `PAM4`

Modulation levels of the near end crosstalk (NEXT) stimulus, specified between
`NRZ`

(2-level) and `PAM4`

(4-level).

Use

`get_param(gcb,'ModulationNEXT')`

to view the current value of**Modulation**in NEXT stimulus.Use

`set_param(gcb,'ModulationNEXT',value)`

to set**Modulation**in NEXT stimulus to a specific value.

`PRBS Order`

— PRBS order of near end crosstalk stimulus`9`

(default) | `7`

| `11`

| `13`

| `15`

| `20`

| `23`

| `31`

| `47`

Pseudorandom binary sequence (PRBS) order of the near end crosstalk (NEXT) stimulus.

Use

`get_param(gcb,'OrderFEXT')`

to view the current value of**PRBS Order**in FEXT stimulus.Use

`set_param(gcb,'OrderFEXT',value)`

to set**PRBS Order**in FEXT stimulus to a specific value.

**Data Types: **`double`

ICN is a frequency domain metric where the crosstalk is multiplied by a weighting
function and then numerically integrated from 50 MHz to the baud rate
(*f _{b}*). If there are multiple aggressors, their
power are summed together before combining with the weighting function.

The time domain signal does not excite all frequencies evenly. The power spectral density (PSD) of a baseband time domain excitation follows a sinc-squared type response. The weighting function mimics the excitation of the PSD and shapes the PSD by including the effects of the receiver bandwidth and the transmitter rise time.

The total ICN is calculated by root-sum-squaring the FEXT ICN and NEXT ICN values together.

$$\begin{array}{l}{W}_{ft}(f)=\left(\frac{{A}_{ft}^{2}}{4{f}_{b}}\right){\text{sinc}}^{2}\left(\frac{f}{{f}_{b}}\right)\left[\frac{1}{1+{\left(f/{f}_{ft}\right)}^{4}}\right]\left[\frac{1}{1+{\left(f/{f}_{ft}\right)}^{8}}\right]\\ {\sigma}_{fx}={\left(2\Delta f{{\displaystyle \sum _{n}{W}_{ft}({f}_{n})10}}^{-MDFEX{T}_{loss}({f}_{n})/10}\right)}^{1/2}\\ {\sigma}_{nx}={\left(2\Delta f{{\displaystyle \sum _{n}{W}_{ft}({f}_{n})10}}^{-MDNEX{T}_{loss}({f}_{n})/10}\right)}^{1/2}\\ {\sigma}_{x}=\sqrt{{\sigma}_{fx}^{2}+{\sigma}_{nx}^{2}}\end{array}$$

The impact felt on a victim line from a far end crosstalk aggressor is proportional to the rate of change of the aggressor waveform [2]. So, you can estimate the shape of a FEXT time domain signal with the derivative of the through response lossy impulse response.

$${I}_{\text{FEXT}}(t)={k}_{\text{FEXT}}\frac{dI(t)}{dt}$$

where, *k*_{FEXT} is a scale factor that scales the
*I*_{FEXT}*(t)* so that it has user
specified ICN value.

To calculate the ICN of the signal, transform the signal to frequency domain using Fourier transform.

$${H}_{\text{FEXT}}(f)=\mathcal{F}\left[{I}_{\text{FEXT}}(t)\right]$$

The magnitude of the scale factor *k*_{FEXT} is: $${k}_{\text{FEXT}}(f)=-\frac{IC{N}_{\text{FEXT}}}{\mathbb{I}\u2102{\mathbb{N}}_{\text{FEXT}}\left({H}_{\text{FEXT}}(f)\right)}$$,

where $$\mathbb{I}\u2102\mathbb{N}$$ is the integrated crosstalk noise operator.

The sign of *k*_{FEXT} is negative since in typical
transmission lines in inhomogeneous dielectrics, the inducting coupling is generally greater
than capacitive coupling. As a result, the forward crosstalk pulse has the opposite
magnitude from the magnitude of the aggressor signal.

To calculate the near end crosstalk, note that the frequency domain NEXT response is
similar in shape (not in magnitude) to the victim's return loss
(*S*_{11} or
*S*_{11}).

$${H}_{\text{NEXT}}(f)={k}_{\text{NEXT}}\xb7{S}_{11}(f)$$

Then the scale factor *k*_{NEXT} is: $${k}_{\text{NEXT}}=-\frac{IC{N}_{\text{NEXT}}}{\mathbb{I}\u2102\mathbb{N}\left({S}_{11}(f)\right)}$$

And the time domain NEXT signal is derived from the inverse Fourier transform.

$${I}_{\text{NEXT}}(t)={\mathcal{F}}^{-1}\left[{k}_{\text{NEXT}}\xb7{S}_{11}(f)\right]$$

[1] IEEE 802.3bj-2014. "IEEE Standard for Ethernet Amendment 2: Physical Layer Specifications and Management Parameters for 100 Gb/s Operation Over Backplanes and Copper Cables." URL: https://standards.ieee.org/standard/802_3bj-2014.html.

[2] Stephen Hall and Howard Heck.
*Advanced Signal Integrity for High-Speed Digital Designs*. Hoboken,
NJ: Wiley Press, 2009.

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)