Qudi
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
keysight_M3202A.M3202A Class Reference

Qudi module for the Keysight M3202A PXIe AWG card (1GHz sampling frequency) More...

Inheritance diagram for keysight_M3202A.M3202A:
Inheritance graph
[legend]
Collaboration diagram for keysight_M3202A.M3202A:
Collaboration graph
[legend]

Public Member Functions

def on_activate (self)
 
def on_deactivate (self)
 
def reset (self)
 Reset the device. More...
 
def get_constraints (self)
 Retrieve the hardware constrains from the Pulsing device. More...
 
def pulser_on (self)
 Switches the pulsing device on. More...
 
def pulser_off (self)
 Switches the pulsing device off. More...
 
def load_waveform (self, load_dict)
 Loads a waveform to the specified channel of the pulsing device. More...
 
def load_sequence (self, sequence_name)
 Loads a sequence to the channels of the device in order to be ready for playback. More...
 
def get_loaded_assets (self)
 Retrieve the currently loaded asset names for each active channel of the device. More...
 
def clear_all (self)
 Clears all loaded waveforms from the pulse generators RAM/workspace. More...
 
def get_status (self)
 Retrieves the status of the pulsing hardware. More...
 
def get_sample_rate (self)
 Get the sample rate of the pulse generator hardware. More...
 
def set_sample_rate (self, sample_rate)
 Set the sample rate of the pulse generator hardware. More...
 
def get_analog_level (self, amplitude=None, offset=None)
 Retrieve the analog amplitude and offset of the provided channels. More...
 
def set_analog_level (self, amplitude=None, offset=None)
 Set amplitude and/or offset value of the provided analog channel(s). More...
 
def get_digital_level (self, low=None, high=None)
 Retrieve the digital low and high level of the provided/all channels. More...
 
def set_digital_level (self, low=None, high=None)
 Set low and/or high value of the provided digital channel. More...
 
def get_active_channels (self, ch=None)
 Get the active channels of the pulse generator hardware. More...
 
def set_active_channels (self, ch=None)
 Set the active channels for the pulse generator hardware. More...
 
def write_waveform (self, name, analog_samples, digital_samples, is_first_chunk, is_last_chunk, total_number_of_samples)
 Write a new waveform or append samples to an already existing waveform on the device memory. More...
 
def write_sequence (self, name, sequence_parameter_list)
 Write a new sequence on the device memory. More...
 
def get_waveform_names (self)
 Retrieve the names of all uploaded waveforms on the device. More...
 
def get_sequence_names (self)
 Retrieve the names of all uploaded sequence on the device. More...
 
def delete_waveform (self, waveform_name)
 Delete the waveform with name "waveform_name" from the device memory. More...
 
def delete_sequence (self, sequence_name)
 Delete the sequence with name "sequence_name" from the device memory. More...
 
def get_interleave (self)
 Check whether Interleave is ON or OFF in AWG. More...
 
def set_interleave (self, state=False)
 Turns the interleave of an AWG on or off. More...
 
def write (self, command)
 Sends a command string to the device. More...
 
def query (self, question)
 Asks the device a 'question' and receive and return an answer from it. More...
 
def has_sequence_mode (self)
 Asks the pulse generator whether sequence mode exists. More...
 
def set_channel_triggers (self, active_channels, sequence_parameter_list)
 :return:
 
def sync_clock (self)
 
- Public Member Functions inherited from core.module.BaseMixin
def __init__ (self, manager, name, config=None, callbacks=None, kwargs)
 Initialise Base class object and set up its state machine. More...
 
def log (self)
 Returns a logger object.
 
def is_module_threaded (self)
 Returns whether the module shall be started in a thread.
 
def on_activate (self)
 Method called when module is activated. More...
 
def on_deactivate (self)
 Method called when module is deactivated. More...
 
def getStatusVariables (self)
 Return a dict of variable names and their content representing the module state for saving. More...
 
def setStatusVariables (self, variableDict)
 Give a module a dict of variable names and their content representing the module state. More...
 
def getConfiguration (self)
 Return the configration dictionary for this module. More...
 
def get_connector (self, connector_name)
 Return module connected to the given named connector. More...
 
- Public Member Functions inherited from core.module.ModuleMeta
def __new__ (cls, name, bases, attrs)
 Collect declared Connectors, ConfigOptions and StatusVars into dictionaries. More...
 

Public Attributes

 analog_amplitudes
 
 analog_offsets
 
 last_sequence
 
 loaded_waveforms
 
 written_waveforms
 
 chcfg
 
 awg
 
 ser
 
 model
 
 fwver
 
 hwver
 
 chassis
 
 ch_slot
 
- Public Attributes inherited from core.module.BaseMixin
 module_state
 
 connectors
 

Static Public Attributes

 serial = ConfigOption(name='awg_serial', missing='error')
 

Detailed Description

