atomiq.components.sinara.kasli module

class atomiq.components.sinara.kasli.Kasli(*args, **kwargs)[source]

Bases: Component

Kasli Module

class atomiq.components.sinara.kasli.DioOutput(kasli, ttl, *args, **kwargs)[source]

Bases: Component, Switchable

Fast Digital Output Channel Attached to Kasli

This class describes the fast digital output channels directly attached to your Kasli.

Parameters:
  • kasli (Kasli) -- Kasli module that this digital output belongs to

  • ttl -- ARTIQ device from device_db.py for the DIO channel

A Switchable has one ore more channel(s) that can be switched on or off

kernel_invariants = {'kasli', 'ttl'}
on()[source]
off()[source]
class atomiq.components.sinara.kasli.DioInput(kasli, ttl, *args, **kwargs)[source]

Bases: Component, Measurable

Fast Digital Input Channel Attached to Kasli

This class describes the fast digital input channels directly attached to your Kasli.

Parameters:
  • kasli (Kasli) -- Kasli module that this digital input belongs to

  • ttl -- ARTIQ device from device_db.py for the DIO channel

A Measurable has one ore more channels at which data can be measured

kernel_invariants = {'kasli', 'ttl'}
measure()[source]
wait_for_trigger(timeout, edge='rising', log=False, keep_open=False)[source]

Wait for a trigger to occur. This function sets the time cursor to the time where the trigger edge is detected. If no edge is detected in the given timeout, the time cursor is set to the end of the gating window (set by timeout).

Parameters:
  • timeout (artiq.compiler.types.TMono('float', OrderedDict())) -- Timeout in seconds

  • edge (artiq.compiler.types.TMono('str', OrderedDict())) -- Edge to wait for (rising or falling)

  • log (artiq.compiler.types.TMono('bool', OrderedDict())) -- If True emits a warning if no trigger is detected

  • keep_open (artiq.compiler.types.TMono('bool', OrderedDict())) -- True keeps the gate open after the trigger window. This can be used to rapidly trigger on subsequent pulses on the microsecond timescale. Note that the trigger listener must be closed manually afterwards by either running this function with keep_open=True or by calling self.ttl._set_sensitivity(0) to avoid kernel slowdown.

Returns:

True if a trigger is detected, False if not

Return type:

bool

Info:

Typically a delay of about 2 us is necessary after this command to avoid underflows.