examples: add pulse performance test

This commit is contained in:
Sebastien Bourdeauducq 2014-10-11 13:00:27 +08:00
parent 8feb141483
commit 77967f6ef1
1 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,34 @@
from artiq import *
from artiq.devices import corecom_serial, core, rtio_core
from artiq.devices.runtime_exceptions import RTIOUnderflow
def print_min_period(p):
print("Minimum square wave output period: {} ns".format(p))
class PulsePerformance(AutoContext):
parameters = "o"
@kernel
def run(self):
T = time_to_cycles(100*ns)
while True:
try:
for i in range(1000):
self.o.pulse(cycles_to_time(T))
delay(cycles_to_time(T))
except RTIOUnderflow:
T += 1
delay(1*ms)
else:
print_min_period(int(cycles_to_time(2*T)/(1*ns)))
break
if __name__ == "__main__":
with corecom_serial.CoreCom() as com:
coredev = core.Core(com)
exp = PulsePerformance(core=coredev,
o=rtio_core.RTIOOut(core=coredev, channel=1))
exp.run()