Qudi module for the Keysight M3202A PXIe AWG card (1GHz sampling frequency)

Example config for copy-paste:

keysight_m3202a: module 'awg.keysight_M3202A.M3202A' awg_serial 0000000000 # here the serial number of current AWG

Member Function Documentation

◆ clear_all()

def keysight_M3202A.M3202A.clear_all (   self)

Clears all loaded waveforms from the pulse generators RAM/workspace.

Returns
int: error code (0:OK, -1:error)

◆ delete_sequence()

def keysight_M3202A.M3202A.delete_sequence (   self,
  sequence_name 
)

Delete the sequence with name "sequence_name" from the device memory.

Parameters
strsequence_name: The name of the sequence to be deleted Optionally a list of sequence names can be passed.
Returns
list: a list of deleted sequence names.

◆ delete_waveform()

def keysight_M3202A.M3202A.delete_waveform (   self,
  waveform_name 
)

Delete the waveform with name "waveform_name" from the device memory.

Parameters
strwaveform_name: The name of the waveform to be deleted Optionally a list of waveform names can be passed.
Returns
list: a list of deleted waveform names.

◆ get_active_channels()

def keysight_M3202A.M3202A.get_active_channels (   self,
  ch = None 
)

Get the active channels of the pulse generator hardware.

Parameters
listch: optional, if specific analog or digital channels are needed to be asked without obtaining all the channels.
Returns
dict: where keys denoting the channel string and items boolean expressions whether channel are active or not.

◆ get_analog_level()

def keysight_M3202A.M3202A.get_analog_level (   self,
  amplitude = None,
  offset = None 
)

Retrieve the analog amplitude and offset of the provided channels.

Parameters
listamplitude: optional, if the amplitude value (in Volt peak to peak, i.e. the full amplitude) of a specific channel is desired.
listoffset: optional, if the offset value (in Volt) of a specific channel is desired.
Returns
: (dict, dict): tuple of two dicts, with keys being the channel descriptor string

◆ get_constraints()

def keysight_M3202A.M3202A.get_constraints (   self)

Retrieve the hardware constrains from the Pulsing device.

Returns
constraints object: object with pulser constraints as attributes.

◆ get_digital_level()

def keysight_M3202A.M3202A.get_digital_level (   self,
  low = None,
  high = None 
)

Retrieve the digital low and high level of the provided/all channels.

Parameters
listlow: optional, if the low value (in Volt) of a specific channel is desired.
listhigh: optional, if the high value (in Volt) of a specific channel is desired.
Returns
: (dict, dict): tuple of two dicts, with keys being the channel descriptor strings (i.e. 'd_ch1', 'd_ch2') and items being the values for those channels. Both low and high value of a channel is denoted in volts.

◆ get_interleave()

def keysight_M3202A.M3202A.get_interleave (   self)

Check whether Interleave is ON or OFF in AWG.

Returns
bool: True: ON, False: OFF

Will always return False for pulse generator hardware without interleave.

◆ get_loaded_assets()

def keysight_M3202A.M3202A.get_loaded_assets (   self)

Retrieve the currently loaded asset names for each active channel of the device.

Returns
(dict, str): Dictionary with keys being the channel number and values being the respective asset loaded into the channel, string describing the asset type ('waveform' or 'sequence')

◆ get_sample_rate()

def keysight_M3202A.M3202A.get_sample_rate (   self)

Get the sample rate of the pulse generator hardware.

Returns
float: The current sample rate of the device (in Hz)

Do not return a saved sample rate from an attribute, but instead retrieve the current sample rate directly from the device.

◆ get_sequence_names()

def keysight_M3202A.M3202A.get_sequence_names (   self)

Retrieve the names of all uploaded sequence on the device.

Returns
list: List of all uploaded sequence name strings in the device workspace.

◆ get_status()

def keysight_M3202A.M3202A.get_status (   self)

Retrieves the status of the pulsing hardware.

Returns
(int, dict): tuple with an interger value of the current status and a corresponding dictionary containing status description for all the possible status variables of the pulse generator hardware.

◆ get_waveform_names()

def keysight_M3202A.M3202A.get_waveform_names (   self)

Retrieve the names of all uploaded waveforms on the device.

Returns
list: List of all uploaded waveform name strings in the device workspace.

◆ has_sequence_mode()

def keysight_M3202A.M3202A.has_sequence_mode (   self)

Asks the pulse generator whether sequence mode exists.

Returns
: bool, True for yes, False for no.

◆ load_sequence()

def keysight_M3202A.M3202A.load_sequence (   self,
  sequence_name 
)

Loads a sequence to the channels of the device in order to be ready for playback.

Parameters
sequence_namedict|list, a dictionary with keys being one of the available channel
Returns
dict: Dictionary containing the actually loaded waveforms per channel.

◆ load_waveform()

def keysight_M3202A.M3202A.load_waveform (   self,
  load_dict 
)

