Transient Recorder Framework
List of General Standards PVs

This page describes the public PVs specific to the General Standards digitzer driver for models 16AI64SSA and 16AI64SSC.

The public framework PVs are automatically supported unless stated otherwise on this page. However this page does includes notes about certain framework PVs regarding driver-specific semantics.

Device Information

These PVs contain static information about the device. All of this information is obtained from the vendor’s driver.

PV name, record type Description
GET_FIRMWARE_REVISION (longin) The firmware revision as an integer.
GET_MAX_INPUT_CHANNELS (longin) The number of input channels supported by the device.
GET_MASTER_CLOCK_FREQUENCY (longin) The master clock frequency (Hz).
GET_MAX_SAMPLE_RATE (longin) The maximum sample rate supported by the device (Hz).
GET_BUFFER_SIZE (longin) The FIFO buffer size (number of samples) as advertised by the driver. Note, the usable buffer size appears to be one sample less.
GET_DEVICE_TYPE (mbbi)

The type of device.

Values: 16AI64SSA, 16AI64SSC, Unknown.

GET_MIN_DIVISOR (longin) The minimum permitted divisor value for frequency dividers.
GET_MAX_DIVISOR (longin) The maximum permitted divisor value for frequency dividers.

Device States

These PVs represent the dynamic states related to burst operation. They are updated at the scan rate defined by the REFRESH_STATES_SCAN template parameter, and in the test IOC by an environment variable of the same name in st.cmd.

PV name, record type Description
GET_BUFFER_OVERFLOW_STATUS (bi)

The value of the buffer-overflow flag, i.e. whether there has been a buffer overflow.

Values: No Overflow, Overflow.

GET_BURST_STATUS (bi)

The current burst state, i.e. whether a burst is in progress.

Values: Idle, Active.

GET_BUFFER_SAMPLES (longin) The number of samples in the FIFO sample buffer.

AUX-IO Settings

These PVs are used for configuring the AUX-IO lines of the board. Settings written into the set records are applied to the device immediately.

The get records contain the current value, and must not be written. Each set record has a forward link to update the corresponding get record.

PV name, record type Description
SET_AUX_LINE_<N>_MODE (mbbo)
<N>=0,1,2,3
Write to set the mode of an AUX-IO line (Inactive, Active Input, Active Output).
GET_AUX_LINE_<N>_MODE (mbbi) The current mode of an AUX-IO line (values as above).
SET_AUX_INVERT_IN (bo) Write to set whether AUX-IO inputs are inverted (Disabled, Enabled).
GET_AUX_INVERT_IN (bi) The current AUX-IO inputs inversion mode (values as above).
SET_AUX_INVERT_OUT (bo) Write to set whether AUX-IO outputs are inverted (Disabled, Enabled).
GET_AUX_INVERT_OUT (bi) The current AUX-IO outputs inversion mode (values as above).
SET_AUX_NOISE_SUPPRESSION (bo) Write to set whether noise suppression for AUX-IO inputs is enabled (Disabled, Enabled).
GET_AUX_NOISE_SUPPRESSION (bi) The current value of the AUX-IO noise suppression setting (values as above).

Desired Settings for Arming

These PVs should be set to the desired settings before an arm request is issued. Their values are captured at the start of arming.

The hardware does not support pre-samples, therefore the PV numberPPS (provided by the framework) must be left at the default value zero.

PV name, record type Description
DESIRED_INPUT_MODE (mbbo) The input mode (“Single-ended”, “Pseudo-Differential”, “Full-Differential”, “Zero Test Voltage”, “Reference Voltage”).
DESIRED_CHANNEL_ACTIVE_RANGE (mbbo)

The channel range (“Single”, “Channels 0-1”, “Channels 0-3”, “Channels 0-7”, “Channels 0-15”, “Channels 0-31”, “Channels 0-63”, “Channel Range”).

In case of “Single” and “Channel Range”, additional PVs define which channel or channel range is used.

DESIRED_CHANNEL_SINGLE (longout)

The channel index to use for single channel mode (otherwise irrelevant).

In pseudo-differential mode, this must not be zero. In full-differential mode, this must be even.

DESIRED_CHANNEL_RANGE_FIRST (longout)

The first channel for channel range mode (otherwise irrelevant).

In pseudo-differential mode, this must not be zero. In full-differential mode, this must be even.

DESIRED_CHANNEL_RANGE_LAST (longout)

The last channel for channel range mode (otherwise irrelevant).

This must be greater than the first channel. In full-differential mode, this must be odd.

DESIRED_VOLTAGE_RANGE (mbbo) The input voltage range (“+-2.5 V”, “0-5 V”, “+-5 V”, “0-10 V”, “+-10 V”).
clock (mbbo)

The desired sample clock source or rate. Supported choices are:

  • “Custom Frequency” (CUSTOM_SAMPLE_RATE applies),
  • “External Trigger” (external clock),
  • 14 predefined sample rate values (see database, these can easily be changed).

