Chapter 24
Filters

24.1 Introduction

24.1.1 Key Concepts

ngscopeclient and libscopehal are based on a “filter graph" architecture internally. The filter graph is a directed acyclic graph with a set of source nodes (waveforms captured from hardware, loaded from a saved session, or generated numerically) and sink nodes (waveform views, protocol analyzer views, and statistics) connected by edges representing data flow.

A filter is simply an intermediate node in the graph, which takes input from zero or more waveform nodes and outputs a waveform which may be displayed, used as input to other filters, or both. A waveform is a series of data points which may represent voltages, digital samples, or arbitrarily complex protocol data structures.

As a result, there is no internal distinction between math functions, measurements, and protocol decodes, and it is possible to chain them arbitrarily. Consider the following example:

In this document we use the term “filter" consistently to avoid ambiguity.

24.1.2 Conventions

A filter can take arbitrarily many inputs (vector or scalar values from the filter graph), arbitrarily many parameters (static scalar configuration settings), and outputs arbitrarily many vector or scalar outputs.

If the output signal is a multi-field type (as opposed to a single scalar, e.g. voltage, at each sample) the “Output Signal" section will include a table describing how various types of output data are displayed.

All filters with complex output use a standardized set of colors to display various types of data fields in a consistent manner. These colors are configurable under the Appearance / Decodes preferences category.

Color name Use case

Default Color

Address Memory addresses

#ffff00

Checksum Bad Incorrect CRC/checksum

#ff0000

Checksum OK Valid CRC/checksum

#00ff00

Control Miscellaneous control data

#c000a0

Data User data

#336699

Error Malformed/unreadable data

#ff0000

Idle Inter-frame gaps

#404040

Preamble Preamble/sync words

#808080

24.2 128b/130b

Decodes the 128b/130b line code used by PCIe gen 3/4/5. This filter performs block alignment and descrambling, but no decoding of block contents.

128b/130b, as a close relative of 64b/66b, is a serial line code which divides transmitted data into 128-bit blocks and scrambles them with a LFSR, then appends a 2-bit type field (which is not scrambled) to each block for synchronization. Block synchronization depends on always having an edge in the type field so types 2’b00 and 2’b11 are disallowed.

For PCIe over 128b/130b, block type 2’b01 contains 128 bits of upper layer protocol data while block type 2’b10 contains an ordered set.

Note that this filter only performs block alignment and descrambling. No decoding or parsing is applied to the 128-bit blocks, other than searching for skip ordered sets (beginning with 0xaa) and using them for scrambler synchronization.

PIC

Figure 24.1: Example 128b/130b decode

24.2.1 Inputs

Signal name Type

Description

data Digital

Serial 128b/130b data line

clk Digital

DDR bit clock, typically generated by use of the Clock Recovery (PLL) filter on the input data.

24.2.2 Parameters

This filter takes no parameters.

24.2.3 Output Signal

The 128B/130B filter outputs a time series of 128B/130B sample objects. These consist of a control/data flag and a 128-bit data block.

Stream name Type

Description

data Sparse protocol

Output decode

Type Description Color

Format

Ordered set Block with type 2’b10 Control

%032x

Data Block with type 2’b01 Data

%032x

Error Block with type 2’b00 or 2’b11 Error

%032x

24.3 2-Port Shunt Through

Measures the impedance of a DUT connected to a VNA in a 2-port shunt-through topology (VNA ports 1 and 2 connected, with DUT attached between the connection point and ground). This is commonly used for measuring very low impedance networks, such as power distribution networks.

24.4 64b/66b

Decodes the 64/66b line code used by 10Gbase-R and other serial protocols, as originally specified in IEEE 802.3 clause 49.2.

64b/66b is a serial line code which divides transmitted data into 64-bit blocks and scrambles them with a LFSR, then appends a 2-bit type field (which is not scrambled) to each block for synchronization. Block synchronization depends on always having an edge in the type field so types 2’b00 and 2’b11 are disallowed.

Note that this filter only performs block alignment and descrambling. No decoding is applied to the 64-bit blocks, as different upper-layer protocols assign different meaning to them. In 10Gbase-R, type 2’b01 denotes “64 bits of upper layer data" and type 2’b10 denotes “8-bit type field and 56 bits of data whose meaning depends on the type", however this is not universal and some other protocols use these fields for different purposes.

PIC

Figure 24.3: Example 64b/66b decode

PIC

Figure 24.4: Example filter graph using 64b/66b to decode a 10Gbase-R signal

24.4.1 Inputs

Signal name Type

Description

data Digital

Serial 64b/66b data line

clk Digital

DDR bit clock, typically generated by use of the Clock Recovery (PLL) filter on the input data.

24.4.2 Parameters

This filter takes no parameters.

24.4.3 Output Signal

The 64B/66B filter outputs a time series of 64B/66B sample objects. These consist of a control/data flag and a 64-bit data block.

Stream name Type

Description

data Sparse protocol

Output decode

Type Description Color

Format

Control Block with type 2’b10 Control

%016x

Data Block with type 2’b01 Data

%016x

Error Block with type 2’b00 or 2’b11 Error

%016x

24.5 8B/10B (IBM)

Decodes the standard 8b/10b line code used by SGMII, 1000base-X, DisplayPort, JESD204, PCIe gen 1/2, SATA, USB 3.0, and many other common serial protocols.

8b/10b is a dictionary based code which converts each byte of message data to a ten-bit code. In order to maintain DC balance and limit run length to a maximum of five identical bits in a row, all 8-bit input codes have one of:

The transmitter maintains a “running disparity" counter and chooses the appropriate coding for each symbol to ensure DC balance. There are twelve legal codes which are not needed for encoding data values; these are used to encode frame boundaries, idle/alignment sequences, and other control information.

PIC

Figure 24.5: Example 8b/10b decode

24.5.1 Inputs

Signal name Type

Description

data Digital

Serial 8b/10b data line

clk Digital

DDR bit clock, typically generated by use of the Clock Recovery (PLL) filter on the input data.

24.5.2 Parameters

Parameter name Type

Description

Comma Search Window Integer

Number of unit intervals to search when performing comma alignment. A larger window increases the probability of a correct lock, but significantly slows down the decode.

Display Format Enum

Dotted (K28.5 D21.5): displays the 3b4b and 5b6b code blocks separately, with K or D prefix.
Hex (K.bc b5): displays data as hex byte values and control codes with a K prefix.

24.5.3 Output Signal

The 8B/10B filter outputs a time series of 8B/10B sample objects. These consist of a control/data flag, the current running disparity, and a byte of data.

Stream name Type

Description

data Sparse protocol

Output decode

Type Description Color

Format

Control Control codes Control

K%d.%d+ or K%02x

Data Upper layer protocol data Data

D%d.%d+ or %02x

Error Malformed data Error

ERROR

24.6 8B/10B (TMDS)

Decodes the 8-to-10 Transition Minimized Differential Signalling line code used in DVI and HDMI.

Like the 8B/10B (IBM) line code, TMDS is an 8-to-10 bit serial line code. TMDS, however, is designed to minimize the number of toggles in the data stream for EMC reasons, rendering it difficult to synchronize a CDR PLL to. As a result, HDMI and DVI provide a reference clock at the pixel clock rate (1/10 the serial data bit rate) along with the data stream to provide synchronization.

PIC

Figure 24.7: Example TMDS decode

PIC

Figure 24.8: Example filter graph decoding TMDS from a single-ended input. Note that this example recovers the clock from the input signal rather than multiplying up the reference clock.

24.6.1 Inputs

Signal name Type

Description

data Digital

Serial TMDS data line

clk Digital

DDR bit clock, typically generated by use of the Clock Recovery (PLL) filter on the input data. Note that this is 5x the rate of the pixel clock signal.

24.6.2 Parameters

Parameter name Type

Description

Lane Number Integer

Lane number within the link (0-3)

24.6.3 Output Signal

The TMDS filter outputs a time series of TMDS sample objects. These consist of a type field and a byte of data.

The output of the TMDS decode is commonly fed to the DVI or HDMI protocol decoders.

Stream name Type

Description

data Sparse protocol

Output decode

Type Description Color

Format

Control Control codes (H/V sync) Control

CTL%d

Data Pixel/island data Data

%02x

Error Malformed data Error

ERROR

Guard band HDMI data/video guard band Preamble

GB

24.7 AC Couple

Automatically removes a DC offset from an analog waveform by subtracting the average of all samples from each sample.

This filter should only be used in postprocessing already acquired data, or other situations in which AC coupling in the hardware (via an AC coupled probe, or coaxial DC block) is not possible.

PIC

Figure 24.9: Example input and output of the AC Couple filter

PIC

Figure 24.10: Example filter graph AC coupling an input waveform