Loads a waveform to the specified channel of the pulsing device.

Parameters
load_dictdict|list, a dictionary with keys being one of the available channel
Returns
dict: Dictionary containing the actually loaded waveforms per channel.

◆ pulser_off()

def keysight_M3202A.M3202A.pulser_off (   self)

Switches the pulsing device off.

Returns
int: error code (0:OK, -1:error)

◆ pulser_on()

def keysight_M3202A.M3202A.pulser_on (   self)

Switches the pulsing device on.

Returns
int: error code (0:OK, -1:error)

◆ query()

def keysight_M3202A.M3202A.query (   self,
  question 
)

Asks the device a 'question' and receive and return an answer from it.

Parameters
stringquestion: string containing the command
Returns
string: the answer of the device to the 'question' in a string

◆ reset()

def keysight_M3202A.M3202A.reset (   self)

Reset the device.

Returns
int: error code (0:OK, -1:error)

◆ set_active_channels()

def keysight_M3202A.M3202A.set_active_channels (   self,
  ch = None 
)

Set the active channels for the pulse generator hardware.

Parameters
dictch: dictionary with keys being the analog or digital string generic names for the channels (i.e. 'd_ch1', 'a_ch2') with items being a boolean value. True Activate channel, False: Deactivate channel
@return dict: with the actual set values for ALL active analog and digital channels

◆ set_analog_level()

def keysight_M3202A.M3202A.set_analog_level (   self,
  amplitude = None,
  offset = None 
)

Set amplitude and/or offset value of the provided analog channel(s).

Parameters
dictamplitude: dictionary, with key being the channel descriptor string (i.e. 'a_ch1', 'a_ch2') and items being the amplitude values (in Volt peak to peak, i.e. the full amplitude) for the desired channel.
dictoffset: dictionary, with key being the channel descriptor string (i.e. 'a_ch1', 'a_ch2') and items being the offset values (in absolute volt) for the desired channel.
Returns
(dict, dict): tuple of two dicts with the actual set values for amplitude and offset for ALL channels.

◆ set_digital_level()

def keysight_M3202A.M3202A.set_digital_level (   self,
  low = None,
  high = None 
)

Set low and/or high value of the provided digital channel.

Parameters
dictlow: dictionary, with key being the channel descriptor string (i.e. 'd_ch1', 'd_ch2') and items being the low values (in volt) for the desired channel.
dicthigh: dictionary, with key being the channel descriptor string (i.e. 'd_ch1', 'd_ch2') and items being the high values (in volt) for the desired channel.
Returns
(dict, dict): tuple of two dicts where first dict denotes the current low value and the second dict the high value for ALL digital channels. Keys are the channel descriptor strings (i.e. 'd_ch1', 'd_ch2')

◆ set_interleave()

def keysight_M3202A.M3202A.set_interleave (   self,
  state = False 
)

Turns the interleave of an AWG on or off.

Parameters
boolstate: The state the interleave should be set to (True: ON, False: OFF)
Returns
bool: actual interleave status (True: ON, False: OFF)

◆ set_sample_rate()

def keysight_M3202A.M3202A.set_sample_rate (   self,
  sample_rate 
)

Set the sample rate of the pulse generator hardware.

Parameters
floatsample_rate: The sampling rate to be set (in Hz)
Returns
float: the sample rate returned from the device (in Hz).

◆ write()

def keysight_M3202A.M3202A.write (   self,
  command 
)

Sends a command string to the device.

Parameters
stringcommand: string containing the command
Returns
int: error code (0:OK, -1:error)

◆ write_sequence()

def keysight_M3202A.M3202A.write_sequence (   self,
  name,
  sequence_parameter_list 
)

Write a new sequence on the device memory.

Parameters
namestr, the name of the waveform to be created/append to
sequence_parameter_listlist, contains the parameters for each sequence step and the according waveform names.
Returns
: int, number of sequence steps written (-1 indicates failed process)

◆ write_waveform()

def keysight_M3202A.M3202A.write_waveform (   self,
  name,
  analog_samples,
  digital_samples,
  is_first_chunk,
  is_last_chunk,
  total_number_of_samples 
)

Write a new waveform or append samples to an already existing waveform on the device memory.

Parameters
namestr, waveform name, human readabla
analog_samplesnumpy.ndarray of type float32 containing the voltage samples
digital_samplesnumpy.ndarray of type bool containing the marker states (if analog channels are active, this must be the same length as analog_samples)
is_first_chunkbool, flag indicating if it is the first chunk to write. If True this method will create a new empty wavveform. If False the samples are appended to the existing waveform.
is_last_chunkbool, flag indicating if it is the last chunk to write. Some devices may need to know when to close the appending wfm.
total_number_of_samplesint, The number of sample points for the entire waveform (not only the currently written chunk)
Returns
: (int, list) number of samples written (-1 indicates failed process) and list of created waveform names

The documentation for this class was generated from the following file: