Ejemplo n.º 1
0
    def test_subroutine(self):
        """Test the subroutine calling
    """
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        my_api.begin_subroutine("test")
        my_api.dac_value(-12, 1)
        my_api.dac_value(-12, 1)
        my_api.dac_value(-12, 1)
        my_api.end_subroutine()

        my_api.begin_subroutine("test1")
        my_api.dac_value(-0xf, 3)
        my_api.dac_value(-0xf, 3)
        my_api.dac_value(-0xf, 3)
        my_api.end_subroutine()

        my_api.dac_value(-12, 1)
        my_api.dac_value(-12, 1)
        my_api.call_subroutine("test")
        my_api.call_subroutine("test1")
        my_api.call_subroutine("test")
        my_api.dac_value(-12, 1)
        my_sequencer.compile_sequence()
        my_sequencer.debug_sequence(force=False)
        target_list = []
        for my_ins in my_sequencer.current_sequence:
            if my_ins.name == "call":
                target_list.append(my_ins.target_address)
        label_list = ['test', 'test1', 'test']
        for target in target_list:
            print target
            label = my_sequencer.current_sequence[target].label
            self.assertEquals(label, label_list.pop())
Ejemplo n.º 2
0
    def test_looping(self):
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        my_api.ttl_value(0x0)
        my_api.label("go")

        my_api.ttl_value(0x11)
        my_api.wait(2)
        my_api.ttl_value(0x0)
        my_api.wait(50)

        reg_addr = 5
        reg_addr2 = 3
        my_api.ttl_value(0x0)
        my_api.instructions_ldc(reg_addr, 5)
        my_api.label("test1")

        my_api.instructions_ldc(reg_addr2, 3)
        my_api.label("innerloop")

        my_api.ttl_value(0x10)
        my_api.wait(10)
        my_api.ttl_value(0x0)
        my_api.wait(20)

        my_api.instructions_bdec("innerloop", reg_addr2)

        #        my_api.wait(50)

        my_api.instructions_bdec("test1", reg_addr)

        my_api.jump("go")

        self.compile(my_sequencer, 1)
Ejemplo n.º 3
0
    def test_all_dds_loops(self, frequency=10, amplitude=-15, clock=800):
        """Tests all the number of DDS boards that is given in the config file
        via putting out the frequency and amplitude given with the paramters"""
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        dds_device = []
        for k in range(no_of_boards):
            dds_device.append(ad9910.AD9910(k, clock))
            my_api.init_dds(dds_device[k])

        my_api.label("beginseq")
        # saves frequencies in dds registers/profiles
        for k in range(no_of_boards):
            my_api.dac_value(amplitude, k)
            my_api.init_frequency(dds_device[k], frequency, 0)
            my_api.update_dds(dds_device[k])

        my_api.wait(2)
        my_api.ttl_value(0x1)

        for k in range(no_of_boards):
            my_api.set_dds_profile(dds_device[k], 0)
            my_api.update_dds(dds_device[k])

        my_api.ttl_value(0x0)
        my_api.jump("beginseq")

        self.compile(my_sequencer)
Ejemplo n.º 4
0
    def test_phase_switching_simultan(self,
                                      freq1=45,
                                      freq2=45,
                                      amplitude=-15,
                                      address1=0,
                                      address2=1,
                                      clock=800):
        "Test two dds simultaneous on"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)
        dds_device = ad9910.AD9910(address1, clock)
        dds_device2 = ad9910.AD9910(address2, clock)
        my_api.init_dds(dds_device)
        my_api.init_dds(dds_device2)

        my_api.label("test")
        my_api.init_frequency(dds_device, 0.0, 0)
        my_api.init_frequency(dds_device2, 0.0, 0)
        my_api.init_frequency(dds_device, freq1, 1)
        my_api.init_frequency(dds_device2, freq2, 2)
        my_api.dac_value(amplitude, address1)
        my_api.dac_value(amplitude, address2)
        my_api.ttl_value(0x1, 2)

        my_api.switch_frequency(dds_device, 0, 0)
        my_api.switch_frequency(dds_device2, 0, 0)
        my_api.wait(2000)
        my_api.switch_frequency(dds_device, 1, 0)
        my_api.switch_frequency(dds_device2, 1, 0)
        my_api.ttl_value(0x0, 2)
        my_api.wait(10000)
        my_api.jump("test")

        self.compile(my_sequencer)
Ejemplo n.º 5
0
 def test_ttl_set(self, value=0xffff, show_debug=0):
     "Test ttl pulses of box"
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.ttl_value(value, 2)
     my_api.ttl_value(value, 3)
     self.compile(my_sequencer, show_debug)
Ejemplo n.º 6
0
    def test_dds_profile_switching(self, my_device=0, clock=800):
        "Just sets a single profile of the dds and activates it"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)
        dds_device = ad9910.AD9910(my_device, clock)

        my_api.label("beginseq")
        my_api.init_dds(dds_device)
        # saves frequencies in dds registers/profiles
        my_api.dac_value(-10, my_device)
        my_api.init_frequency(dds_device, 0.0, 0)
        my_api.init_frequency(dds_device, 5.0, 1)
        my_api.init_frequency(dds_device, 10.0, 2)

        my_api.update_dds(dds_device)
        my_api.wait(2)
        #       my_api.dac_value(-2, my_device)
        my_api.ttl_value(0x2)
        my_api.set_dds_profile(dds_device, 1)
        my_api.update_dds(dds_device)
        my_api.wait(2)
        my_api.set_dds_profile(dds_device, 2)
        my_api.update_dds(dds_device)
        my_api.wait(2)
        my_api.set_dds_profile(dds_device, 0)
        my_api.ttl_value(0x0)
        my_api.jump("beginseq")
        self.compile(my_sequencer)
Ejemplo n.º 7
0
    def test_dds_switching(self,
                           frequency1,
                           frequency2,
                           ampl1=0,
                           ampl2=0,
                           my_device=0,
                           clock=800):
        "Just sets a single profile of the dds and activates it"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)
        dds_device = ad9910.AD9910(my_device, clock)

        my_api.label("beginseq")
        my_api.init_dds(dds_device)
        my_api.ttl_value(0x2)
        # set_dds_freq params: dds_device, frequency, profile
        my_api.set_dds_freq(dds_device, frequency1, 0)
        my_api.update_dds(dds_device)
        my_api.dac_value(ampl1, my_device)
        my_api.wait(1)
        my_api.set_dds_freq(dds_device, frequency2, 0)
        my_api.update_dds(dds_device)
        my_api.ttl_value(0x0)
        my_api.dac_value(ampl2, my_device)
        my_api.set_dds_freq(dds_device, 0.0, 0)
        my_api.update_dds(dds_device)
        my_api.jump("beginseq")
        self.compile(my_sequencer)
Ejemplo n.º 8
0
    def test_lvds(self,
                  opcode=1,
                  address=1,
                  data=1,
                  phase_profile=0,
                  control=0,
                  wait=0):
        "Just tests the lvds command"

        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)
        my_api.label("beginseq")
        my_api.ttl_value(0x2)

        #def __lvds_cmd(self, opcode, address, data, profile=0, control=0, wait=0):

        my_api._api__lvds_cmd(0, 0, 1, 0, 0, 0)
        my_api.wait(1, use_cycles=True)
        my_api._api__lvds_cmd(opcode, address, data, phase_profile, control,
                              wait)
        my_api.wait(1, use_cycles=True)
        my_api._api__lvds_cmd(0, 0, 0)
        my_api.jump("beginseq")

        self.compile(my_sequencer)
Ejemplo n.º 9
0
    def test_switch_off(self,
                        freq1=45,
                        amplitude=-15,
                        address1=0,
                        wait=0.0,
                        clock=800):
        "Just sets a loop profile of the dds and activates it"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        dds_device = ad9910.AD9910(address1, clock)

        my_api.init_dds(dds_device)

        my_api.label("test")

        my_api.init_frequency(dds_device, 0.0, 0)
        my_api.init_frequency(dds_device, freq1, 1)

        my_api.dac_value(amplitude, address1)

        my_api.ttl_value(0x1, 2)

        my_api.switch_frequency(dds_device, 0, 0)
        my_api.wait(20)
        my_api.switch_frequency(dds_device, 1, 0)
        my_api.wait(20 + wait)
        my_api.switch_frequency(dds_device, 0, 0)

        my_api.ttl_value(0x0, 2)
        my_api.wait(10000)
        my_api.jump("test")

        self.compile(my_sequencer)
Ejemplo n.º 10
0
 def test_j_seq(self):
     """test the jump address
 """
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.dac_value(-12, 1)
     my_api.label("test")
     my_api.dac_value(-12, 1)
     my_api.jump("test")
     my_sequencer.compile_sequence()
     my_sequencer.current_sequence.pop()
     my_sequencer.current_sequence.pop()
     my_sequencer.current_sequence.pop()
     my_sequencer.current_sequence.pop()
     my_sequencer.debug_sequence(force=False)
     j_insn = my_sequencer.current_sequence[15]
     label_insn = my_sequencer.current_sequence[7]
     target_list = []
     for my_ins in my_sequencer.current_sequence:
         if my_ins.name == "j":
             target_list.append(my_ins.target_address)
     label_list = ['test']
     for target in target_list:
         print target
         label = my_sequencer.current_sequence[target].label
         self.assertEquals(label, label_list.pop())
     del (my_sequencer)