24.7.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.7.2 Parameters

This filter takes no parameters.

24.7.3 Output Signal

This filter outputs an analog waveform with identical configuration (sparse or uniform) and sample rate to the input, vertically shifted to center the signal at zero volts.

Stream name Type

Description

data Analog

Output decode

24.8 AC RMS

Measures the Root Mean Square value of the waveform after removing any DC offset. The DC offset is calculated by averaging all samples in the waveform.

PIC

Figure 24.11: Example usage of the AC RMS filter on a QAM modulated signal

PIC

Figure 24.12: Example filter graph measuring RMS value of a waveform

24.8.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.8.2 Parameters

This filter takes no parameters.

24.8.3 Output Signal

This filter has two output streams.

Stream name Type

Description

trend Sparse analog

One sample per cycle of the input waveform containing the RMS value across that cycle

avg Scalar

RMS value across the entire waveform

24.9 Add

This filter adds two inputs. Either input may be a vector (waveform) or scalar.

PIC

Figure 24.13: Example usage of adding two analog waveforms

PIC

Figure 24.14: Example filter graph adding two analog waveforms

24.9.1 Inputs

Signal name Type

Description

a Analog waveform or scalar

First input waveform

b Analog waveform or scalar

Second input waveform

24.9.2 Parameters

This filter takes no parameters.

24.9.3 Output Signal

If both inputs are vectors, this filter outputs a waveform containing the pairwise sum; i.e. sample \(i\) of the output is \(a[i] + b[i]\). No resampling is performed on the inputs so incorrect or unexpected results may occur if they do not share the same timebase. Both inputs must be the same type (both sparse or both uniform), mixing sparse and uniform (even if the sample timestamps are the same) is not allowed.

If both inputs are scalars, this filter outputs their sum.

If one input is a vector and the other is a scalar, this filter outputs the sum of the scalar and each element of the waveform, i.e. sample \(i\) of the output is \(a + b[i]\) for the scalar + vector case and \(a[i] + b\) for the vector + scalar.

Stream name Type

Description

data Analog

One sample per cycle of the input waveform containing the sum of the a and b inputs at that time

24.10 Area Under Curve

TODO: needs to be updated when we port to scalar interface

Measures the area under the curve by integrating the data points. By default, area measured above ground is considered as positive and area measured below the ground is considered negative. The negative area can also be considered as positive by changing a filter parameter. The measurement can be performed on the full record or on each cycle.

PIC

Figure 24.15: Example of true area under the curve measurement (Integral)

PIC

Figure 24.16: Example of absolute area under the curve measurement

PIC

Figure 24.17: Example of per-cycle absolute area under the curve measurement

24.10.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.10.2 Parameters

Parameter name Type

Description

Measurement Type Enum

Full Record: Measure the area of entire waveform
Per Cycle: Measure the area of each cycle in the waveform

Area Type Enum

True Area: Consider area below ground as negative
Absolute Area: Consider area below ground as positive

24.10.3 Output Signal

For full record measurement, this filter outputs a waveform indicating total area measured till the time on the waveform. For per cycle measurement, this filter outputs waveform representing area of each cycle.

24.11 ADL5205

Decodes SPI data traffic to one half of an ADL5205 variable gain amplifier.

TODO: Screenshot

24.11.1 Inputs

Signal name Type

Description

spi SPI bus

The SPI data bus

24.11.2 Parameters

This filter takes no parameters.

24.11.3 Output Signal

This filter outputs one ADL5205 sample object for each write transaction, formatted as “write: FA=2 dB, gain=8 dB".

24.12 Autocorrelation

This filter calculates the autocorrelation of an analog waveform. Autocorrelation is a measure of self-similarity calculated by multiplying the signal with a time-shifted copy of itself. In Fig. 24.18, strong peaks can be seen at multiples of the 8b/10b symbol rate.

For best performance, it is crucial to keep the maximum offset as low as possible, since filter run time grows linearly with offset range.

PIC

Figure 24.18: Example waveforms showing autocorrelation of an 8b/10b signal

PIC

Figure 24.19: Example filter graph showing usage of autocorrelation filter

24.12.1 Inputs

Signal name Type

Description

din Uniform analog

Input waveform

24.12.2 Parameters

Parameter name Type

Description

Max offset Integer

Maximum shift (in samples)

24.12.3 Output Signal

This filter outputs an analog waveform with the same timebase as the input, one sample for each correlation offset.

Stream name Type

Description

data Uniform analog

Autocorrelation waveform

24.13 Average

This filter calculates the average of its input.

PIC

Figure 24.20: Typical usage of average filter

PIC

Figure 24.21: Example filter graph showing usage of average filter

24.13.1 Inputs

Signal name Type

Description

in Analog or scalar

Input waveform

24.13.2 Parameters

This filter takes no parameters.

24.13.3 Output Signal

Signal name Type

Description

latest Scalar

Average of the filter’s current input

cumulative Scalar

Average of all input since the last clear-sweeps

totalSamples Scalar

Total number of integrated samples

totalWaveforms Scalar

Total number of integrated waveforms

24.14 Bandwidth

Calculates the -3 dB bandwidth of a network, given the insertion loss magnitude.

The bandwidth is measured relative to a user-specified reference level; for example the bandwidth of a -20 dB attenuator can be measured by setting the reference level to -20 dB.

PIC

Figure 24.22: Measuring the -3 dB bandwidth of a cable

PIC

Figure 24.23: Example filter graph showing usage of bandwidth filter on an imported Touchstone file

24.14.1 Inputs

Signal name Type

Description

din Analog

Input waveform (typically S21)

24.14.2 Parameters

Parameter name Type

Description

Reference Level Float

Nominal (DC / mid band) insertion loss of the network

24.14.3 Output Signal

This filter outputs a scalar containing the first frequency in the network which is at least -3 dB below the reference level. If the input waveform is entirely below this level, the lowest frequency in the input is returned. If the input waveform is entirely above this level, the highest frequency in the input is returned.

Signal name Type

Description

data Scalar

Calculated bandwidth

24.15 Base

TODO: needs to be updated when we port to scalar interface

Calculates the base (logical zero level) of each cycle in a digital waveform.

It is most commonly used as an input to statistics, to view the average base of the entire waveform. At times, however, it may be useful to view the base waveform. For example, in Fig. 24.24, the vertical eye closure caused by channel ISI is readily apparent.

PIC

Figure 24.24: Example of base measurement on a serial data stream

24.15.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.15.2 Parameters

This filter takes no parameters.

24.15.3 Output Signal

This filter outputs an analog waveform with one sample for each group of logical zeroes in the input signal, containing the average value of the zero level for the middle 50% of the low period.

24.16 BIN Import

Loads an Agilent / Keysight / Rigol binary waveform file.

24.16.1 Inputs

This filter takes no inputs.

24.16.2 Parameters

Parameter name Type

Description

BIN File Filename

Path to the file being imported

24.16.3 Output Signal

This filter outputs a uniformly sampled analog waveform for each channel in the file. The number of output streams is variable based on how many channels are present in the file.

24.17 Burst Width

Measures the burst width of each burst in a waveform. A Burst is a sequence of adjacent crossings of the mid level reference of the waveform. Burst width is the duration of this sequence. Bursts are separated by a user-defined idle time that can be provided as a parameter to this filter. The measurement is made on each burst in the waveform.

PIC

Figure 24.25: Example of burst width measurement

24.17.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.17.2 Parameters

Parameter name Type

Description

Idle Time Integer

Minimum idle time with no toggles, before declaring start of a new burst

24.17.3 Output Signal

This filter outputs an analog waveform with one sample for each burst in the input signal.

24.18 Bus Heatmap

Computes a “spectrogram" visualization of bus activity with address on the Y axis and time on the X axis, in order to identify patterns in memory or bus activity.

The current version only supports CAN bus however other common memory interfaces will be added in the future.

PIC

Figure 24.26: CAN bus activity on a car’s OBD port showing the vehicle being started, running for 50 seconds, then shutting down

PIC

Figure 24.27: Example filter graph showing usage of bus heatmap filter on an imported CAN bus capture

24.18.1 Parameters

Parameter name Type

Description

Max Address Integer

Maximum address to display in the plot

X Bin Size Integer

Width of each pixel in the X axis (timebase units)

Y Bin Size Integer

Number of addresses to merge into each pixel in the Y axis

24.18.2 Output Signal

This filter outputs a 2D density plot that is (max address) / (y bin size) pixels high and (memory depth) / (x bin size) pixels wide, spanning the entire duration of the input and the full address range requested.

All packets within the input waveform have the start time and address rounded to the closest bin in X and Y. The corresponding pixel in the integration buffer is incremented, then the final waveform is normalized to cover the full range of the selected color ramp.

