examples/transport: cleanup, make work (closes #20)

This commit is contained in:
Robert Jördens 2016-02-22 15:29:19 +01:00
parent 94584bb8b1
commit 61bcfb6000

View File

@ -6,13 +6,6 @@ from artiq.experiment import *
from artiq.wavesynth.coefficients import SplineSource from artiq.wavesynth.coefficients import SplineSource
transport = SplineSource(
x=np.linspace(0, 10, 101), # waveform time
y=np.random.rand(4*3*3, 101)*1e-6, # waveform data,
# 4 devices, 3 board each, 3 dacs each
)
class Transport(EnvExperiment): class Transport(EnvExperiment):
"""Transport""" """Transport"""
@ -23,19 +16,26 @@ class Transport(EnvExperiment):
self.setattr_device("electrodes") self.setattr_device("electrodes")
self.setattr_argument("wait_at_stop", NumberValue(100*us)) self.setattr_argument("wait_at_stop", NumberValue(100*us))
self.setattr_argument("speed", NumberValue(1.5)) self.setattr_argument("speed", NumberValue(1/(10*us)))
self.setattr_argument("repeats", NumberValue(100)) self.setattr_argument("repeats", NumberValue(100))
self.setattr_argument("bins", NumberValue(100)) self.setattr_argument("bins", NumberValue(100))
t = np.linspace(0, 10, 101) # waveform time
u = 1 - np.cos(np.pi*t/t[-1])
# 4 devices, 3 board each, 3 dacs each
u = np.arange(4*3*3)[:, None]*.1 + u
self.data = SplineSource(x=t, y=u)
def calc_waveforms(self, stop): def calc_waveforms(self, stop):
scale = self.speed/(50*MHz)
self.electrodes.disarm() self.electrodes.disarm()
self.tf = self.electrodes.create_frame() self.tf = self.electrodes.create_frame()
to_stop = self.tf.create_segment("to_stop") self.data.extend_segment(self.tf.create_segment("to_stop"),
from_stop = self.tf.create_segment("from_stop") 0, stop, scale=scale)
transport.extend_segment(to_stop, 0, stop, scale=self.speed)
# append the reverse transport (from stop to 0) # append the reverse transport (from stop to 0)
# both durations are the same in this case # both durations are the same in this case
transport.extend_segment(from_stop, 0, stop, scale=self.speed) self.data.extend_segment(self.tf.create_segment("from_stop"),
stop, 0, scale=scale)
# distributes frames to the sub-devices in CompoundPDQ2 # distributes frames to the sub-devices in CompoundPDQ2
# and uploads them # and uploads them
self.electrodes.arm() self.electrodes.arm()
@ -91,7 +91,7 @@ class Transport(EnvExperiment):
def run(self): def run(self):
# scan transport endpoint # scan transport endpoint
stops = range(10, len(transport.x), 10) stops = np.linspace(0, 10, 10)
self.scan(stops) self.scan(stops)