atomiq.components.sinara.dac¶
Classes¶
This class represents the Sinara Zotino 32 Channel DAC. |
|
Voltage Source |
|
The Sinara Fast ADC called Fastino |
|
Voltage Source |
Module Contents¶
- class atomiq.components.sinara.dac.Zotino(zotino_device, *args, max_parallel_arbs=5, max_arb_samples=128, **kwargs)[source]¶
Bases:
atomiq.components.electronics.voltagesource.DACThis class represents the Sinara Zotino 32 Channel DAC.
Hint
The Zotino provides the
Zotino.parallel_arbcontext manager which allows to play arbitrary waveforms and ramps on multiple channels in parallel. Example code using this functionallity can be found here- Parameters:
zotino_device (artiq.language.types.TStr) -- The ARTIQ zotino device to use from the device db, e.g. @zotino_0
max_parallel_arbs (artiq.language.types.TInt32) -- Number of channels that can be ramped or played an arbitrary waveform on in parallel. Keep this as low as possible as higher numbers increase the prerun phase length.
max_arb_samples (artiq.language.types.TInt32) -- Number of samples a arbitrary waveform/ramp can maximally have. Keep this as low as possible as higher numbers increase the prerun phase length.
- kernel_invariants¶
- hold_arbs = False¶
- _last_update¶
- _last_dac_write¶
- _presched_dac_counter = 0¶
- _zotino_device¶
- parallel_arb¶
- current_parallel_arb¶
- update_i = 0¶
- update_times¶
- _prerun()[source]¶
Specify here what should be done for this component before the run starts. In contrast to the _build() method, the _prerun() routine is executed on the core device before the actual experiment starts.
- update()[source]¶
Applys the voltages in the DAC register to the outputs.
Hint
If an update is already scheduled at the current time, this command does nothing. This allows for setting multiple DAC channels in a parallel statement without multiple slow updates.
- write_dac(channel, voltage)[source]¶
Writes the voltage value voltage to the DAC channel channel. This method schedules the operation in the past and does not advance the time cursor.
- Parameters:
channel (artiq.language.types.TInt32) -- Channel number
voltage (artiq.language.types.TFloat) -- Voltage in V
Hint
This command uses a scheduler which takes care that no write operations occure at the same time to prevent undefined behavior which often do not result in a noticable error.
- class _SingleChannelArb(zotino_instance, max_samples)[source]¶
Represents an arbitrary voltage signal on a single Zotino channel.
- Parameters:
zotino_instance (Zotino)
max_samples (artiq.language.types.TInt32)
- active = False¶
- channel = 0¶
- len = 0¶
- step_offset¶
- i_step = 0¶
- zotino¶
- values¶
- class _ParallelArb(zotino_instance, max_parallel, max_samples)[source]¶
Represents a voltage arbitrary signal on multiple channels in parallel
- Parameters:
zotino_instance (Zotino)
max_parallel (artiq.language.types.TInt32)
max_samples (artiq.language.types.TInt32)
- zotino¶
- arbs¶
- start_mu¶
- timestep_mu¶
- n_arbs = 0¶
- start_record()[source]¶
Defines the starting point of the parallel arbitrary waveform at the current time cursor position and resets previously scheduled arbs
- register_arb(channel, arb_values, timestep_mu, start_mu)[source]¶
Add a single channel arbitrary waveform to the parallel arb scheduler
- Parameters:
channel (artiq.language.types.TInt32) -- Zotino channel
arb_values -- List of values which are played sequentially in machine units
timestep_mu (artiq.language.types.TInt64) -- Time between arb samples. Must be equal for all arbs which are scheduled in parallel
start_mu (artiq.language.types.TInt64) -- Time offset of the arb in reference to the point where start_record was called. Can be negative but must be a multiple of timestep_mu.
- class atomiq.components.sinara.dac.ZotinoChannel(dac_device, channel, *args, **kwargs)[source]¶
Bases:
atomiq.components.electronics.voltagesource.DACChannelVoltage Source
This abstract class represents any device that can output a defined, controllable voltage.
- Parameters:
min_voltage -- The minimum voltage the device can output [V]
max_voltage -- The maximum voltage the device can output [V]
default_ramp_steps -- The default number of steps that this device should use if the voltage is ramped. This value is only used if no ramp_steps are given in the
ramp_voltage()method.dac_device (DAC)
channel (artiq.language.types.TInt32)
- _set_voltage(voltage, update_dac=True)[source]¶
- Parameters:
voltage (artiq.language.types.TFloat)
update_dac (artiq.language.types.TBool)
- _ramp_voltage(duration, voltage_start, voltage_end, ramp_timestep=0.0002)[source]¶
This method implements a stupid ramp on an abstract level. This will most likely work but be slow. If your hardware has native support for ramping, please override this function when you inherit from VoltageSource
- Parameters:
duration (artiq.language.types.TFloat)
voltage_start (artiq.language.types.TFloat)
voltage_end (artiq.language.types.TFloat)
ramp_timestep (artiq.language.types.TFloat)
- class atomiq.components.sinara.dac.Fastino(fastino_device, parallel_event_delay=1e-08, *args, **kwargs)[source]¶
Bases:
atomiq.components.electronics.voltagesource.DACThe Sinara Fast ADC called Fastino
- Parameters:
fastino_device (artiq.language.types.TStr) -- The ARTIQ fastino device from the device_db
parallel_event_delay (artiq.language.types.TBool) -- Time by which occuring parallel events in ramps are moved [s] (default: 10ns)
- kernel_invariants¶
- _fastino_device¶
- event_slots¶
- event_slots_max_idx = -1¶
- parallel_event_delay = 1e-08¶
- class atomiq.components.sinara.dac.FastinoChannel(dac_device, channel, *args, **kwargs)[source]¶
Bases:
atomiq.components.electronics.voltagesource.DACChannelVoltage Source
This abstract class represents any device that can output a defined, controllable voltage.
- Parameters:
min_voltage -- The minimum voltage the device can output [V]
max_voltage -- The maximum voltage the device can output [V]
default_ramp_steps -- The default number of steps that this device should use if the voltage is ramped. This value is only used if no ramp_steps are given in the
ramp_voltage()method.dac_device (DAC)
channel (artiq.language.types.TInt32)
- _ramp_voltage(duration, voltage_start, voltage_end, ramp_timestep=0.0002, relocate_parallel=True)[source]¶
This method implements a stupid ramp on an abstract level. This will most likely work but be slow. If your hardware has native support for ramping, please override this function when you inherit from VoltageSource
- Parameters:
duration (artiq.language.types.TFloat)
voltage_start (artiq.language.types.TFloat)
voltage_end (artiq.language.types.TFloat)
ramp_timestep (artiq.language.types.TFloat)
relocate_parallel (artiq.language.types.TBool)