Signal name Type

Description

data Density map

Calculated heatmap

24.19 CAN

Decodes the Control Area Network (CAN) bus, commonly used in vehicle control systems. Both standard (11 bit) and extended (29 bit) IDs are supported.

CAN-FD frames are detected and flagged as such, but the current decode cannot parse them fully. Full support is planned (scopehal:334).

PIC

Figure 24.28: Example of decoding a single extended-format frame with 3 bytes of data

PIC

Figure 24.29: Example filter graph showing usage of CAN bus decode

PIC

Figure 24.30: Example packet output

24.19.1 Inputs

Signal name Type

Description

CANH Digital

Thresholded CANH (or CANH-CANL) signal

24.19.2 Parameters

Parameter name Type

Description

Bit Rate Integer

Bit rate of the bus (most commonly 250 or 500 Kbps)

24.19.3 Output Signal

The CAN bus decode outputs a time series of CAN sample objects. These consist of a type field and a byte of data.

Signal name Type

Description

data Protocol

Decoded waveform data

Type Description Color

Format

Control Start of frame Preamble

SOF

ID CAN ID Address

ID %x

RTR Remote Transmission Request Control

DATA | REQ

FD mode CAN-FD mode Control

FD | STD

R0 Reserved bits Preamble

RSVD

DLC Data Length Code Control

Len 3

Data Payload data Data

%02x

Valid CRC Good checksum Checksum OK

CRC: %04x

Invalid CRC Bad checksum Checksum Bad

CRC: %04x

CRC delimiter Bus turnaround Preamble

CRC DELIM

ACK Acknowledgement Checksum OK

ACK

NAK Missing acknowledgement Checksum Bad

NAK

ACK delimiter Bus turnaround Preamble

ACK DELIM

EOF End of frame Preamble

EOF

24.19.4 Protocol Analyzer

TODO

24.20 CAN Analyzer

This filter adds a protocol analyzer table to CAN waveforms which do not have one natively.

24.21 CAN Bitmask

Extracts a bit-masked value from a stream of CAN bus packets and outputs a Boolean waveform

24.22 Can-Utils Import

Loads a log file generated by the candump utility from the Linux can-utils software package and displays it as a series of CAN packets.

Example capture command: candump -l can0

24.23 Channel Emulation

This filter models the effects of applying an arbitrary channel, described via a single path of a set of S-parameters, to a waveform. Fig. 24.31 shows the result of passing a 1.25 Gbps serial data pattern through S21 of a 10x oscilloscope probe with approximately 500 MHz bandwidth. The ISI, attenuation, and phase shift introduced by the channel can all be seen.

PIC

Figure 24.31: Example of channel emulation on a serial data stream

The channel model works in the frequency domain. An FFT is performed on the input, then each complex point is scaled by the interpolated magnitude and rotated by the phase, then an inverse FFT is used to transform the signal back into the time domain.

The group delay of the channel is then estimated and samples are discarded from the beginning of the waveform to prevent causality violations. For example, when performing channel emulation using a network with a 1ns group delay, the output waveform will begin 1ns after the input (since the channel output before this depends on input samples before the start of the waveform). Note that the automatic group delay estimation uses points from roughly the center of the S-parameter dataset in the current implementation; channels which do not have a significant passband around this frequency will give incorrect group delay estimates. The “Group Delay Truncation Mode" parameter can be set to manual in this case, selecting the “Group Delay Truncation" parameter instead of the automatically estimated value.

By choosing appropriate stimulus waveforms and S-parameter paths, many different kinds of analysis can be performed. For example, given a 4-port network describing two transmission lines (with ports 1 and 3 as input, and 2 and 4 as output):

Note that only the single S-parameter path provided is considered, and reflections elsewhere in the system are not modeled. As a result, multiple applications of this filter to emulate a large circuit piecewise (for example, a cable followed by a fixture) may give inaccurate results since reflections between the two networks are not considered. In this situation, it is preferable to use a circuit simulator or the S-Parameter Cascade filter to calculate combined S-parameters of the entire circuit and then perform the channel emulation once.

24.23.1 Inputs

Signal name Type

Description

signal Analog

Input waveform

mag Analog

S-parameter magnitude channel

ang Analog

S-parameter angle channel

24.23.2 Parameters

Parameter name Type

Description

Max Gain Float

Maximum gain to apply

Group Delay Truncation Int

Group delay override for manual mode

Group Delay Truncation Mode Enum

Specifies manual or automatically estimated group delay

24.23.3 Output Signal

This filter outputs an analog waveform with the same timebase as the input, with the emulated channel applied.

24.24 Clip

This filter limits the maximum or minimum value of a waveform to a given value. It can be configured to clip “above" in which case it imposes an upper limit or “below" in which case it imposes a lower limit.

24.24.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.24.2 Parameters

Parameter name Type

Description

Behavior Enum

Select between clipping values above or below selected value

Level Float

Maximum/minimum signal level

24.24.3 Output Signal

This filter outputs an analog waveform with the same timebase as the input, clipped as specified by the parameters.

24.25 Clock Recovery (D-PHY HS Mode)

Extracts a double-rate clock from a MIPI D-PHY clock+data stream, which is gated to only toggle when the data input is in HS mode. This can be used for generating eye patterns of the HS-mode data.

24.26 Clock Recovery (PLL)

This filter uses a PLL to recover a clock from a serial data stream. The recovered clock is double-rate and phased 90°with respect to the data, such that the data can be sampled directly by both edges of the PLL output clock.

When the optional clock gating input is low, the output does not toggle and any edges in the input signal are ignored. As soon as the gate goes high, the PLL will phase shift the internal NCO to align with the next transition in the input signal and then begin running closed-loop.

NOTE: The current edge detector uses a single threshold suitable for NRZ inputs. When using a multi-level modulation such as PAM-4 or MLT-3, set the threshold to the highest or lowest crossing level. This will work fine for MLT-3 but introduces some data-dependent jitter in PAM signals (since the slew rate for an 00-11 transition is different than that for a 10-11 transition). The resulting recovered clock should still be adequate for protocol decoding, however a better edge detector will need to be implemented in order to do adequate jitter measurements on PAM waveforms. An edge detector suitable for PAM is planned (scopehal:77).

The current implementation of this filter uses a simple bang-bang control loop which is fast and provides reasonable jitter transfer performance (passing high frequency jitter but rejecting spread spectrum modulation), but does not precisely match the jitter transfer characteristics of any particular serial data standard. In the future, several standard PLL responses including the Fibre Channel golden PLL (scopehal:163) will be supported as options.

PIC

Figure 24.32: Example of CDR PLL on a serial data stream

24.26.1 Inputs

Signal name Type

Description

IN Analog

Input waveform

Gate Digital

Clock enable signal, or NULL to disable gating

24.26.2 Parameters

Parameter name Type

Description

Symbol rate Float

Symbol rate, in Hz

Threshold Float

Decision threshold for the edge detector, in volts

24.26.3 Output Signal

This filter outputs an digital waveform with one sample per transition of the recovered clock.

24.27 Clock Recovery (UART)

This filter uses a DLL to recover a sampling clock from UART or similar protocol at a known baud rate. The single-rate recovered clock idles low and toggles for each bit in each frame and is phased 90°with respect to data, such that each bit can be sampled on the rising edge of the DLL output clock. This filter can be used for generating an eye pattern of the serial signal.

The current implementation limits support to serial protocols with 10 bits/symbols per frame. Consider using the PLL-based clock recovery for unsupported serial formats if applicable.

The current implementation does not synchronize by aligning falling clock edges with symbol edges.

PIC

Figure 24.33: Example of UART CDR on two serial data frames separated by a short delay

24.27.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.27.2 Parameters

Parameter name Type

Description

Baud rate Float

Symbol rate, in bps

Threshold Float

Decision threshold for the edge detector, in volts

24.27.3 Output Signal

This filter outputs a digital waveform with the sampling clock recovered from the analog stream.

24.28 Complex Import

Loads waveform data from a raw binary file containing I/Q samples in one of several formats. Regardless of sample format, the samples must be in I-Q-I-Q order.

Supported formats (native endianness, no byte swapping is performed):

24.28.1 Inputs

This filter takes no inputs.

24.28.2 Parameters

Parameter name Type

Description

Complex File String

Path to the input file

File Format Enum

Data type of the samples

Sample Rate Int

Sampling frequency

24.28.3 Output Signal

This filter outputs two streams named “I" and “Q" containing the I/Q waveform data.

24.29 Complex Spectrogram

Plots a spectrogram of complex I/Q data.

24.30 Constant

This filter outputs a scalar with a constant value, which may be used as input to other filter graph blocks.

24.30.1 Inputs

This filter takes no inputs.

24.30.2 Parameters