Ejemplo n.º 11
0
    def test_compile_speed(self):
        """Test if 10000 DAC events may be compiled in under 1s
    """
        time1 = time.time()
        try:
            psyco.full()
        except:
            print("Psyco not installed")

        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)
        N0 = 10000
        my_api.dac_value(-3, 1)
        my_api.jump("test")
        for i in range(N0):
            my_api.dac_value(-3, 1)
        my_api.label("test")
        my_sequencer.compile_sequence()
        if N0 < 100:
            my_sequencer.debug_sequence()
        #    print my_my_sequencer.word_list
        time2 = time.time()
        print str(time2 - time1)
        if time2 - time1 > 1:
            self.fail("Failed speed test: " + str(time2 - time1))
Ejemplo n.º 12
0
 def test_random(self):
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.label("go")
     my_api.ttl_value(random.randint(0, 0xffff))
     my_api.wait(200000)
     my_api.jump("go")
     self.compile(my_sequencer, 0)
Ejemplo n.º 13
0
 def test_api_ad9910(self):
   """Tests the api functions for the ad9910
   """
   dds_device = ad9910.AD9910(1, 1e3)
   my_sequencer=sequencer.sequencer()
   my_api=api.api(my_sequencer)
   my_api.init_dds(dds_device)
   my_sequencer.compile_sequence()
   my_sequencer.debug_sequence()
Ejemplo n.º 14
0
 def test_freq_api_ad9910(self):
   "Tests the API set freq fcuntion for the ad9910"
   dds_device = ad9910.AD9910(1, 1e3)
   my_sequencer=sequencer.sequencer()
   my_api=api.api(my_sequencer)
   my_api.init_dds(dds_device)
   my_api.set_dds_freq(dds_device, 300, 2)
   my_sequencer.compile_sequence()
   my_sequencer.debug_sequence()
Ejemplo n.º 15
0
 def test_save_file(self):
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.ttl_set_bit("1", 1)
     my_api.ttl_set_bit("6", 1)
     my_api.ttl_set_bit("18", 1)
     my_sequencer.compile_sequence()
     my_sequencer.debug_sequence()
     my_comm = comm.PTPComm(nonet=True)
Ejemplo n.º 16
0
 def test_dac_sequence(self):
     """test if the dac instruction generates the right number of insns
 """
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.dac_value(-12, 1)
     current_seq = my_sequencer.current_sequence
     my_sequencer.debug_sequence(force=False)
     self.assertEquals(len(current_seq), 13)
     del (my_sequencer)
Ejemplo n.º 17
0
 def test_lvds_bus_single(self):
     "Test the LVDS bus. Use this with the corresponding signal tap file"
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.ttl_value(0xffff, 0)
     my_api.ttl_value(0xffff, 1)
     my_api.ttl_value(0xaaaa, 0)
     my_api.ttl_value(0xaaaa, 1)
     my_api.wait(100)
     self.compile(my_sequencer)
Ejemplo n.º 18
0
    def test_phase_switching(self,
                             freq1=45,
                             freq2=45,
                             amplitude=-15,
                             address1=0,
                             address2=1,
                             clock=800):
        "Just sets a loop profile of the dds and activates it"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        dds_device = ad9910.AD9910(address1, clock)
        dds_device2 = ad9910.AD9910(address2, clock)

        my_api.init_dds(dds_device)
        my_api.init_dds(dds_device2)

        my_api.label("test")

        my_api.init_frequency(dds_device, 0.0, 0)
        my_api.init_frequency(dds_device2, 0.0, 0)

        my_api.init_frequency(dds_device, freq1, 1)
        my_api.init_frequency(dds_device2, freq1, 1)
        my_api.init_frequency(dds_device2, freq2, 2)

        my_api.dac_value(amplitude, address1)
        my_api.dac_value(amplitude, address2)

        my_api.ttl_value(0x1, 2)

        my_api.switch_frequency(dds_device, 0, 0)
        my_api.switch_frequency(dds_device2, 0, 0)
        my_api.wait(20)
        my_api.switch_frequency(dds_device, 1, 0)
        my_api.switch_frequency(dds_device2, 1, 0)

        for i in range(15):
            my_api.switch_frequency(dds_device2, 1, i * 0.05 * 3.1415)
            my_api.wait(20)
        my_api.switch_frequency(dds_device2, 1, 0)
        my_api.wait(100)
        for i in range(10):
            my_api.switch_frequency(dds_device2, 2, i * 0.05 * 3.1415)
            my_api.wait(20)
        my_api.switch_frequency(dds_device2, 1, 0)
        my_api.wait(100)
        my_api.switch_frequency(dds_device, 0, 0)
        my_api.switch_frequency(dds_device2, 0, 0)

        my_api.ttl_value(0x0, 2)
        my_api.wait(10000)
        my_api.jump("test")

        self.compile(my_sequencer)
