mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-05 09:46:36 +08:00
Robert Jordens
e870b27830
* "trigger" now means that the corresponding line will only start once the trigger line is high. * "jump" is implicit as the last line in a frame must jump back. * spline coefficients are now compensated for finite time step size
119 lines
3.4 KiB
Python
119 lines
3.4 KiB
Python
import unittest
|
|
|
|
from artiq.wavesynth import compute_samples
|
|
|
|
|
|
class TestSynthesizer(unittest.TestCase):
|
|
program = [
|
|
[
|
|
# frame 0
|
|
{
|
|
# frame 0, segment 0, line 0
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [0.0, 0.0, 0.01],
|
|
"phase": [0.0, 0.0, 0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": True
|
|
},
|
|
{
|
|
# frame 0, segment 0, line 1
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [49.5, 1.0, -0.01],
|
|
"phase": [0.0, 0.05, 0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": False
|
|
},
|
|
],
|
|
[
|
|
# frame 1
|
|
{
|
|
# frame 1, segment 0, line 0
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [100.0, 0.0, -0.01],
|
|
"phase": [0.0, 0.1, -0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": True
|
|
},
|
|
{
|
|
# frame 1, segment 0, line 1
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [50.5, -1.0, 0.01],
|
|
"phase": [0.0, 0.05, -0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": False
|
|
}
|
|
],
|
|
[
|
|
# frame 2
|
|
{
|
|
# frame 2, segment 0, line 0
|
|
"dac_divider": 1,
|
|
"duration": 84,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [100.0],
|
|
"phase": [0.0, 0.05],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": True
|
|
},
|
|
{
|
|
# frame 2, segment 1, line 0
|
|
"dac_divider": 1,
|
|
"duration": 116,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [100.0],
|
|
"phase": [0.0, 0.05],
|
|
"clear": True}
|
|
}
|
|
],
|
|
"trigger": True
|
|
}
|
|
]
|
|
]
|
|
|
|
def setUp(self):
|
|
self.dev = compute_samples.Synthesizer(1, self.program)
|
|
self.t = list(range(600))
|
|
|
|
def drive(self):
|
|
s = self.dev
|
|
y = []
|
|
for f in 0, 2, None, 1:
|
|
if f is not None:
|
|
s.select(f)
|
|
y += s.trigger()[0]
|
|
x = list(range(600))
|
|
return x, y
|
|
|
|
def test_run(self):
|
|
x, y = self.drive()
|