Parameter name Type

Description

Value Float

The value to output

Unit Enum

Data type of the constant value

24.30.3 Output Signal

This filter outputs a single scalar with a constant value.

24.31 Constellation

This filter takes I/Q streams and a double-rate symbol clock and outputs a constellation diagram.

24.32 Coupler De-Embed

Given waveforms from both coupled ports of a dual directional coupler and the S-parameters of the coupler, de-embeds the coupler response in order to recover the forward and reverse waveforms.

NOTE: The current implementation of this filter requires the VK_KHR_push_descriptor Vulkan extension. A fallback implementation for GPUs without this extension will be added at some point in the future.

Both coupled-port waveforms must be the same sample rate, memory depth, and de-skewed relative to one another.

This filter uses a multi-step algorithm to de-embed both the insertion loss of the coupled path and enhance the apparent directivity of the coupler:

1.
De-embed the coupled path response from the coupled port waveforms in order to calculate an initial estimate of the input port waveforms. The same FFT-based algorithm as the De-Embed filter is used.
2.
Given the initial estimated input port waveforms, calculate the leakage from the forward path to the reverse coupled port, and from the reverse path to the forward coupled port. The same FFT-based algorithm as the Channel Emulation filter is used. This estimate is imperfect since it assumes perfect directivity, so a small amount of the legitimate waveform is incorrectly included in the leakage waveform.
3.
Subtract the leakage waveforms from the measured coupled port waveforms. This removes most of the leakage (as well as a small amount of the legitimate waveform).
4.
De-embed the coupled path response from the subtracted waveform in order to get a revised estimate of input port waveforms. This is the final output of the filter.

24.32.1 Inputs

Signal name Type

Description

forward Analog

Forward coupled port waveform

reverse Analog

Reverse coupled port waveform

forwardCoupMag Analog

Magnitude response of forward coupled path

forwardCoupAng Analog

Angle response of forward coupled path

reverseCoupMag Analog

Magnitude response of reverse coupled path

reverseCoupAng Analog

Angle response of reverse coupled path

forwardLeakMag Analog

Magnitude response of forward leakage path

forwardLeakAng Analog

Angle response of forward leakage path

reverseLeakMag Analog

Magnitude response of reverse leakage path

reverseLeakAng Analog

Angle response of reverse leakage path

24.33 CSV Export

Saves waveform data to a comma-separated-value file.

The Update Mode parameter specifies how and when the file is modified:

24.33.1 Inputs

This filter takes a variable number of inputs, named “column1", “column2", etc, which may be of analog, digital, or arbitrary protocol type. 2D persistence maps are not supported.

24.33.2 Parameters

Parameter name Type

Description

File name String

Path to the CSV file

Update mode Enum

Specifies how and when to update the file)

24.33.3 Output Signal

This filter stores its output to a file and has no filter graph output ports.

24.34 CSV Import

Loads waveform data from a comma-separated-value file.

24.35 Current Shunt

Converts a voltage waveform acquired across a known resistance into a current waveform.

24.36 DDJ

Calculates the peak-to-peak data-dependent jitter for a serial data stream.

This filter uses the non-repeating-pattern method, which allows DDJ to be computed for arbitrary waveforms rather than requiring a short, repeating PRBS. In this method, per-UI jitter (TIE) measurements are split across \(2^n\) histogram bins, one for each possible combination of the preceding \(n\) bits. The jitter samples for each bin are then averaged to remove the effects of other jitter, leaving only the DDJ. The final DDJ value is reported as the difference between the minimum and maximum histogram bins.

The current implementation uses a fixed window size of \(n=8\) UI. If the channel has significant memory effects or reflections with delays of more than 8 UI, DDJ maybe underestimated.

The current implementation only supports NRZ signals and cannot measure DDJ for MLT3 or PAM waveforms.

24.36.1 Inputs

Signal name Type

Description

TIE Analog

TIE waveform computed by the TIE filter

Threshold Digital

Thresholded digital sample values

Clock Digital

Double rate, center aligned sampling clock for threshold values

24.36.2 Parameters

This filter takes no parameters.

24.36.3 Output Signal

This filter outputs an analog waveform with a single sample containing the computed DDJ value.

Additionally, the raw DDJ histogram is stored internally and may be accessed by other filters via the C++ API. There is currently no way to display the histogram content.

24.37 DDR1 Command Bus

Decodes the command bus for first-generation DDR SDRAM.

24.38 DDR3 Command Bus

Decodes the command bus for third-generation DDR SDRAM.

24.39 De-Embed

Applies the inverse of a channel (described by a single path in an S-parameter dataset, normally \(S_{21}\)) to a signal, in order to calculate what the waveform would have looked like at the input to a cable, fixture, etc. given the signal seen at the output.

The channel model works in the frequency domain. An FFT is performed on the input, then each complex point is scaled by the interpolated magnitude and rotated by the phase, then an inverse FFT is used to transform the signal back into the time domain.

The group delay of the channel is then estimated and samples are discarded from the end of the waveform to prevent causality violations. For example, when performing a de-embed using a network with a 1ns group delay, the output waveform will end 1ns before the input does (since the channel output after this depends on input samples after the end of the stimulus waveform). Note that the automatic group delay estimation uses points from roughly the center of the S-parameter dataset in the current implementation; channels which do not have a significant passband around this frequency will give incorrect group delay estimates. The “Group Delay Truncation Mode" parameter can be set to manual in this case, selecting the “Group Delay Truncation" parameter instead of the automatically estimated value.

Note that only the single S-parameter path provided is considered, and reflections elsewhere in the system are not modeled. As a result, multiple applications of this filter to de-embed a large circuit piecewise (for example, a cable followed by a probe) may give inaccurate results since reflections between the two networks are not considered. In this situation, it is preferable to use a circuit simulator or the S-Parameter Cascade filter to calculate combined S-parameters of the entire circuit and then perform a single de-embed.

The maximum gain the de-embed applies is capped (default 20 dB) in order to prevent amplifying noise outside the passband of the network being de-embedded.

24.39.1 Inputs

Signal name Type

Description

signal Analog

Input waveform

mag Analog

S-parameter magnitude channel

ang Analog

S-parameter angle channel

24.39.2 Parameters

Parameter name Type

Description

Max Gain Float

Maximum gain to apply

Group Delay Truncation Int

Group delay override for manual mode

Group Delay Truncation Mode Enum

Specifies manual or automatically estimated group delay

24.39.3 Output Signal

This filter outputs an analog waveform with the same timebase as the input, with the emulated channel applied.

24.40 Deskew

Moves an analog waveform earlier or later in time to compensate for trigger offsets, probe length mismatch, etc. It is generally preferable to deskew using the skew adjustment on the channel during acquisition; this filter is provided for correction in postprocessing.

24.40.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.40.2 Parameters

Parameter name Type

Description

Skew Float

Time offset to shift the waveform

24.40.3 Output Signal

This filter outputs an analog waveform with one sample for each sample in the input, phase shifted by the requested offset.

24.41 Digital to NRZ

Convert a digital signal (and associated clock) to an analog NRZ waveform. This filter uses a simplistic piecewise linear rise/fall time model: the output stays at the logic low/high voltage until the input changes, then ramps at a constant rate to then new value. For more accurate modeling of edge shape use the IBIS Driver filter with the appropriate IBIS model for your DUT.

24.41.1 Inputs

Signal name Type

Description

data Digital

Digital data to send

clk Digital

Clock for data

24.41.2 Parameters

Parameter name Type

Description

Level 0 Float

Voltage to send when the input is a logic 0

Level 1 Float

Voltage to send when the input is a logic 1

Sample Rate Int

Sample rate for the generated waveform

Transition Time Int

Rising and falling edge time

24.41.3 Output Signal

This filter outputs an analog NRZ version of the provided digital input, sampled uniformly at the specified rate.

24.42 Digital to PAM4

Convert a digital signal (and associated clock) to an analog PAM-4 waveform. This filter uses a simplistic piecewise linear rise/fall time model: the output stays at the current symbol’s voltage until the input changes, then ramps at a constant rate to then new value. For more accurate modeling of edge shape use the IBIS Driver filter with the appropriate IBIS model for your DUT.

The input data is a digital serial bit stream at twice the PAM4 symbol rate. Two consecutive input bits map to a single PAM-4 output sample.

24.42.1 Inputs

Signal name Type

Description

data Digital

Serial digital data to send

clk Digital

Clock for data

24.42.2 Parameters

Parameter name Type

Description

Level 00 Float

Voltage to send when the input is a logic 0-0

Level 01 Float

Voltage to send when the input is a logic 0-1

Level 10 Float

Voltage to send when the input is a logic 1-0

Level 11 Float

Voltage to send when the input is a logic 1-1

Sample Rate Int