This PV and CUSTOM_SAMPLE_RATE are considered inputs for clock calculation, and therefore define the value of the PV ACHIEVABLE_SAMPLE_RATE (provided by the framework). If external clock is selected, then ACHIEVABLE_SAMPLE_RATE will be calculated as NAN.

CUSTOM_SAMPLE_RATE (ao)

The desired sample rate in Hz, when custom frequency is selected.

When using an external sample clock (clock is “External Trigger”), this should be set as close as possible to the expected frequency of the external clock. It will be used for autocalibration as part of an arming procedure, for the TIME_DATA waveform, and for sample-rate NDArray attributes.

trigger (mbbo)

Burst trigger source. Supported choices are:

  • “extTrigger” (external trigger),
  • “soft” (software trigger).
BURST_START_TIMESTAMP_ENABLED (bo) Whether to enable burst-start timestamps, using the burst-started interrupt (“Off”, “On”).
IO_MODE_DMDMA_ENABLED (bo) Whether to enable Demand-Mode DMA (“Off”, “On”).

Current Armed Settings

With regard to the possible values and meaning of these PVs, the text in the section of the same name in framework PVs applies.

PV name, record type Description
GET_ARMED_INPUT_MODE (mbbi) Current armed input mode.
GET_ARMED_CHANNEL_ACTIVE_RANGE (mbbi) Current armed channel range.
GET_ARMED_CHANNEL_SINGLE (ai) Current armed channel index for single channel mode, NAN if single channel mode is not used.
GET_ARMED_CHANNEL_RANGE_FIRST (ai) Current armed first channel for channel range mode, NAN if channel range mode is not used.
GET_ARMED_CHANNEL_RANGE_LAST (ai) Current armed last channel for channel range mode, NAN if channel range mode is not used.
GET_ARMED_VOLTAGE_RANGE (mbbi) Current armed voltage range.
get_trigger (mbbi) Current armed burst trigger source.
GET_BURST_START_TIMESTAMP_ENABLED (mbbi) Current armed selection for use of burst-started timestamps.
GET_IO_MODE_DMDMA_ENABLED (mbbi) Current armed selection for use of DM-DMA.

Device Requests

Note that to actually start a request, the value 1 (or the associated string value) must be written to the PV for the request. Writing any other value will have no effect. This was done to accommodate EDM, where buttons will write zero when released.

PV name, record type Description
softTrigger (bo)

Write 1 or “softTrigger” to send a software trigger to the device.

This only has an effect when the device is armed with software trigger.

START_INITIALIZE (bo)

Write 1 or “Start” to perform the Initialize operation on the device.

The operation is asynchronous and the result will be provided in INITIALIZE_STATUS. If this is requested while Initialize is already running, the request is ignored. If it is requested while the device is not disarmed, it will be rejected (fail status).

INITIALIZE_STATUS (mbbi)

The state or result of the Initialize operation (empty, running, success, fail).

The result clears to the empty value automatically a few seconds after completion. This PV must not be written.

Acquisition Information

The driver generates burst IDs as suggested in the description of the BURST_ID PV provided by the framework.

The driver also provides the diagnostic times:

Acquisition control

PV name, record type Description
VOLTAGE_DATA_OFFSET (ai)

The additional voltage offset applied to the sample data, after initial conversion to voltage according to the input voltage range and input mode.

Changes to this PV will be reflected in newly processed bursts. The default is 0.

Testing PVs

This section lists PVs which are desired to facilitate testing.

There are several PVs which read back configuration from the hardware. These are updated automatically whenever the arm state changes (arm PV) or the Initialize operation completes, and can also be updated manually by writing to the PV REFRESH_READBACKS.

PV name, record type Description
REFRESH_READBACKS (bo) Write one or Refresh to refresh the readbacks listed in this section.
INPUT_MODE_RBV (mbbi) Readback of the input mode (see DESIRED_INPUT_MODE).
VOLTAGE_RANGE_RBV (mbbi) Readback of the voltage range (see DESIRED_VOLTAGE_RANGE).
CHANNEL_ACTIVE_RANGE_RBV (mbbi) Readback of the channel-active-range (see DESIRED_CHANNEL_ACTIVE_RANGE).
CHANNEL_RANGE_FIRST_RBV (longin) Readback of the first channel number (see DESIRED_CHANNEL_RANGE_FIRST).
CHANNEL_RANGE_LAST_RBV (longin) Readback of the last channel number (see DESIRED_CHANNEL_RANGE_LAST).
CHANNEL_SINGLE_RBV (longin) Readback of the single channel number (see DESIRED_CHANNEL_SINGLE).
CLOCK_SOURCE_RBV (mbbi) Readback of the sample clock source setting (Rate-A, Rate-B, External Sync, Software Trigger).
CALC_DIVISOR_A (longin) Calculated divisor of rate generator A corresponding to the desired clock configuration. Zero means this rate generator would not be used.
CALC_DIVISOR_B (longin) Calculated divisor of rate generator B corresponding to the desired clock configuration. Zero means this rate generator would not be used.