This chapter contains reference documentation for the settings and
measurement data available on HDAWG Instruments. Whilst
Functional Description
describes many of these settings in terms of the features available in
the LabOne User Interface, this chapter describes them on the device
level and provides a hierarchically organized and comprehensive list of
device functionality.
Since these settings and data streams may be written and read using the
LabOne APIs (Application Programming Interfaces) this chapter is of
particular interest to users who would like to perform measurements
programmatically via LabVIEW, Python, MATLAB, .NET or C.
Please see:
Introduction for an introduction of how the
instrument's settings and measurement data are organized
hierarchically in the Data Server's so-called "Node Tree".
Reference Node Documentation for a reference list of the settings and
measurement data available on HDAWG Instruments, organized by branch
in the Node Tree.
This chapter provides an overview of how an instrument's configuration
and output is organized by the Data Server.
All communication with an instrument occurs via the Data Server program
the instrument is connected to (see LabOne Software
Architecture
for an overview of LabOne's software components). Although the
instrument's settings are stored locally on the device, it is the Data
Server's task to ensure it maintains the values of the current settings
and makes these settings (and any subscribed data) available to all its
current clients. A client may be the LabOne User Interface or a user's
own program implemented using one of the LabOne Application Programming
Interfaces, e.g., Python.
The instrument's settings and data are organized by the Data Server in a
file-system-like hierarchical structure called the node tree. When an
instrument is connected to a Data Server, its device ID becomes a
top-level branch in the Data Server's node tree. The features of the
instrument are organized as branches underneath the top-level device
branch and the individual instrument settings are leaves of these
branches.
For example, the auxiliary outputs of the instrument with device ID
"dev1000" are located in the tree in the branch:
/dev1000/auxouts/
In turn, each individual auxiliary output channel has its own branch
underneath the "AUXOUTS" branch.
Whilst the auxiliary outputs and other channels are labelled on the
instrument's panels and the User Interface using 1-based indexing, the
Data Server's node tree uses 0-based indexing. Individual settings (and
data) of an auxiliary output are available as leaves underneath the
corresponding channel's branch:
These are all individual node paths in the node tree; the lowest-level
nodes which represent a single instrument setting or data stream.
Whether the node is an instrument setting or data-stream and which type
of data it contains or provides is well-defined and documented on a
per-node basis in the Reference Node Documentation section in the
relevant instrument-specific user manual. The different properties and
types are explained in Node Properties and Data Types
.
For instrument settings, a Data Server client modifies the node's value
by specifying the appropriate path and a value to the Data Server as a
(path, value) pair. When an instrument's setting is changed in the
LabOne User Interface, the path and the value of the node that was
changed are displayed in the Status Bar in the bottom of the Window.
This is described in more detail in Exploring the Node Tree.
Module Parameters
LabOne Core Modules, such as the Sweeper, also use a similar tree-like
structure to organize their parameters. Please note, however, that
module nodes are not visible in the Data Server's node tree; they are
local to the instance of the module created in a LabOne client and are
not synchronized between clients.
A node may have one or more of the following properties:
Property
Description
Read
Data can be read from the node.
Write
Data can be written to the node.
Setting
The node corresponds to a writable instrument configuration. The data of these nodes are persisted in snapshots of the instrument and stored in the LabOne XML settings files.
Streaming
A node with the read attribute that provides instrument data, typically at a user-configured rate. The data is usually a more complex data type, for example demodulator data is returned as ZIDemodSample. A full list of streaming nodes is available in the Programming Manual in the Chapter Instrument Communication. Their availability depends on the device class (e.g. MF) and the option set installed on the device.
Pipelined
If the sequence pipeliner mode is off the value set to the node is applied immediately. Otherwise, it goes to the staging area of the sequence pipeliner instead. Multiple pipelined nodes can be programmed as part of a job definition, that is finalized by writing a one to the relevant commit node.
A node may contain data of the following types:
Integer
Integer data.
Double
Double precision floating point data.
String
A string array.
Integer (enumerated)
As for Integer, but the node only allows certain values.
Composite data type
For example, ZIDemodSample. These custom data types are structures whose fields contain the instrument output, a timestamp and other relevant instrument settings such as the demodulator oscillator frequency. Documentation of custom data types is available in
A convenient method to learn which node is responsible for a specific
instrument setting is to check the Command Log history in the bottom of
the LabOne User Interface. The command in the Status Bar gets updated
every time a configuration change is made. Figure 1 shows how the equivalent MATLAB
command is displayed after modifying the value of the auxiliary output
1's offset. The format of the LabOne UI's command history can be
configured in the Config Tab (MATLAB, Python and .NET are available).
The entire history generated in the current UI session can be viewed by
clicking the "Show Log" button.
A list of nodes (under a specific branch) can be requested from the Data
Server in an API client using the listNodes command (MATLAB, Python,
.NET) or ziAPIListNodes() function (C API). Please see each API's
command reference for more help using the listNodes command. To obtain
a list of all the nodes that provide data from an instrument at a high
rate, so-called streaming nodes, the streamingonly flag can be
provided to listNodes. More information on data streaming and
streaming nodes is available in the LabOne Programming Manual.
The detailed descriptions of nodes that is provided in
Reference Node Documentation is accessible directly in the LabOne MATLAB or Python
programming interfaces using the "help" command. The help command is
daq.help(path) in Python and ziDAQ('help', path) in MATLAB. The
command returns a description of the instrument node including access
properties, data type, units and available options. The "help" command
also handles wildcards to return a detailed description of all nodes
matching the path. An example is provided below.
daq=zhinst.core.ziDAQServer('localhost',8004,6)daq.help('/dev1000/auxouts/0/offset')# Out:# /dev1000/auxouts/0/OFFSET## Add the specified offset voltage to the signal after scaling. Auxiliary Output# Value = (Signal+Preoffset)*Scale + Offset# Properties: Read, Write, Setting# Type: Double# Unit: V
The Data Server has nodes in the node tree available under the top-level
/zi/ branch. These nodes give information about the version and state of
the Data Server the client is connected to. For example, the nodes:
/zi/about/version
/zi/about/revision
are read-only nodes that contain information about the release version
and revision of the Data Server. The nodes under the /zi/devices/ list
which devices are connected, discoverable and visible to the Data
Server.
The nodes:
/zi/config/open
/zi/config/port
are settings nodes that can be used to configure which port the Data
Server listens to for incoming client connections and whether it may
accept connections from clients on hosts other than the localhost.
Nodes that are of particular use to programmers are:
/zi/debug/logpath - the location of the Data Server's log in the PC's
file system,
/zi/debug/level - the current log-level of the Data Server
(configurable; has the Write attribute),
/zi/debug/log - the last Data Server log entries as a string array.
The Global nodes of the LabOne Data Server are listed in the Instrument Communication
chapter of the LabOne Programming Manual
Status of the command table on the instrument. Bit 0: data uploaded to the command table; Bit 1, Bit 2: reserved; Bit 3: uploading of data to the command table failed due to a JSON parsing error.
A 32-bit value indicating which bits on the DIO interface may have timing errors. A timing error is defined as an event where either the VALID or any of the data bits on the DIO interface change value at the same time as the STROBE bit.
Indicates a width (i.e. jitter) error on either the STROBE (bit 0 of the value) or VALID bit (bit 1 of the result). A width error indicates that there was jitter detected on the given bit, meaning that an active period was either shorter or longer than the configured expected width.
Gain factor applied to the AWG Output at the given output multiplier stage. The final signal amplitude is proportional to the Range voltage setting of the Wave signal outputs.
Select modulation mode between off, sine modulation and advanced.
0
"off": Modulation Off: AWG Output goes directly to Signal Output.
1
"sine00": Sine 11: AWG Outputs 0 and 1 are both multiplied with Sine Generator signal 0.
2
"sine11": Sine 22: AWG Outputs 0 and 1 are both multiplied with Sine Generator signal 1.
3
"sine01": Sine 12: AWG Outputs 0 and 1 are multiplied with Sine Generator signal 0 and 1, respectively.
4
"sine10": Sine 21: AWG Outputs 0 and 1 are multiplied with Sine Generator signal 1 and 0, respectively.
5
"advanced": Advanced: Output modulates corresponding sines from modulation carriers.
6
"mixer": Mixer Calibration: The AWG outputs are multiplied with the sum or difference of Sine Generators multiplied by gains specified. The resulting output signal is AWG1(Sine1Gain1 - Sine2Gain2) + AWG2(Sine1Gain2 + Sine2Gain1).
Selects the sequence pipeliner mode: off (default), batch, or queue mode. Changing the mode will reset both the sequence pipeliner and the normal AWG.
0
"off": Off: The sequence pipeliner is turned off.
1
"batch": Batch: The sequence pipeliner operates in batch mode. All sequences must be committed before the pipeliner is enabled. A batch can be executed once or multiple times.
2
"queue": Queue: The sequence pipeliner operates in queue mode. Sequences can be committed while the pipeliner is enabled. Every sequence is executed only once and the slot in the queue is then available for a new sequence.
Maximal execution time per sequence in milliseconds. The execution of a sequence is aborted if the maximal execution time is reached. A value of 0 means infinity.
"normal": Normal: Logger starts with the AWG and overwrites old values as soon as the memory limit of 1024 entries is reached.
1
"timestamp": Timestamp-triggered: Logger starts with the AWG, waits for the first valid trigger, and only starts recording data after the time specified by the starttimestamp. Recording stops as soon as the memory limit of 1024 entries is reached.
Status of the sequencer on the instrument. Bit 0: sequencer is running; Bit 1: reserved; Bit 2: sequencer is waiting for a trigger to arrive; Bit 3: AWG has detected an error; Bit 4: sequencer is waiting for synchronization with other channels.
Node used by the sweeper module for fast index sweeps. When selected as sweep grid the sweeper module will switch into a fast index based scan mode. This mode can be up to 1000 times faster than conventional node sweeps. The sequencer program must support this functionality. See section 'AWG Index Sweep' of the UHF user manual for more information.
AWG sampling rate. The numeric values here are an example when the base sample rate is the default value of 2.4 GHz and are rounded for display purposes. The exact values are equal to the base sampling rate divided by 2^n, where n is the node value. The base sample clock is the node /DEV.../SYSTEM/CLOCKS/SAMPLECLOCK/FREQ. This value is used by default and can be overridden in the Sequence program.
JSON-formatted string containing a dictionary of various properties of the current waveform: name, filename, function, channels, marker bits, length, timestamp.
Amount of the used waveform data relative to the device cache memory. The cache memory provides space for 256 kSa (262'144 Sa) per-channel of waveform data. Memory Usage over 100% means that waveforms must be loaded from the main memory of 64 or 512 MSa (67'108'864 Sa or 536'870'912 Sa) per-channel during playback.
The waveform data in the instrument's native format for the given playWave waveform index. This node will not work with subscribe as it does not push updates. For short vectors get may be used. For long vectors (causing get to time out) getAsEvent and poll can be used. The index of the waveform to be replaced can be determined using the Waveform sub-tab in the AWG tab of the LabOne User Interface.
"free_running": Free Running: The counter runs on a repetitive time base defined by the Period field. At the beginning of each period the counter is reset, and at the end, the accumulated number of counts is output.
2
"gated_free_running": Gated Free Running: The counter runs on a repetitive time base defined by the Period field. The Gate Input signal controls when the unit counter is allowed to run. The counter as well as the timer is reset when the Gate Input signal is low. The counter will only deliver new values if the Gate Input signal is high for a time longer than the configured Period.
3
"gated": Gated: The counter is controlled with the Gate Input signal. The counter is enabled at the rising edge of the Gate Input signal and disabled at the falling edge. Pulses are counted as long as the counter is enabled. The accumulated number of counts is output on the falling edge of the Gate Input signal.
4
"time_tagging": Time Tagging: Every pulse is detected individually and tagged with the time of the event. The Period defines the minimum hold-off time between the tagging of two subsequent pulses. If more than one pulse occurs within the window defined by the Period, then the pulses are accumulated and output at the end of the window. The Period effectively determines the maximum rate at which pulse information can be transmitted to the host PC.
Select the arithmetic operation (addition, subtraction) applied to the counter unit outputs. 'Other counter' refers to the grouping of the counter units: 1 with 2, and 3 with 4.
When on (1), the corresponding 8-bit bus is in output mode. When off (0), it is in input mode. Bit 0 corresponds to the least significant byte. For example, the value 1 drives the least significant byte, the value 8 drives the most significant byte.
Selects the interface standard to use on the 32-bit DIO interface. A value of 0 means that a 3.3 V CMOS interface is used. A value of 1 means that an LVDS compatible interface is used.
"manual": Enables manual control of the DIO output bits.
1
"awg_sequencer_commands": Enables setting the DIO output values by AWG sequencer commands and forwards DIO input values to the AWG sequencer. The DIO interface operates at a clock frequency of 150 MHz.
2
"dio_codeword": Enables setting the DIO output values by AWG sequencer commands and forwards DIO input values to the AWG sequencer. This mode is equivalent to the mode AWG Sequencer, except for the DIO interface clock frequency which is set to 50 MHz.
3
"qccs": Enables setting the DIO output values by the ZSync input values. Forwards the ZSync input values to the AWG sequencer. Forwards the DIO input values to the ZSync output. Select this mode when the instrument is connected via ZSync to a PQSC.
Enables the direct output path. If enabled the signal will be fed directly from the DAC, reducing delay and noise. However, the range will be fixed and offset is not available any more.
Indicates the maximum normalized voltage generated on this channel. It can be between -1 and 1. To prevent signal clipping and overvoltage, it is advised to keep it between -0.9 and 0.9.
Indicates the minimum normalized voltage generated on this channel. It can be between -1 and 1. To prevent signal clipping and overvoltage, it is advised to keep it between -0.9 and 0.9.
Indicates the status of the exponential overshoot compensation filter: 0 = normal, 1 = overflow during the last update period (~100 ms), 2 = overflowed in the past.
Vector containing 40 coefficients of the finite impulse response (FIR) precompensation filter. The first eight coefficients correspond directly to the first eight taps of the FIR filter, while the remaining 32 coefficients are each applied to pairs of subsequent taps. In total the FIR filter kernel therefore has a length of 8 + 2*32 = 72 taps.
Indicates the status of the finite impulse response (FIR) precompensation filter: 0 = normal, 1 = overflow during the last update period (~100 ms), 2 = overflowed in the past.
Indicates the status of the high-pass compensation filter: 0 = normal, 1 = overflow during the last update period (~100 ms), 2 = overflowed in the past.
Sets the peak amplitude that the sine signal contributes to the signal output. Note that the last index is either 0 or 1 and will map to the pair of outputs given by the first index. (e.g. sines/3/amplitudes/0 corresponds to wave output 2)
Enables the sine signal to the signal output. Note that the last index is either 0 or 1 and will map to the pair of outputs given by the first index. (e.g. sines/3/amplitudes/0 corresponds to wave output 2)
"internal": The internal clock is used as the frequency and time base reference.
1
"external": An external clock is intended to be used as the frequency and time base reference. Provide a clean and stable 10MHz or 100MHz reference to the appropriate back panel connector.
2
"zsync": A ZSync clock is intended to be used as the frequency and time base reference.
"error": There was an error locking onto the reference clock signal. After an error the source is automatically switched back to internal reference clock.
2
"busy": The device is busy trying to lock onto the reference clock signal.
Sending a '1' to this node initiates a shutdown of the operating system on the device. It is recommended to trigger this shutdown before switching the device off with the hardware switch at the back side of the device.
Trigger voltage level at which the trigger input toggles between low and high. Use 50% amplitude for digital input and consider the trigger hysteresis.