Sample rate for the generated waveform

Transition Time Int

Rising and falling edge time

24.42.3 Output Signal

This filter outputs an analog PAM-4 version of the provided digital input, sampled uniformly at the specified rate.

24.43 DisplayPort - Aux Channel

Decodes the Auxiliary Channel of DisplayPort

24.44 Divide

Divides one waveform by another.

24.45 Downconvert

Performs digital downconversion by mixing a directly sampled RF signal with a two-phase local oscillator, then outputs the downconverted signal. No LO rejection filtering or decimation is performed.

24.46 Downsample

Low-pass filters a signal to prevent aliasing, then decimates by an integer factor.

24.47 DRAM Clocks

Given a DRAM command bus and a DQS strobe, produce separate gated DQ clock streams for read and write bursts.

24.48 DRAM Trcd

Calculates \(T_{rcd}\) (RAS-to-CAS delay) for each newly opened row in a DRAM command bus stream.

24.49 DRAM Trfc

Calculates \(T_{rfc}\) (refresh-to-refresh delay) for each refresh operation in a DRAM command bus stream.

24.50 Duty Cycle

Calculates the duty cycle of a bimodal waveform. The duty cycle is defined as the percentage of time spent in the high state divided by the period.

24.51 DVI

Decodes Digital Visual Interface (DVI) video signals.

24.52 Emphasis

Adds pre/de emphasis to a signal.

24.53 Emphasis Removal

Removes pre/de emphasis from a signal.

24.54 Enhanced Resolution

Applies a FIR low-pass filter to a signal to increase the vertical resolution and reduce noise at the cost of reduced bandwidth. This technique assumes a small amount of Gaussian noise is present in the input waveform, such that a signal whose true value is midway between two ADC codes will randomly fluctuate between the two quantized values, with an average equal to the true value.

Each half bit of resolution reduces the bandwidth by an additional factor of two beyond the Nyquist limit. For example, a 1.5 bit resolution improvement reduces the bandwith to Fnyquist / 8. The filter properties dialog displays the calculated -3 dB bandwidth based on the current input sample rate.

24.54.1 Inputs

Signal name Type

Description

in Analog

Input signal

24.54.2 Parameters

Parameter name Type

Description

Bits Enum

Number of additional bits of resolution to add

24.55 Envelope

Finds the minimum and maximum of each sample in the input over time, and outputs them as separate streams.

24.56 Ethernet - 10baseT

Decodes the 10base-T Ethernet PCS/PMA as specified in IEEE 802.3-2018 clause 14.

24.57 Ethernet - 100baseT1

Decodes the 100base-T1 single-pair / automotive Ethernet PMA/PCS, as specified in IEEE 802.3-2018 clause 96.

Decodes the link training stage of 100base-T1 single-pair / automotive Ethernet, as specified in IEEE 802.3-2018 clause 96.

24.59 Ethernet - 100baseTX

Decodes the 100base-TX Ethernet PMA/PCS as specified in IEEE 802.3-2018 clause 24 and 25, and the ANSI X3T12 FDDI PHY.

24.60 Ethernet - 1000baseX

Decodes the 1000base-X Ethernet PCS as specified in IEEE 802.3-2018 clause 36.

Signal name Type

Description

data 8b/10b

Output of 8b/10b protocol decode

24.60.1 Parameters

This filter takes no parameters.

24.60.2 Output Signal

The 1000base-X filter outputs a series of Ethernet frame segment objects.

Type Description Color

Format

Preamble Preamble Preamble

PREAMBLE

Preamble Start of frame delimiter Preamble

SFD

Address Src/dest MAC Address

From 02:00:11:22:33:44

Control Ethertype Control

Type: IPv4
Type: 0xbeef

Control VLAN tag Control

VLAN 10, PCP 0

Data Frame data Data

a5

Checksum OK Valid FCS Checksum OK

CRC: 0xdeadbeef

Checksum Bad Invalid FCS Checksum Bad

CRC: 0xbaadc0de

Error Malformed data Error

ERROR

TODO: Document protocol analyzer output

24.61 Ethernet - 10Gbase-R

Decodes the 10Gbase-R Ethernet PCS as specified in IEEE 802.3-2018 clause 49.

24.62 Ethernet - GMII

Decodes the Gigabit Media Independent Interface as specified in IEEE 802.3-2018 clause 35.

24.63 Ethernet - QSGMII

Converts a Quad SGMII data stream into four separate SGMII data streams which can be independently decoded.

24.64 Ethernet - RGMII

Decodes the Reduced Gigabit Media Independent Interface as specified in the RGMII 2.0 specification.

24.65 Ethernet - RMII

Decodes the Reduced Media Independent Interface as specified in the RMII specification.

24.66 Ethernet - SGMII

Decodes Serial GMII data at 10, 100, or 1000 Mbps rates to Ethernet frames.

24.67 Ethernet Autonegotiation

Decodes the Base-T autonegotiation signaling for Ethernet as specified in IEEE 802.3-2018 clause 28.

This filter outputs a stream of 16-bit negotiation codewords, which is typically fed to the Ethernet Autonegotiation Page filter.

24.68 Ethernet Autonegotiation Page

Decodes a stream of 16-bit negotiation codewords to ability values, as specified in IEEE 802.3-2018 annex 28A, 28B, and 28C.

Note that the autonegotiation protocol is stateful, so it is not possible to definitively decode a single code word or small group of them in isolation. For accurate decoding, the input waveform should start with the Base Page (sent during the link-down state before a link partner has been detected).]

24.69 Ethernet Base-X Autonegotiation

Decodes the Base-X autonegotiation signaling for Ethernet as specified in IEEE 802.3-2018 clause 37.

Also supports the extended autonegotiation used by SGMII.

24.70 Exponential Moving Average

Calculates an exponential moving average of the input waveform, averaging the data at each sample index with the previous values of the same over multiple consecutive acquisitions.

The average is calculated recursively; for sample value \(S\) and half life \(T\), the recurrence relation is:

\begin {math} Out[i] = \left (1-\frac {1}{\displaystyle {2^\frac {1}{x}}}\right )\left (Out[i-1]\right ) + \left (\frac {1}{\displaystyle {2^\frac {1}{x}}}\right )\left (S\right ) \end {math}

24.70.1 Inputs

Signal name Type

Description

din Analog

Input signal

24.70.2 Parameters

Parameter name Type

Description

Half-life Integer

Half life of the average, in waveforms

24.71 Eye Bit Rate

Measures the bit rate of an eye pattern.

24.72 Eye Height

Measures the vertical opening of an eye pattern.

24.73 Eye P-P Jitter

Measures the peak-to-peak jitter of an eye pattern.

24.74 Eye Pattern

Calculates an eye pattern given an analog waveform and a clock (typically generated by the Clock Recovery (PLL) filter).

PIC

Figure 24.34: Typical usage of the eye pattern filter

PIC

Figure 24.35: Example filter graph for computing an eye pattern from a differential input

24.74.1 Inputs

Signal name Type

Description

din Analog

Input waveform

clk Digital

Symbol clock

24.74.2 Parameters

Parameter name Type

Description

Bit Rate Int

Symbol rate (if not using automatic bit rate calculation)

Bit Rate Mode Enum

Specifies whether to automatically calculate the symbol rate from the input clock, or use a user-specified symbol rate

Center Voltage Float

Vertical midpoint of the eye (normally 0)

Clock Edge Float

Selects whether the sampling clock is rising edge triggered, falling edge triggered, or DDR (default)

Mask Filename

Path to a YAML file containing pass/fail mask polygons

Saturation Level Float

Saturation level for normalizing eye patterns, in range [0, 1.0]. 1.0 is the default and maps the full input range to the full output range; lower values saturate. For example 0.5 means the bottom half of count values map to the full scale output range and anything larger is clipped to full scale.

Vertical Range Float

Full scale Y-axis range (if not autoscaling)

Vertical Scale Mode Enum

Specifies whether to autoscale the input or use a user-specified full scale range

24.74.3 Output Signal

Stream name Type

Description

data Eye

Output eye pattern

hitrate Scalar

Fraction of samples touching the mask (mask hits / samples integrated). If no mask is set, this output will always be zero.

uisIntegrated Scalar

Number of unit intervals integrated by the eye

samplesIntegrated Scalar

Number of samples integrated by the eye

24.75 Eye Period

Measures the UI width of an eye pattern.

24.76 Eye Width

Measures the horizontal opening of an eye pattern.

24.77 Fall

Measures the fall time of each falling edge in a waveform.

24.78 FFT

Calculates a Fast Fourier Transform and displays the magnitude response.

24.79 FIR

Applies a finite-impulse-response filter to a signal.

24.80 Frequency

Measures the frequency of each cycle in a waveform.

