Aom example#
Experiment
from artiq.experiment import kernel, delay, ms
from atomiq import AtomiqExperiment
class ATQExperiment(AtomiqExperiment):
"""Atomiq AOM Example
This is an example experiment to demonstrate how to operate an AOM.
"""
# define components needed in the step function. They will be built and attached to
# the experiment object automatically. If components depend on others, these are also
# built automatically but not attached to the experiment object.
components = ["aom_cooler"]
arguments = {
"aom_detuning": {"default": 0, "unit": "MHz", "scale": 1e6, "ndecimals": 2},
}
@kernel
def step(self, point):
# emitting debug infomation from kernel functions is a easy as this:
self.log.info("Testmessage from the core")
# Add some slack
delay(3*ms)
# the components we listed above are initialized and readily available
self.aom_cooler.detune(point.aom_detuning)
self.aom_cooler.set_amplitude(0.3)
# if we need to do something more specific we can also access the nested objects
self.aom_cooler.rfsource.set(frequency=80e6, amplitude=0.3)
Components
components = {}
# Add core stuff
components.update({
"log": {
"classname": "atomiq.components.basics.log.KernelLogger"
}
})
# Add low level Sinara hardware
components.update({
"kasli0": {
"classname": "atomiq.components.sinara.Kasli",
"arguments": {}
},
"urukul0": {
"classname": "atomiq.components.sinara.Urukul",
"arguments": {
"cpld": "@urukul0_cpld"
}
}
})
# Add low Sinara DIOs
components.update({
"ttl_test": {
"classname": "atomiq.components.sinara.DioOutput",
"arguments": {
"kasli": "&kasli0",
"ttl": "@led0"
}
}
})
# Add DDS channels
components.update({
"dds_cooler": {
"classname": "atomiq.components.sinara.UrukulChannel",
"arguments": {
"urukul": "&urukul0",
"device": "@urukul0_ch0",
"ttl": "@ttl_urukul0_sw0"
}
}
})
# Add AOMs
components.update({
"aom_cooler": {
"classname": "atomiq.components.optoelectronics.lightmodulator.AOM",
"arguments": {
"rfsource": "&dds_cooler",
"switch": "&dds_cooler",
"center_freq": 80e6,
"bandwidth": 40e6,
"switching_delay": 30e-9,
"order": 1,
"passes": 2
}
}
})