artiq/examples/pulse_performance.py

28 lines
701 B
Python

from artiq import *
from artiq.coredevice.runtime_exceptions import RTIOUnderflow
def print_min_period(p):
print("Minimum square wave output period: {} ns".format(p))
class PulsePerformance(AutoDB):
class DBKeys:
ttl0 = Device()
@kernel
def run(self):
T = time_to_cycles(100*ns)
while True:
try:
for i in range(1000):
self.ttl0.pulse(cycles_to_time(T))
delay(cycles_to_time(T))
except RTIOUnderflow:
T += 1
self.core.recover_underflow()
else:
print_min_period(int(cycles_to_time(2*T)/(1*ns)))
break