24.81 FSK

Converts a frequency-vs-time waveform (typically generated by the Vector Frequency filter either directly or through a denoising filter) to a digital waveform. As of now, only BFSK is supported.

The filter calculates a histogram of the input signal each waveform, expecting a bimodal distribution. The two highest histogram peaks are selected as the nominal logic 0 and 1 levels, with the higher frequency assigned to logic 1 and the lower to logic 0.

Thresholding is performed at the midpoint of the nominal 0 and 1 levels, with hysteresis equal to 20% of the difference between the nominal levels. Using adaptive thresholds allows the filter to automatically track frequency-hopping systems as long as only one packet is present in each waveform.

TODO: re-histogram any time we break squelch?

24.82 Full Width at Half Maximum

Calculates the full width at the half of maximum value of all peaks in a signal.

PIC

Figure 24.36: Example of full width at half maximum of a Sinewave input waveform.

24.82.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.82.2 Parameters

Parameter name Type

Description

Peak Threshold Float

Pulses with peak values below this threshold are not considered

24.82.3 Output Signal

This filter outputs two analog waveforms. One shows the value of full width at half maximum value of all the peaks in the signal. Another output waveform shows the amplitude of all the corresponding peaks.

24.83 Gate

This filter outputs a copy of its input with zero delay if the enable signal is high. If the enable signal is low, the output is either unchanged (latched) or no waveform is produced (gated).

24.84 Glitch Removal

This filter removes ‘glitches’ from a digital waveform. A Minimum Width is specified, and any ‘pulse’ (period during which the waveform has the same value) shorter than that pulse is ignored, the previous pulse continuing. Common use is to remove glitches from a \(f\) Hz signal by filtering pulses shorter than \(\frac {1}{1.1f}\) s.

24.84.1 Inputs

Signal name Type

Description

data Digital

Input data.

24.84.2 Parameters

Parameter name Type

Description

Minimum Width Float

Minimum width of a pulse allowed through.

24.84.3 Output Signal

This filter outputs a digital waveform which has no samples shorter than Minimum Width. The output waveform does not have any samples until the first pulse of at least Minimum Width, and the last state continues to the end of the waveform.

24.85 Group Delay

Calculates the group delay of a phase-vs-frequency waveform, \(\frac {d\phi }{d\omega }\).

24.85.1 Inputs

Signal name Type

Description

Phase Analog

Phase angle vs frequency

24.85.2 Parameters

This filter takes no parameters.

24.85.3 Output Signal

This filter outputs an analog waveform with one sample per frequency point, containing the group delay at that frequency.

24.86 Histogram

Computes a histogram from incoming data. Histogram counts are accumulated across multiple processed waveforms and cleared on "Clear Sweeps." Number of histogram bins is determined from the bin size parameter and the max/min values configured. Default behavior is to autorange the input and have 100fs bins. Samples outside a configured manual range will fall into the highest/lowest bin and the "CLIPPING" flag will be set on the output waveform.

24.86.1 Inputs

Signal name Type

Description

data Analog

Input data. Usually in units of fs.

24.86.2 Parameters

Parameter name Type

Description

Autorange Bool

If the filter should automatically range the maximum and minimum bins

Min Value Float

Lower end of the lowest bin when Autorange disabled

Max Value Float

Higher end of the highest bin when Autorange disabled

Bin Size Float

Size of a bin. Number of bins is determined from this and max/min values

24.86.3 Output Signal

This filter outputs an analog waveform with one sample per bin and a value in counts. The "CLIPPING" flag on a waveform indicates that input samples fell outside the configured range of bins (when not using Autoranging.)

24.87 Horizontal Bathtub

Calculates a bathtub curve across a horizontal slice through an eye pattern.

24.88 HDMI

Decodes HDMI

24.89 \(I^2C\)

Decodes the Phillips \(I^2C\) bus protocol.

24.90 \(I^2C\) EEPROM

Decodes common \(I^2C\) EEPROM memory devices

24.91 \(I^2C\) Register

Decodes low level \(I^2C\) bus traffic into a series of register read-write transactions targeting a specific device address.

This filter assumes that the device has a fixed sized address pointer. Register writes consist of a write to the device’s address, the register address, then write data. Reads consist of a write to the device’s address, the register address, a read from the device’s address, and read data.

24.92 IBIS Driver

Converts a digital waveform and double-rate clock to an analog waveform using the rising and falling edge waveforms from an IBIS model.

This filter assumes a perfect \(50\Omega \) load or other matched load as specified in the IBIS model; clamp behavior of the driver in response to channels with significant reflection is not currently modeled.

IBIS-AMI is not currently supported, however this is planned (scopehal:192).

Model name and termination conditions are dynamically created enumerations; the set of legal values for these fields depends on the specific .ibs file loaded.

Note that IBIS corners specify minimum, typical, or maximum output voltage, not timing or other properties.

24.92.1 Inputs

Signal name Type

Description

data Digital

Digital waveform to transmit

clk Digital

Transmit clock (double rate)

24.92.2 Parameters

Parameter name Type

Description

Corner Enum

Name of the corner to use

File Path String

Filesystem path to the IBIS model

Model Name Enum

Name of the I/O cell model within the IBIS model to use

Sample Rate Int

Sample rate to use for the output waveform

Termination Enum

Name of the termination condition to use

24.92.3 Output Signal

This filter outputs an analog waveform containing uniformly spaced samples at the specified rate.

24.93 Invert

Inverts an analog waveform by negating each sample.

24.94 Intel eSPI

Decodes the Enhanced Serial Peripheral Interface protocol, used between Intel CPUs and peripherals such as baseboard management controllers (BMCs) and embedded controllers (ECs).

24.95 IPv4

Internet Protocol version 4

24.96 IQ Demux

Given a single waveform containing consecutively sampled I and Q values, plus a recovered clock, output separate sampled I and Q waveforms and a half-rate clock.

I is always sampled before Q.

Two alignment methods are supported: None (first clock edge in the input is arbitrarily declared to be I) and 100Base-T1 (the alignment with the least (0,0) symbols is preferred)

24.97 IQ Squelch

Gates I/Q data to eliminate noise between packets. Signal regions with amplitude below the squelch threshold are replaced with an equal number of zero-valued samples.

24.98 J1939 Analog

Outputs an analog signal extracted from a specific J1939 PGN

24.99 J1939 Bitmask

Outputs a Boolean signal indicating whether a specific J1939 PGN matches a bitmask

24.100 J1939 PDU

Decodes CAN bus IDs to decode the J1939 PDU1 and PDU2 format.

24.101 J1939 Source Match

Filters a sequence of J1939 PDUs to output only those which are sent from a specified source address

24.102 J1939 Transport

Decodes the J1939 transport layer (PGNs 60416 and 60160) and reassembles multi-part packets into single logical packets. All other PGNs pass through this filter unchanged.

As of now, only broadcast mode (BAM) packets are decoded, due to lack of CM test datasets.

24.103 Jitter

Adds random and/or periodic jitter to a digital waveform by displacing each sample.

Random jitter is unbounded and has a Gaussian distribution with a user-specified standard deviation. Periodic jitter is sinusoidal and has a bounded range of -1 to +1 times the specified amplitude. Only a single frequency of Pj is supported, however several instances of this filter may be chained in order to inject Pj at multiple frequencies. The starting phase of the Pj sinusoid is random.

24.103.1 Inputs

Signal name Type

Description

din Digital

Input waveform

24.103.2 Parameters

Parameter name Type

Description

Rj Stdev Float

Standard deviation of random jitter

Pj Frequency Float

Frequency of periodic jitter

Pj Amplitude Float

Amplitude of periodic jitter

24.103.3 Output Signal

This filter outputs a digital waveform with one sample per sample in the input waveform, with sample time shifted by the sum of random and periodic jitter terms. The output waveform will have 1fs timebase resolution and not be dense packed, regardless of the input timebase configuration.

24.104 Jitter Spectrum

Calculates an FFT of a TIE waveform.

24.105 JTAG

Joint Test Action Group

24.106 Magnitude

Calculates the magnitude of a complex valued signal

24.107 Maximum

This filter calculates the maximum of its input.

24.107.1 Inputs

Signal name Type

Description

in Analog

Input waveform

24.107.2 Parameters

This filter takes no parameters.

24.107.3 Output Signal

Signal name Type

Description

latest Scalar

Maximum of the filter’s current input

cumulative Scalar

Maximum of all input since the last clear-sweeps

totalSamples Scalar

Total number of integrated samples

totalWaveforms Scalar

Total number of integrated waveforms

24.108 MDIO

Decodes the Management Data Input/Output interface on Ethernet PHYs. At the moment, only Clause 22 format is supported.

24.109 Memory

