Ejemplo n.º 1
0
 def test_smooth_cubic(self):
     ch = self.driver.offset
     ch.smooth(.1, .2, 13*self.t, 3)
     ch.set(.2)
     delay(1*self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = out[self.channel.latency + self.channel.u.latency:][:14]
     if False:
         import matplotlib.pyplot as plt
         plt.plot(sum(out, []))
         plt.show()
Ejemplo n.º 2
0
 def test_smooth_cubic(self):
     ch = self.driver.offset
     ch.smooth(.1, .2, 13 * self.t, 3)
     ch.set(.2)
     delay(1 * self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = out[self.channel.latency + self.channel.u.latency:][:14]
     if False:
         import matplotlib.pyplot as plt
         plt.plot(sum(out, []))
         plt.show()
Ejemplo n.º 3
0
 def test_smooth_cubic(self):
     ch = self.driver.offset
     ch.smooth(.1, .2, 13, 3)
     ch.set(.2)
     delay(1 * self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = sum(out, [])
     if False:
         import matplotlib.pyplot as plt
         plt.plot(out)
         plt.show()
Ejemplo n.º 4
0
 def test_linear(self):
     d = self.driver
     d.offset.set_coeff_mu([100, 10])
     delay(10 * self.t)
     d.offset.set_coeff([0])
     delay(1 * self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = out[self.channel.latency + self.channel.u.latency:][:11]
     for i in range(len(out) - 1):
         with self.subTest(i):
             v = 100 + i * 10
             self.assertEqual(out[i], [v, v])
     self.assertEqual(out[-1], [0, 0])
Ejemplo n.º 5
0
 def test_linear(self):
     d = self.driver
     d.offset.set_coeff_mu([100, 10])
     delay(10*self.t)
     d.offset.set_coeff([0])
     delay(1*self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = out[self.channel.latency + self.channel.u.latency:][:11]
     for i in range(len(out) - 1):
         with self.subTest(i):
             v = 100 + i*10
             self.assertEqual(out[i], [v, v])
     self.assertEqual(out[-1], [0, 0])
Ejemplo n.º 6
0
 def test_smooth_linear(self):
     ch = self.driver.offset
     ch.smooth(.1, .2, 13 * self.t, 1)
     ch.set(.2)
     delay(1 * self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = out[self.channel.latency + self.channel.u.latency:][:14]
     a = int(round(.1 * ch.scale))
     da = int(round(.1 * ch.scale * (1 << ch.width) // 13))
     for i in range(len(out) - 1):
         with self.subTest(i):
             v = a + (i * da >> ch.width)
             self.assertEqual(out[i], [v, v])
     a = int(round(.2 * ch.scale))
     self.assertEqual(out[-1], [a, a])
Ejemplo n.º 7
0
 def test_smooth_linear(self):
     ch = self.driver.offset
     ch.smooth(.1, .2, 13*self.t, 1)
     ch.set(.2)
     delay(1*self.t)
     out = self.run_channel(self.rtio_manager.outputs)
     out = out[self.channel.latency + self.channel.u.latency:][:14]
     a = int(round(.1*ch.scale))
     da = int(round(.1*ch.scale*(1 << ch.width)//13))
     for i in range(len(out) - 1):
         with self.subTest(i):
             v = a + (i*da >> ch.width)
             self.assertEqual(out[i], [v, v])
     a = int(round(.2*ch.scale))
     self.assertEqual(out[-1], [a, a])
Ejemplo n.º 8
0
 def test_make_events(self):
     d = self.driver
     d.offset.set(.9)
     delay(2 * self.t)
     d.frequency0.set(.1)
     d.frequency1.set(.1)
     delay(2 * self.t)
     d.offset.set(0)
     v = int(round((1 << 48) * .1 * self.t))
     self.assertEqual(self.rtio_manager.outputs, [
         (0., 1, 0, int(round(self.driver.offset.scale * .9))),
         (2. * self.t, 8, 0,
          int(
              round((1 << self.driver.frequency0.width) * self.t /
                    self.channel.parallelism * .1))),
         (2. * self.t, 3, 0, [int32(v), int32(v >> 32)]),
         (4. * self.t, 1, 0, 0),
     ])
Ejemplo n.º 9
0
 def test_make_events(self):
     d = self.driver
     d.offset.set(.9)
     delay(2*self.t)
     d.frequency0.set(.1)
     d.frequency1.set(.1)
     delay(2*self.t)
     d.offset.set(0)
     v = int(round((1 << 48) * .1 * self.t))
     self.assertEqual(
         self.rtio_manager.outputs, [
             (0., 1, 0, int(round(self.driver.offset.scale*.9))),
             (2.*self.t, 8, 0, int(round(
                 (1 << self.driver.frequency0.width) *
                 self.t/self.channel.parallelism*.1))),
             (2.*self.t, 3, 0, [int32(v), int32(v >> 32)]),
             (4.*self.t, 1, 0, 0),
         ])
Ejemplo n.º 10
0
    def test_fir_overflow(self):
        MHz = 1e-3
        ns = 1.
        f1 = self.driver.frequency1
        a1 = self.driver.amplitude1
        p1 = self.driver.phase1
        cfg = self.driver.config
        f1.set(1 * MHz)
        a1.set(.99)
        delay(100 * ns)
        p1.set(.5)
        delay(100 * ns)
        a1.set(0)

        out = self.run_channel(self.rtio_manager.outputs)
        out = sum(out, [])
        if False:
            import matplotlib.pyplot as plt
            plt.plot(out)
            plt.show()
Ejemplo n.º 11
0
    def test_fir_overflow(self):
        MHz = 1e-3
        ns = 1.
        f1 = self.driver.frequency1
        a1 = self.driver.amplitude1
        p1 = self.driver.phase1
        cfg = self.driver.config
        f1.set(1*MHz)
        a1.set(.99)
        delay(100*ns)
        p1.set(.5)
        delay(100*ns)
        a1.set(0)

        out = self.run_channel(self.rtio_manager.outputs)
        out = sum(out, [])
        if False:
            import matplotlib.pyplot as plt
            plt.plot(out)
            plt.show()
Ejemplo n.º 12
0
    def test_demo_2tone(self):
        MHz = 1e-3
        ns = 1.
        self.sawg0 = self.driver

        t_up = t_hold = t_down = 400 * ns
        a1 = .3
        a2 = .4
        order = 3

        self.sawg0.frequency0.set(10 * MHz)
        self.sawg0.phase0.set(0.)
        self.sawg0.frequency1.set(1 * MHz)
        self.sawg0.phase1.set(0.)
        self.sawg0.frequency2.set(13 * MHz)
        self.sawg0.phase2.set(0.)
        t = now_mu()
        self.sawg0.amplitude1.smooth(.0, a1, t_up, order)
        at_mu(t)
        self.sawg0.amplitude2.smooth(.0, a2, t_up, order)
        self.sawg0.amplitude1.set(a1)
        self.sawg0.amplitude2.set(a2)
        delay(t_hold)
        t = now_mu()
        self.sawg0.amplitude1.smooth(a1, .0, t_down, order)
        at_mu(t)
        self.sawg0.amplitude2.smooth(a2, .0, t_down, order)
        self.sawg0.amplitude1.set(.0)
        self.sawg0.amplitude2.set(.0)

        out = self.run_channel(self.rtio_manager.outputs)
        out = sum(out, [])
        if True:
            import matplotlib.pyplot as plt
            plt.plot(out)
            plt.show()
Ejemplo n.º 13
0
    def test_demo_2tone(self):
        MHz = 1e-3
        ns = 1.
        self.sawg0 = self.driver

        t_up = t_hold = t_down = 400*ns
        a1 = .3
        a2 = .4
        order = 3

        self.sawg0.frequency0.set(10*MHz)
        self.sawg0.phase0.set(0.)
        self.sawg0.frequency1.set(1*MHz)
        self.sawg0.phase1.set(0.)
        self.sawg0.frequency2.set(13*MHz)
        self.sawg0.phase2.set(0.)
        t = now_mu()
        self.sawg0.amplitude1.smooth(.0, a1, t_up, order)
        at_mu(t)
        self.sawg0.amplitude2.smooth(.0, a2, t_up, order)
        self.sawg0.amplitude1.set(a1)
        self.sawg0.amplitude2.set(a2)
        delay(t_hold)
        t = now_mu()
        self.sawg0.amplitude1.smooth(a1, .0, t_down, order)
        at_mu(t)
        self.sawg0.amplitude2.smooth(a2, .0, t_down, order)
        self.sawg0.amplitude1.set(.0)
        self.sawg0.amplitude2.set(.0)

        out = self.run_channel(self.rtio_manager.outputs)
        out = sum(out, [])
        if True:
            import matplotlib.pyplot as plt
            plt.plot(out)
            plt.show()
Ejemplo n.º 14
0
 def delay_mu(self, t):
     delay(t)
Ejemplo n.º 15
0
 def delay_mu(self, t):
     delay(t)