forked from sinara-hw/datasheets
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
|
from artiq.experiment import *
|
||
|
|
||
|
|
||
|
class SoftwareEdgeCount(EnvExperiment):
|
||
|
def build(self):
|
||
|
self.setattr_device("core")
|
||
|
self.ttlin = self.get_device("ttl0")
|
||
|
self.ttlout = self.get_device("ttl7")
|
||
|
|
||
|
@kernel
|
||
|
def run(self):
|
||
|
self.core.reset()
|
||
|
gate_start_mu = now_mu()
|
||
|
# Start input gate & advance timeline cursor to gate_end_mu
|
||
|
gate_end_mu = self.ttlin.gate_rising(1*ms)
|
||
|
at_mu(gate_start_mu)
|
||
|
|
||
|
for _ in range(64):
|
||
|
self.ttlout.pulse(8*ns)
|
||
|
delay(8*ns)
|
||
|
|
||
|
counts = self.ttlin.count(gate_end_mu)
|
||
|
print(counts)
|
||
|
|
||
|
|
||
|
class EdgeCounter(EnvExperiment):
|
||
|
def build(self):
|
||
|
self.setattr_device("core")
|
||
|
self.edgecounter0 = self.get_device("ttl0_counter")
|
||
|
|
||
|
@kernel
|
||
|
def run(self):
|
||
|
self.core.reset()
|
||
|
self.edgecounter0.gate_rising(1*ms)
|
||
|
counts = self.edgecounter0.fetch_count()
|
||
|
print(counts)
|
||
|
|
||
|
|
||
|
class ExternalTrigger(EnvExperiment):
|
||
|
def build(self):
|
||
|
self.setattr_device("core")
|
||
|
self.ttlin = self.get_device("ttl0")
|
||
|
self.ttlout = self.get_device("ttl4")
|
||
|
|
||
|
@kernel
|
||
|
def run(self):
|
||
|
self.core.reset()
|
||
|
gate_end_mu = self.ttlin.gate_rising(5*ms)
|
||
|
timestamp_mu = self.ttlin.timestamp_mu(gate_end_mu)
|
||
|
at_mu(timestamp_mu + self.core.seconds_to_mu(10*ms))
|
||
|
self.ttlout.pulse(1*us)
|