Takes a snapshot of the input which remains “frozen" until manually updated. Typically used for comparing past and present values of a signal on the same plot.

24.110 MIL-STD-1553

Decodes the MIL-STD-1553 avionics data bus.

24.111 Minimum

This filter calculates the minimum of its input.

24.111.1 Inputs

Signal name Type

Description

in Analog

Input waveform

24.111.2 Parameters

This filter takes no parameters.

24.111.3 Output Signal

Signal name Type

Description

latest Scalar

Minimum of the filter’s current input

cumulative Scalar

Minimum of all input since the last clear-sweeps

totalSamples Scalar

Total number of integrated samples

totalWaveforms Scalar

Total number of integrated waveforms

24.112 MIPI D-Phy Data

Converts two streams of D-Phy Symbols (one data and one clock) into bytes and control events.

Only a single data lane is supported at the moment, but multi-lane support will be added in the future.

This filter only supports high speed data; escape mode data is handled by the D-PHY Escape Mode filter.

24.113 MIPI D-Phy Escape Mode

Converts a stream of D-PHY Symbols for a data lane into low-power data.

24.114 MIPI D-Phy Symbol

Decodes one or two analog channels to MIPI D-PHY symbols (HS/LS line states). Either the positive half, or both positive and negative, of the pair may be provided.

If only the positive half is provided, it is possible to decode HS data and clocks, but not the LP-01 and LP-10 states, as these are indistinguishable from LP-00 and LP-11. This prevents proper decoding of Escape Mode data, although Start-Of-Transmission sequences may be inferred from context.

24.115 MIPI DSI Frame

Converts a MIPI DSI Packet stream into video scanlines.

24.116 MIPI DSI Packet

Converts two streams of D-Phy Symbol’s (one data and one clock) into MIPI DSI packets.

24.117 Moving Average

Calculates a moving average (box filter) over an analog waveform.

24.118 Multiply

Multiplies one waveform or scalar by another. No resampling is performed; if both inputs are waveforms they must have identical sample rates and be aligned in time.

Unit conversions are performed, for example the product of a voltage and current waveform is a power waveform.

24.119 NCO

Numerically controlled oscillator: creates a sinusoidal waveform whose frequency tracks a target value

24.120 Noise

Adds Gaussian noise with a specified standard deviation to a waveform.

24.121 Overshoot

24.122 PAM4 Demodulator

Converts an analog PAM4 waveform and recovered clock into a digital serial waveform and recovered clock at twice the symbol rate. This allows conventional NRZ protocol decodes to be applied to a PAM4 data stream.

Gray coding is assumed, as used by all major PAM-4 networking standards.

24.123 PAM Edge Detector

Finds level crossings in a PAM signal (of arbitrary order) and outputs a digital waveform which toggles each time the PAM signal transitions to a new level. This may be used as the input to a CDR PLL block which is designed to work on NRZ input.

24.124 Parallel Bus

24.125 PcapNG Export

Exports a series of packets to a PCAPNG file (or pipe). As of this writing, Ethernet is the only implemented link layer.

24.126 PcapNG Import

Imports a PcapNG file as a list of packets. As of this writing, CAN is the only implemented link layer.

Decodes the Data Link layer of PCI Express. At this layer DLLPs are fully decoded. TLP sequence numbers are visible and CRC16s are checked, however TLP content is displayed as hex dumps.

24.128 PCIe Gen 1/2 Logical

Decodes the Logical Sub-Block of the PCI Express 1.0 and 2.0 PHY. This layer decodes 8B/10B symbols and the LFSR scrambler. TLP and DLLP start/end markers are identified but no packet decoding is performed.

24.129 PCIe Gen 3/4/5 Logical

Decodes the Logical Sub-Block of the PCI Express 3.0, 4.0, and 5.0 PHY. This layer converts 128b/130b symbols into a stream of protocol packets and content. TLP and DLLP start/end markers are identified but no packet decoding is performed.

Decodes the initial PCIe gen1/2 link training sequence

24.131 PCIe Transport

Decodes the Transport layer of PCI Express. At this layer TLPs are fully decoded, however only a unidirectional view of the system is visible (only TX or only RX).

24.132 Peak Hold

24.133 Peak-to-Peak

24.134 Peaks

Finds peaks in a waveform (typically a spectrum of some sort)

24.135 Period

24.136 Phase

Displays the relative phase of a signal as a function of time. Typically used for visualizing PSK modulations.

24.137 Phase Nonlinearity

Given a phase angle waveform, outputs the difference between the actual phase and linear phase. A perfectly linear network will be displayed as a horizontal line at Y=0; leading or lagging phase will show up as spikes above or below zero.

The nominal linear phase response is calculated based on the averge group delay between two user-supplied frequencies. Moving the reference frequencies further apart reduces the impact of phase noise in the data (since more points are being averaged) however both points must be located well within the linear region of the network in order to give accurate results.

PIC

Figure 24.37: Example of nonlinear phase of a filter in the stopband

24.137.1 Inputs

Signal name Type

Description

Phase Analog

Input waveform

24.137.2 Parameters

Parameter name Type

Description

Ref Freq Low Float

Lower reference frequency

Ref Freq High Float

Upper reference frequency

24.137.3 Output Signal

This filter outputs an analog waveform with one sample for each sample in the input, containing the deviation from linear phase.

24.138 PRBS

Generates a pseudorandom bit sequence, and double rate bit clock, with a specified bit rate from a list of standard polynomials.

24.139 Pulse Width

This filter measures the length and amplitude of pulses and outputs that as a waveform. It auto-thresholds analog inputs at 50%.

PIC

Figure 24.38: Example of pulse width measurement of a clipped sinewave input waveform.

24.139.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.139.2 Output Signal

This filter outputs two output waveforms. One is a sparse analog waveform with the same timebase as the input, containing one sample per pulse with a duration and value equal to the length of the pulse. Other is a similar sparse analog waveform, but its values are equal to the amplitude of the pulses. In case, the input is uniform or sparse digital, this second output waveform is uniform or sparse digital respectively instead of analog.

24.140 QSPI

Quad SPI as used in serial Flash. Note that this filter only decodes quad mode streams, not x1 SPI.

24.141 Quadrature

Quadrature pulses from a rotary encoder

24.142 Reference Plane Extension

Given a set of S-parameters, shifts the reference plane on one or two ports and outputs a new set of S-parameters.

24.143 RIS

Performs random interleaved sampling (RIS) on a repetitive, uniformly sampled analog waveform in order to create a waveform with a higher effective sample rate.

24.144 Rise

Calculates the rise time for each cycle of a waveform

24.145 Rj + BUj

Removes data-dependent jitter (DDJ) from a TIE waveform, leaving uncorrelated jitter (Rj and BUj).

24.146 RMS

Measures the Root Mean Square value of the waveform, including any DC component

24.146.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.146.2 Parameters

This filter takes no parameters.

24.146.3 Output Signal

This filter has two output streams.

Stream name Type

Description

trend Sparse analog

One sample per cycle of the input waveform containing the RMS value across that cycle

avg Scalar

RMS value across the entire waveform

24.147 S-Parameter Cascade

Cascades two two-port networks and outputs a two-port network equivalent to the two input networks in series.

24.148 Sawtooth

Generates a sawtooth waveform.

24.149 S-Parameter De-Embed

Given a two port network equal to the cascade of two others, plus S-parameters for one of the two sub-networks, output S-parameters for the other.

24.150 Scalar Pulse Delay

Delays a scalar pulse by approximately the specified real time.

This filter is intended for use in control or test applications to trigger a measurement after an experimental setup has had time to stabilize.

24.151 Scalar Stairstep

Outputs a scalar value which ramps from a starting value to an ending value in a stairstep pattern, with configurable step duration and spacing.

24.152 SD Card Command

Decodes the Secure Digital card command bus protocol

24.153 Setup / Hold

Calculates the setup and hold times of a data signal relative to a clock.

Setup time is measured from data valid (leaving the undefined region between Vil and Vih) to clock invalid (entering the undefined region). Hold time is measured from clock valid to data invalid.

The overall setup and hold times reported by the filter are the minimums observed across the entire waveform.

If the undefined regions of data and clock signals ever overlap, both setup and hold time are reported as zero.

24.153.1 Inputs

Signal name Type

Description

data Analog

Input data

clock Analog

Input clock

24.153.2 Parameters

Parameter name Type

Description

Vih Float

High level threshold for the input buffer

Vil Float

Low level threshold for the input buffer

Clock Edge Enum

Rising: Sample data on the rising clock edge
Falling: Sample data on the falling clock edge
Both: Sample data on both clock edges

24.153.3 Output Signal

Signal name Type

Description

tsetup Analog scalar

Lowest setup time observed in the waveform

thold Analog scalar

