3.3.1.3. qupulse.hardware.awgs.tektronix

Functions

_make_binary_waveform(waveform, time_array, ...)

parse_program(program, channels, markers, ...)

Convert the program into a sequence of sequence table entries and a sequence of waveforms that can be uploaded to the device.

Classes

TektronixAWG(device, synchronize[, ...])

Driver for Tektronix AWG object (5000/7000 series).

TektronixProgram(program, channels, markers, ...)

Bundles all information used to generate the sequence table entries and waveforms.

WaveformEntry(name, length, waveform, timestamp)

WaveformStorage([waveforms])

Consistent map name->WaveformEntry tek_awg.Waveform->WaveformEntry

class qupulse.hardware.awgs.tektronix.TektronixAWG(device: tek_awg.TekAwg, synchronize: str, identifier='Tektronix', logger=None, default_program_repetition_mode='once', idle_waveform_length=250)[source]

Bases: qupulse.hardware.awgs.base.AWG

Driver for Tektronix AWG object (5000/7000 series).

Special characteristics:
  • Changing the run mode to ‘running’ takes a lot of time (depending on the sequence)

  • To keep the “arm” time low each program is uploaded to the sequence table! This reduces the number of programs drastically but allows very fast switching with arm IF the awg runs.

  • Arm starts the awg if it does not run. The first call to arm after uploading new programs is therefore slow. This guarantees that subsequent calls to arm and run_current_program are always fast.

  • Uploading while the awg runs is VERY slow. The private properties _allow_upload_while_running and _auto_stop_on_upload control the behaviour in this case (stopping the awg or raising an exception). These properties are currently not a stable interface to that functionality hence the privateness.

This driver implements an interface for changing the program repetition mode consisting of:
  • the property default_program_repetition_mode

  • set_program_repetition_mode(program_name, mode)

  • get_program_repetition_mode(program_name)

Synchronization: The driver relies on the fact that internal variables correspond to the device state: _sequence_entries and _waveforms We do not aim to detect user manipulation but want to make sure invalidate the internal state on upload errors. To do this the attribute _synchronized is set to False. Methods that rely on the synchronization state to correctly modify the awg check that attribute.

All private functions assume that the error queue is empty when called.

TODO: Move logger and repetition mode functionality to AWG interface

Parameters
  • device – Instance of the underlying driver from tek_awg package

  • synchronize – Either ‘read’ or ‘clear’.

  • identifier – Some identifier

  • logger – Logging will happen here (defaults to ‘qupulse.tektronix’ otherwise)

  • default_program_repetition_mode – ‘once’ or ‘infinite’

  • idle_waveform_length – length of the idle_waveform in samples

__init__(device: tek_awg.TekAwg, synchronize: str, identifier='Tektronix', logger=None, default_program_repetition_mode='once', idle_waveform_length=250)[source]
Parameters
  • device – Instance of the underlying driver from tek_awg package

  • synchronize – Either ‘read’ or ‘clear’.

  • identifier – Some identifier

  • logger – Logging will happen here (defaults to ‘qupulse.tektronix’ otherwise)

  • default_program_repetition_mode – ‘once’ or ‘infinite’

  • idle_waveform_length – length of the idle_waveform in samples

arm(name: Optional[str])[source]

Arming starts the awg

property armed_program: Optional[str]
assert_synchronized()[source]
cleanup()[source]

Delete all waveforms not used anymore and rewrite sequence entries if they are fragmented

clear()[source]

Clear all waveforms, the sequence table and program registry and initialize the idle program.

property default_program_repetition_mode: str

repetition mode for newly uploaded programs. Valid values are ‘once’ and ‘infinite’. You can use set_program_repetition_mode to change the repetition mode of an existing program

property device: tek_awg.TekAwg
get_program_information() Dict[str, dict][source]
get_program_repetition_mode(program_name: str) str[source]

This function uses cached data and does not talk to the awg

static idle_pulse_name(idle_length: int) str[source]
initialize_idle_program()[source]

Make sure we can arm the idle program which plays the idle waveform(default 0V) on all channels.

make_idle_waveform(length) tek_awg.Waveform[source]
property num_channels: int

Implements num_channels.

property num_markers: int

Implements num_markers.

property programs: Set[str]

Implements programs.

read_waveforms()[source]

Read all waveform data from the device (including binary data).

remove(name: str)[source]

Implements remove().

run_current_program(channel_states: Optional[Tuple[bool, bool, bool, bool]] = None)[source]

Runs the currentlz armed program

Parameters

channel_states – If given the channel states are set to these values

Returns:

property sample_rate: float

Implements sample_rate.

set_program_repetition_mode(program_name: str, mode: str)[source]
set_volatile_parameters(program_name: str, parameters)[source]

Implements set_volatile_parameters().

synchronize()[source]

Read waveforms from device and re-upload all programs

property synchronized: bool
upload(*args, **kwargs)[source]

Implements upload().

warn_if_errors_are_present()[source]

Emit a warning with present errors.