artiq/artiq/examples/kc705_nist_clock/repository/dds_setter.py

35 lines
1.0 KiB
Python

from operator import itemgetter
from artiq.experiment import *
class DDSSetter(EnvExperiment):
"""DDS Setter"""
def build(self):
self.setattr_device("core")
self.dds = dict()
device_db = self.get_device_db()
for k, v in sorted(device_db.items(), key=itemgetter(0)):
if (isinstance(v, dict)
and v["type"] == "local"
and v["module"] == "artiq.coredevice.ad9914"
and v["class"] == "AD9914"):
self.dds[k] = {
"driver": self.get_device(k),
"frequency": self.get_argument(
"{}_frequency".format(k),
NumberValue(100e6, scale=1e6, unit="MHz", precision=6))
}
@kernel
def set_dds(self, dds, frequency):
self.core.break_realtime()
dds.set(frequency)
delay(200*ms)
def run(self):
for k, v in self.dds.items():
self.set_dds(v["driver"], v["frequency"])