Ejemplo n.º 19
0
 def test_subroutine_error_handler(self):
     """Test if the subroutine error handler works correctly
 """
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.begin_subroutine("test")
     my_api.dac_value(-12, 1)
     try:
         self.assertRaises(RuntimeError, my_api.begin_subroutine("test1"))
     except RuntimeError:
         None
Ejemplo n.º 20
0
 def test_wtr(self):
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.ttl_set_bit("18", 1)
     my_api.ttl_set_bit("12", 1)
     my_api.wait_trigger(0xf)
     my_api.ttl_set_bit("1", 1)
     my_api.ttl_set_bit("6", 1)
     my_sequencer.compile_sequence()
     my_sequencer.debug_sequence()
     my_comm = comm.PTPComm(nonet=True)
     my_comm.savebin(my_sequencer.word_list)
Ejemplo n.º 21
0
    def test_trigger(self):
        "Test the trigger functionality of box"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        my_api.ttl_value(0x0, 2)
        my_api.label("start_loop")
        my_api.jump_trigger("trig_label", 0x2)
        my_api.jump("start_loop")
        my_api.label("trig_label")
        my_api.ttl_value(0xffff, 2)
        self.compile(my_sequencer)
Ejemplo n.º 22
0
 def test_kit(self):
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.label("go")
     for k in range(30):
         val = 1 << k
         if k >= 15:
             val = val >> 2 * (k - 15)
         my_api.ttl_value(val, 2)
         print val
         my_api.wait(200000)
     my_api.jump("go")
     self.compile(my_sequencer, 0)
Ejemplo n.º 23
0
 def test_dds_simple(self, frequency=10, amplitude=0, my_device=0):
     "Just sets a single profile of the dds and activates it"
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     dds_device = ad9910.AD9910(my_device, 800)
     #        my_api.init_dds(dds_device)
     #        my_api.set_dds_freq(dds_device, frequency, 0)
     #        my_api.set_dds_profile(dds_device, 0)
     my_api.ttl_value(0xf, 1)
     my_api.update_dds(0, dds_device)
     #        my_api.dac_value(2**14-100, 0)
     #        my_api.dac_value(amplitude, my_device)
     self.compile(my_sequencer)
Ejemplo n.º 24
0
    def test_ttl_multiple(self):
        "test the ttl_set_multiple api function"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        ttl_dict = {}
        ttl_dict["3"] = 1
        ttl_dict["20"] = 1  #FIXME ????
        my_api.ttl_set_multiple(ttl_dict)
        my_sequencer.compile_sequence()
        my_sequencer.debug_sequence()
        self.assertEquals(my_sequencer.current_output, [0, 0, 8, 16])
        insn = my_sequencer.current_sequence[1]
        self.assertEquals(insn.output_state, 16)
Ejemplo n.º 25
0
 def test_ttl_set_bit(self):
     "test the set bit api function"
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.ttl_set_bit("1", 1)
     my_api.ttl_set_bit("6", 1)
     my_api.ttl_set_bit("18", 1)
     my_sequencer.compile_sequence()
     my_sequencer.debug_sequence()
     self.assertEquals(my_sequencer.current_output, [0, 0, 66, 4])
     insn = my_sequencer.current_sequence[1]
     self.assertEquals(insn.output_state, 0x42)
     insn = my_sequencer.current_sequence[2]
     self.assertEquals(insn.change_state, 0x3)
     self.assertEquals(insn.output_state, 0x4)
Ejemplo n.º 26
0
 def test_pulse_shaping(self):
     """Test if the shaping works at all
     Right now this test checks only if the length of the sequence
     is larger than 99"""
     trans_obj = sequence_handler.transition("1", {0:0}, 2, amplitude=-3, \
                                             slope_duration=10.0, slope_type="sine")
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     ihandler = instruction_handler.DACShapeEvent(0,
                                                  trans_obj,
                                                  1,
                                                  step_nr=10)
     ihandler.handle_instruction(my_api)
     assert len(my_sequencer.current_sequence) > 99, "Sequence to small"
     my_sequencer.debug_sequence()