Lowest hold time observed in the waveform

24.154 Sine

Generates a pure sine wave with specified frequency, amplitude, sample rate, and DC bias.

24.155 SNR

Computes simple \(\frac {\mu }{\sigma }\) (mean over standard deviation) signal-to-noise ratio for the input signal.

24.155.1 Inputs

Signal name Type

Description

in Analog

Input Waveform

24.155.2 Parameters

This filter takes no parameters.

24.155.3 Output Signal

This filter outputs a scalar value representing the \(\frac {\mu }{\sigma }\) SNR for the whole waveform. For sparse waveforms samples are weighted by length and gaps are not considered.

24.156 Spectrogram

Displays a 2D plot of frequency vs time using configurable FFT length.

24.157 SPI

Serial Peripheral Interface.

24.158 SPI Flash

Flash memory attached to a SPI or quad SPI bus. Typically these chips have part numbers that start with “25".

24.159 Squelch

Detects periods with no signal.

24.160 Step

Generates a single step from one voltage level to another. Typically used for measuring step response of a channel or doing TDR transforms on S-parameters.

24.161 Subtract

Subtracts one waveform from another. No resampling is performed; both inputs must have identical sample rates.

24.161.1 Inputs

Signal name Type

Description

IN+ Analog

Positive input waveform

IN- Analog

Negative input waveform

24.161.2 Parameters

This filter takes no parameters.

24.161.3 Output Signal

This filter outputs an analog waveform with one sample for each sample in the input, containing the difference of the two input waveforms.

24.162 SWD

The Serial Wire Debug protocol between a Debug Probe and an ARM Microcontroller, typically from the CORTEX-M family. This decode recognises all SWD frame elements and validates type and parity of both incoming and outgoing messages. It also identifies line resets and line protocol change messages.

The SWD Protocol defines that the target will read and write on the rising edge of SWCLK. It does not place any constraint on when the probe reads and writes. For the purposes of graphical depiction each protocol element starts at a falling edge and continues to be valid until the next falling edge, following the graphical convention established in the ARM documentation.

Reference: ARM Debug Interface v5 Architecture Specification, Chapter 4.

PIC

Figure 24.39: Example of SWD protocol decode

24.162.1 Inputs

Signal name Type

Description

SWDIO Digital

Serial Wire Data In/Out (To/From target)

SWCLK Digital

Serial Wire Clock In (To Target from Debug Probe)

24.162.2 Parameters

No parameters are required for configuration of SWD. The protocol is clocked by SWCLK.

24.162.3 Output Signal

The SWD bus decode outputs a time series of SWD message elements, each of which may be one or a number of bits long. Each message element consist of a type and optional numeric content.

Type Description Color

Format

Line Control Line Reset Preamble

LINE RESET

Line Mode Line Mode Change to SWD Control

JTAG TO SWD

Line Mode Line Mode Change to JTAG Control

SWD TO JTAG

Line Mode Line Mode Change to Dormant Control

SWD TO DORMANT

Line Mode Leave Dormant Mode Control

LEAVE DORMANT

Start Start of frame Preamble

START

APnDP Selection between AP and DP Control

AP|DP

RnW Read or Write mode Control

R|W

ADDR AP or DP Address Address

Reg %02x

Parity Good Header Parity Control

OK

Parity Bad Header Parity Control

BAD

Stop End of Header Preamble

STOP

Park Line Release Preamble

PARK

Turnaround Line Direction Change Preamble

TURN

Acknowledge Good Response from target to request Control

ACK|WAIT

Acknowledge Bad Response from target to request Control

FAULT|ERROR

Data Payload to/From Target Data

%08x

24.163 SWD MEM-AP

Converts SWD accesses to MEM-AP registers into memory read-write transactions.

Reference: ARM Debug Interface v5 Architecture Specification, chapter 8.

24.164 Tachometer

Converts pulses from a tachometer to shaft speed

24.165 Tapped Delay Line

Generic FIR filter with arbitrary tap values and delays. Can be used as-is for testing FIR filter coefficients calculated by hand, but most commonly used as a base class for more specialized filters.

24.166 TCP

Decodes the Transmission Control Protocol (RFC 675). As of this writing, only IPv4 is supported as a network layer protocol. IPv6 support is planned once an IPv6 protocol decode has been written.

24.167 TDR

Converts a TDR waveform from volts to reflection coefficient or impedance.

24.168 Time Outside Level

Measures the total integrated time a signal remains above a high reference level or below a low reference level or both.

PIC

Figure 24.40: Example of time outside high level measurement with a high level threshold of 0mV

24.168.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.168.2 Parameters

Parameter name Type

Description

High Level Float

High level reference voltage

Low Level Float

Low level reference voltage

Measurement Type Enum

High Level: Measure the total time the signal is above high level reference voltage
Low Level: Measure the total time the signal is below low level reference voltage
Both: Measure the total time the signal is both above and below high level and low level reference voltages respectively

24.169 Thermal Diode

Converts an analog voltage measurement of a thermal diode to a temperature value

24.170 Threshold

Converts an analog waveform to digital by thresholding at a constant level (no hysteresis).

24.170.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.170.2 Parameters

Parameter name Type

Description

Threshold Float

Decision threshold

24.170.3 Output Signal

This filter outputs an digital waveform with one sample for each sample in the input, which is true if the corresponding input sample is above the threshold and false if less than or equal.

24.171 TIE

Calculates the time interval error of a data or clock signal with respect to an ideal “golden" clock (typically obtained from a CDR PLL).

24.172 Top

Calculates the top (logical one level) of each cycle in a digital waveform. It is most commonly used as an input to statistics, to view the average top of the entire waveform.

24.172.1 Inputs

Signal name Type

Description

din Analog

Input waveform

24.172.2 Parameters

This filter takes no parameters.

24.172.3 Output Signal

This filter outputs an analog waveform with one sample for each group of logical ones in the input signal, containing the average value of the one level.

24.173 Touchstone Export

Saves S-parameter data to a Touchstone file.

24.174 Touchstone Import

Loads a Touchstone file and displays the complex data in magnitude/angle format

24.175 Trend

Plots a trend of a scalar value over time

24.176 TRC Import

Loads waveform data from a Teledyne LeCroy TRC waveform file.

24.177 UART

24.178 Unwrapped Phase

Given a phase angle waveform which wraps within the interval \([-180\degree , +180 \degree ]\), unwrap the phase angle.

PIC

Figure 24.41: Example of wrapped and unwrapped phase of a transmission line

24.178.1 Inputs

Signal name Type

Description

Phase Analog

Input waveform

24.178.2 Parameters

This filter takes no parameters.

24.178.3 Output Signal

This filter outputs an analog waveform with one sample for each sample in the input, containing the unwrapped phase angle.

24.179 USB 1.0 / 2.x Activity

24.180 USB 1.0 / 2.x Packet

24.181 USB 1.0 / 2.x PCS

24.182 USB 1.0 / 2.x PMA

24.183 Undershoot

24.184 Upsample

Upsamples a waveform using sin(x)/x interpolation.

24.185 VCD Import

Loads digital waveform data from a Value Change Dump (VCD) file.

24.186 Vector Frequency

Calculates the instantaneous frequency (rotational velocity) of a complex I/Q signal.

24.187 Vector Phase

Calculates the instantaneous phase of a complex I/Q signal.

24.188 Vertical Bathtub

24.189 VICP

Decodes the Teledyne LeCroy Virtual Instrument Control Protocol (VICP)

24.190 Waterfall

24.191 WAV Import

Loads waveform data from a Microsoft WAV audio file.

24.192 WFM Import

Loads waveform data from a Tektronix .wfm file.

24.193 Windowed Autocorrelation

Calculates the cross-correlation between a fixed size block of the input signal and another block of the same size.

This will produce maximal response for a signal which has periodicity with the specified period and block size.

For example, period 4 and block size 2 will match aa**aa**.

This can be used to identify OFDM symbols.

24.194 Window

Selects a temporal subset of an input waveform. Useful for running intensive analyses only on a region of interest. Start and end times are rounded to the sample that starts at or nearest after the given time.

24.194.1 Inputs

Signal name Type

Description

din Analog or Digital

Input waveform

24.194.2 Parameters

Parameter name Type

Description

Start Time Float

Start of selected window

Duration Float

Length of selected window

24.194.3 Output Signal

This filter outputs a subset of the input signal. If the input is sparse, so is the output and vice versa. No samples are added.

24.195 X-Y Sweep

This filter converts a sweeping X scalar value and a corresponding Y scalar value into a waveform plotting X against Y.

Note that this filter assumes that the X value is sweeping in an upwards ramp, and is not intended for use with arbitrary X-Y data. In particular, the output is a standard sparse waveform type rather than an X-Y density map.