stirap_dds package

stirap_dds.stirap_server module

TODO:

class stirap_dds.stirap_server.StirapServer

Bases: LabradServer

TODO: Server for communicating with AD9910 + Arduino setup.

The current hardware setup uses an Arduino to program the AD9910 evaluation board over SPI. The AD9910 has a set of 8 single-frequency registers (called the “profiles”) that can be rapidly and phase-coherently switched via external digital inputs. Additionally, the Arduino can hold an array (length < 12) of values (called the “program”), which are advanced by an external trigger input to the Arduino. The program also allows for frequency sweeps, which are useful for performing adiabatic rapid passages (ARPs).

Currently, this server assumes this general architecture; however, it should be straightforward to add new hardware implementations (./devices) in the future.

channels = {'down': {'channel': 'stirap_ch2', 'last_freq': 130}, 'up': {'channel': 'stirap_ch1', 'last_freq': 200}}
connect()
default_down_freq = 130
default_up_freq = 200
dt = 1
initServer()

Initialize Server.

Called after registering settings and creating a client connection to labrad, but before we start serving requests.

name = 'stirap'
nsteps = 5000
profiles = '[{"profile": 0, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 1, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 2, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 3, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 4, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 5, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 6, "freq": 10, "ampl": 0, "phase": 0}, {"profile": 7, "freq": 10, "ampl": 0, "phase": 0}]'
servername = 'ad9910'
set_eom_freqs(self, c, channel, freqs)

TODO:

Parameters:
  • c – LabRAD context

  • channel (str) – dds channel name (either “up” or “down”)

  • freqs ([float]) – list of frequencies to set

Returns:

stirap_dds.devices package

stirap_dds.devices.arduino module

class stirap_dds.devices.arduino.Arduino(config)

Bases: DeviceWrapper

__init__(config)

defaults

echo

non-defaults

force_trigger(self)

Issues trigger to device instead of external trigger

initialize()
write_data(self, program, profiles)

Writes data to the Arduino. See ad9910.ad9910_server for definitions of ProgramLine and Profile .

Parameters:
  • program (list(ProgramLine)) – list of ProgramLine s

  • profiles (list(Profile)) – list of Profile s