Skip to content

Precompensation Advisor Module

The Precompensation Advisor Module provides the functionality available in the LabOne User Interface's Precompensation Tab. In essence the precompensation allows a pre-distortion or pre-emphasis to be applied to a signal before it leaves the instrument, to compensate for undesired distortions caused by the device under test (DUT). The Precompensation Advisor module simulates the precompensation filters in the device, allowing the user to experiment with different filter settings and filter combinations to obtain an optimal output signal, before using the setup in the actual device.

example_precompensation
Figure 1: example_precompensation

Precompensation Advisor Module Work-Flow

Precompensation Advisor usage via the LabOne APIs closely follows the work-flow used in the LabOne User Interface.

  1. Create an instance of the Precompensation Advisor module (one instance is required for each AWG waveform output in use).
  2. Decide which filters to use.
  3. Set the coefficients/time constants of the filters.
  4. Read and analyze the results of the simulation via the /wave/output, /wave/output/forwardwave and /wave/output/backwardwave parameters.
  5. Adjust filter coefficients and repeat the previous two steps until an optimal output waveform is achieved.

Note that with the Precompensation Advisor module, the execute(), finish(), finished(), read(), progress(), subscribe() and unsubscribe() commands serve no purpose. Indeed some APIs do not provide all of these commands. Each time one or more filter parameters are changed, the module re-runs the simulation and the results can be read via the /wave/output, /wave/output/forwardwave and /wave/output/backwardwave parameters.

Node Documentation

This section describes all the nodes in the Precompensation Advisor Module node tree organized by branch.

bounces

/bounces/n/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the bounce compensation filter.

/bounces/n/delay

Properties: Read, Write
Type: Double
Unit: None

Delay between original signal and the bounce echo.

/bounces/n/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the bounce compensation filter.

device

/device

Properties: Read, Write
Type: String
Unit: None

Device string defining the device on which the compensation is performed.

exponentials

/exponentials/n/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/n/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/n/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/1/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/1/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/1/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/2/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/2/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/2/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/3/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/3/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/3/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/4/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/4/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/4/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/5/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/5/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/5/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/6/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/6/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/6/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

/exponentials/7/amplitude

Properties: Read, Write
Type: Double
Unit: None

Amplitude of the exponential filter.

/exponentials/7/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the exponential filter.

/exponentials/7/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the exponential filter.

fir

/fir/coefficients

Properties: Read, Write
Type: ZIVectorData
Unit: None

Vector of FIR filter coefficients. Maximum length 40 elements. The first 8 coefficients are applied to 8 individual samples, whereas the following 32 Coefficients are applied to two consecutive samples each.

/fir/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the FIR filter.

highpass

/highpass/n/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable the high-pass compensation filter.

/highpass/n/timeconstant

Properties: Read, Write
Type: Double
Unit: Seconds

Time constant (tau) of the high-pass compensation filter.

latency

/latency/enable

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Enable latency simulation for the calculated waves.

/latency/value

Properties: Read
Type: Double
Unit: None

Total delay of the output signal accumulated by all filter stages (read-only).

samplingfreq

/samplingfreq

Properties: Read
Type: Double
Unit: Hz

Sampling frequency for the simulation (read-only). The value comes from the /device/system/clocks/sampleclock/freq node if available. Default is 2.4 GHz.

wave

/wave/input/awgindex

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Defines with which AWG output the module is associated. This is used for loading an AWG wave as the source.

/wave/input/delay

Properties: Read, Write
Type: Double
Unit: Seconds

Artificial time delay of the simulation input.

/wave/input/gain

Properties: Read, Write
Type: Double
Unit: None

Artificial gain with which to scale the samples of the simulation input.

/wave/input/inputvector

Properties: Read, Write
Type: ZIVectorData
Unit: None

Node to upload a vector of amplitude data used as a signal source. It is assumed the data are equidistantly spaced in time with the sampling rate as defined in the "samplingfreq" node.

/wave/input/length

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Number of points in the simulated wave.

/wave/input/offset

Properties: Read, Write
Type: Double
Unit: V

Artificial vertical offset added to the simulation input.

/wave/input/samplingfreq

Properties: Read, Write
Type: Double
Unit: Hz

The sampling frequency determined by the timestamps from the CSV file.

/wave/input/source

Properties: Read, Write
Type: Integer (enumerated)
Unit: None

Type of wave used for the simulation.

Value Description
0 "step": Step function
1 "impulse": Pulse
2 "nodes": Load AWG with the wave specified by the "waveindex" and "awgindex" nodes.
3 "manual": Manually loaded wave through the /inputvector node.
/wave/input/statusstring

Properties: Read
Type: String
Unit: None

The status of loading the CSV file.

/wave/input/waveindex

Properties: Read, Write
Type: Integer (64 bit)
Unit: None

Determines which AWG wave is loaded from the the AWG output. Internally, all AWG sequencer waves are indexed and stored. With this specifier, the respective AWG wave is loaded into the Simulation.

/wave/output/backwardwave

Properties: Read
Type: ZIAdvisorWave
Unit: None

Initial wave upon which the filters have been applied in the reverse direction. This wave is a simulation of signal path response which can be compensated with the filter settings specified in the respective nodes.

/wave/output/forwardwave

Properties: Read
Type: ZIAdvisorWave
Unit: None

Initial wave upon which the filters have been applied. This wave is a representation of the AWG output when precompensation is enabled with the filter settings specified in the respective nodes.

/wave/output/initialwave

Properties: Read
Type: ZIAdvisorWave
Unit: None

Wave onto which the filters are applied.