datasheets/examples/pll.py

45 lines
995 B
Python

from artiq.experiment import *
class MirnyEnv(EnvExperiment):
def build(self):
self.setattr_device("core")
self.cpld = self.get_device("mirny0_cpld")
self.pll0 = self.get_device("mirny0_ch0")
@kernel
def init_mirny(self):
self.core.reset()
self.cpld.init()
self.pll0.init()
self.pll0.set_frequency(1*GHz)
self.pll0.set_att_mu(0b11001100)
self.pll0.sw.on()
class PowerControl(MirnyEnv):
@kernel
def run(self):
self.core.reset()
self.init_mirny()
# Run other code here
delay(5*s)
self.pll0.set_output_power_mu(0)
print(self.pll0.output_power_mu())
class ToggleSwitch(MirnyEnv):
@kernel
def run(self):
self.core.reset()
self.init_mirny()
delay_mu(8) # Avoid RTIO collision
self.pll0.sw.off()
delay(1*s)
while True:
self.pll0.sw.pulse(100*us)
delay(900*us)