Ejemplo n.º 27
0
    def test_dac(self, frequency=10, amplitude=-15, clock=800):
        """Tests all the number of DDS boards that is given in the config file
        via putting out the frequency and amplitude given with the paramters"""
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        dds_device = []
        k = 0
        dds_device.append(ad9910.AD9910(k, clock))
        my_api.init_dds(dds_device[k])

        my_api.label("a")
        my_api.dac_value(amplitude, k)
        my_api.label("b")

        self.compile(my_sequencer, 1)
Ejemplo n.º 28
0
 def test_ttl_multiple_invert(self):
     "test the ttl_set_multiple api function with inverted channels"
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.ttl_sys.ttl_dict["3"].is_inverted = True
     my_api.ttl_sys.ttl_dict["5"].is_inverted = True
     ttl_dict = {}
     ttl_dict["5"] = 1
     ttl_dict["3"] = 0
     ttl_dict["20"] = 1
     my_api.ttl_set_multiple(ttl_dict)
     my_sequencer.compile_sequence()
     my_sequencer.debug_sequence()
     self.assertEquals(my_sequencer.current_output, [0, 0, 8, 16])
     insn = my_sequencer.current_sequence[0]
     self.assertEquals(insn.output_state, 0x10)
     insn = my_sequencer.current_sequence[1]
     self.assertEquals(insn.output_state, 0x8)
Ejemplo n.º 29
0
 def test_wait_trigger(self,
                       value=0xffff,
                       value2=0x0000,
                       show_debug=0,
                       wait_trig=True):
     "Test ttl pulses of box"
     my_sequencer = sequencer.sequencer()
     my_api = api.api(my_sequencer)
     my_api.label("start_loop")
     my_api.ttl_value(value, 2)
     my_api.ttl_value(value, 3)
     my_api.wait(1000)
     if wait_trig:
         my_api.wait_trigger(0x0)
         my_api.wait_trigger(0x1)
     my_api.ttl_value(value2, 2)
     my_api.ttl_value(value2, 3)
     my_api.wait(1000)
     my_api.jump("start_loop")
     self.compile(my_sequencer, show_debug)
Ejemplo n.º 30
0
    def test_all_dds_boards(self):
        "Just sets a single profile of the dds and activates it"
        my_sequencer = sequencer.sequencer()
        my_api = api.api(my_sequencer)

        dds_device = []
        for k in range(6):
            dds_device.append(ad9910.AD9910(k, 800))
            my_api.init_dds(dds_device[k])

        my_api.label("beginseq")
        # saves frequencies in dds registers/profiles
        for k in range(6):
            my_api.dac_value(-15, k)
            my_api.init_frequency(dds_device[k], 0.0, 0)
            my_api.init_frequency(dds_device[k], 5.0, 1)
            my_api.init_frequency(dds_device[k], 10.0, 2)
            my_api.update_dds(dds_device[k])

        my_api.wait(2)
        my_api.ttl_value(0x1)

        for k in range(6):
            my_api.set_dds_profile(dds_device[k], 1)
            my_api.update_dds(dds_device[k])

        my_api.wait(2)

        for k in range(6):
            my_api.set_dds_profile(dds_device[k], 2)
            my_api.update_dds(dds_device[k])

        my_api.wait(2)

        for k in range(6):
            my_api.set_dds_profile(dds_device[k], 0)

        my_api.ttl_value(0x0)
        my_api.jump("beginseq")

        self.compile(my_sequencer)
Ejemplo n.º 31
0
import time, logging, sys

from sequencer2 import sequencer, instructions
from sequencer2 import api
from sequencer2 import comm
from sequencer2 import ad9910
from sequencer2 import ptplog

# Set to true for testing without actual hardware
nonet = False

#Init sequencer, API and DDS
my_sequencer=sequencer.sequencer()
my_api=api.api(my_sequencer)
dds_device0 = ad9910.AD9910(0, 800) #args: device_addr, ref_freq, clk_divider=8

#=============================================================================
# Program Start (After boilerplate initialization (including DDS init)
#=============================================================================

#Digital Ramp and DDS Board Init here
my_api.init_dds(dds_device0)
my_api.wait(1.0)

my_api.dac_value(-20, 0) # -12 is the largest signal the DDS can output
my_api.set_dds_freq(dds_device0, 99, 0)

my_api.wait(1.0)
my_api.update_dds(dds_device0)
my_api.wait(1.0)