Exemplo n.º 1
0
def add_tabor_to_hardware_setup(hardware_setup: HardwareSetup,
                                tabor_address: str = None,
                                name: str = 'TABOR'):
    def _find_tabor_address():
        known_instruments = pyvisa.ResourceManager().list_resources()

        _tabor_address = None
        for address in known_instruments:
            if r'0x168C::0x2184' in address:
                _tabor_address = address
                break
        if _tabor_address is None:
            raise RuntimeError('Could not locate TaborAWG')

        return _tabor_address

    if tabor_address is None:
        tabor_address = _find_tabor_address()

    tawg = TaborAWGRepresentation(tabor_address, reset=True)

    channel_pairs = []
    for pair_name in ('AB', 'CD'):
        channel_pair = getattr(tawg, 'channel_pair_%s' % pair_name)
        channel_pairs.append(channel_pair)

        for ch_i, ch_name in enumerate(pair_name):
            playback_name = '{name}_{ch_name}'.format(name=name,
                                                      ch_name=ch_name)
            hardware_setup.set_channel(playback_name,
                                       PlaybackChannel(channel_pair, ch_i))
            hardware_setup.set_channel(playback_name + '_MARKER',
                                       MarkerChannel(channel_pair, ch_i))

    return tawg, channel_pairs
Exemplo n.º 2
0
    def connect(self):
        self.instrument = TaborAWGRepresentation('127.0.0.1',
                                                 reset=True,
                                                 paranoia_level=2)

        if self.instrument.main_instrument.visa_inst is None:
            raise RuntimeError('Could not connect to simulator')
        return self.instrument
Exemplo n.º 3
0
 def setUp(self):
     from qupulse.hardware.awgs.tabor import TaborAWGRepresentation
     self.instrument = TaborAWGRepresentation(
         'main_instrument',
         reset=True,
         paranoia_level=2,
         mirror_addresses=['mirror_instrument'])
     self.instrument.main_instrument.visa_inst.answers[':OUTP:COUP'] = 'DC'
     self.instrument.main_instrument.visa_inst.answers[':VOLT'] = '1.0'
     self.instrument.main_instrument.visa_inst.answers[':FREQ:RAST'] = '1e9'
     self.instrument.main_instrument.visa_inst.answers[':VOLT:HV'] = '0.7'
Exemplo n.º 4
0
    def setUp(self):
        self.visa_instr_main = mock.sentinel
        self.visa_instr_mirror = mock.sentinel
        self.tewx_awg_main = mock.create_autospec(tabor_control.device.TEWXAwg)
        self.tewx_awg_mirror = mock.create_autospec(
            tabor_control.device.TEWXAwg)
        self.tewx_awg_class = mock.create_autospec(
            tabor_control.device.TEWXAwg,
            side_effects=[self.tewx_awg_main, self.tewx_awg_mirror])

        visa_instrs = [self.visa_instr_main, self.visa_instr_mirror]
        tewx_awgs = [self.tewx_awg_main, self.tewx_awg_mirror]

        device_properties = tabor_control.util.get_device_properties(
            'TE,WX2184C,4,3.01', '1232')

        self.tewx_awg_main.dev_properties = device_properties
        self.tewx_awg_mirror.dev_properties = device_properties

        with mock.patch('tabor_control.open_session',
                        side_effect=visa_instrs) as open_session:
            with mock.patch('tabor_control.device.TEWXAwg',
                            side_effect=tewx_awgs) as te_class:
                self.instrument = TaborAWGRepresentation(
                    'main_instrument',
                    reset=True,
                    paranoia_level=2,
                    mirror_addresses=['mirror_instrument'])

                self.assertEqual(open_session.call_args_list, [
                    mock.call('main_instrument'),
                    mock.call('mirror_instrument')
                ])
                self.assertEqual(te_class.call_args_list, [
                    mock.call(self.visa_instr_main,
                              tabor_control.ParanoiaLevel.SYST_ERR),
                    mock.call(self.visa_instr_mirror,
                              tabor_control.ParanoiaLevel.SYST_ERR)
                ])
Exemplo n.º 5
0
    channel_pairs = []
    for pair_name in ('AB', 'CD', 'EF', 'GH'):
        channel_pair = getattr(awg, 'channel_pair_%s' % pair_name)

        for ch_i, ch_name in enumerate(pair_name):
            playback_name = '{name}_{ch_name}'.format(name=awg_name, ch_name=ch_name)
            hardware_setup.set_channel(playback_name,
                                       PlaybackChannel(channel_pair, ch_i))
            hardware_setup.set_channel(playback_name + '_MARKER_FRONT', MarkerChannel(channel_pair, 2 * ch_i))
            hardware_setup.set_channel(playback_name + '_MARKER_BACK', MarkerChannel(channel_pair, 2 * ch_i + 1))
    awg_channel = awg.channel_pair_AB

elif awg_name == 'TABOR':
    from qupulse.hardware.awgs.tabor import TaborAWGRepresentation
    awg = TaborAWGRepresentation(awg_address, reset=True)

    channel_pairs = []
    for pair_name in ('AB', 'CD'):
        channel_pair = getattr(awg, 'channel_pair_%s' % pair_name)
        channel_pairs.append(channel_pair)

        for ch_i, ch_name in enumerate(pair_name):
            playback_name = '{name}_{ch_name}'.format(name=awg_name, ch_name=ch_name)
            hardware_setup.set_channel(playback_name, PlaybackChannel(channel_pair, ch_i))
            hardware_setup.set_channel(playback_name + '_MARKER', MarkerChannel(channel_pair, ch_i))
    awg_channel = channel_pairs[0]

else:
    ValueError('Unknown AWG')
Exemplo n.º 6
0
def exec_test():
    import time
    import numpy as np

    t = []
    names = []

    def tic(name):
        t.append(time.time())
        names.append(name)

    from qupulse.hardware.awgs.tabor import TaborChannelPair, TaborAWGRepresentation
    tawg = TaborAWGRepresentation(r'USB0::0x168C::0x2184::0000216488::INSTR', reset=True)

    tchannelpair = TaborChannelPair(tawg, (1, 2), 'TABOR_AB')
    tawg.paranoia_level = 2

    # warnings.simplefilter('error', Warning)

    from qupulse.hardware.setup import HardwareSetup, PlaybackChannel, MarkerChannel
    hardware_setup = HardwareSetup()

    hardware_setup.set_channel('TABOR_A', PlaybackChannel(tchannelpair, 0))
    hardware_setup.set_channel('TABOR_B', PlaybackChannel(tchannelpair, 1))
    hardware_setup.set_channel('TABOR_A_MARKER', MarkerChannel(tchannelpair, 0))
    hardware_setup.set_channel('TABOR_B_MARKER', MarkerChannel(tchannelpair, 1))

    if with_alazar:
        from qupulse.hardware.dacs.alazar import AlazarCard
        import atsaverage.server

        if not atsaverage.server.Server.default_instance.running:
            atsaverage.server.Server.default_instance.start(key=b'guest')

        import atsaverage.core

        alazar = AlazarCard(atsaverage.core.getLocalCard(1, 1))
        alazar.register_mask_for_channel('A', 0)
        alazar.config = get_alazar_config()

        alazar.register_operations('test', get_operations())

        window = get_window(atsaverage.core.getLocalCard(1, 1))

        hardware_setup.register_dac(alazar)

    repeated = get_pulse()

    from qupulse.pulses.sequencing import Sequencer

    tic('init')
    sequencer = Sequencer()
    sequencer.push(repeated,
                   parameters=dict(n=10000, tau=1920, U=0.5),
                   channel_mapping={'out': 'TABOR_A', 'trigger': 'TABOR_A_MARKER'},
                   window_mapping=dict(A='A'))
    instruction_block = sequencer.build()

    tic('sequence')

    hardware_setup.register_program('test', instruction_block)

    tic('register')

    if with_alazar:
        from atsaverage.masks import PeriodicMask
        m = PeriodicMask()
        m.identifier = 'D'
        m.begin = 0
        m.end = 1
        m.period = 1
        m.channel = 0
        alazar._registered_programs['test'].masks.append(m)

    tic('per_mask')

    hardware_setup.arm_program('test')

    tic('arm')

    for d, name in zip(np.diff(np.asarray(t)), names[1:]):
        print(name, d)

    d = 1
Exemplo n.º 7
0
    def test_all(self):
        from qupulse.hardware.awgs.tabor import TaborChannelPair, TaborAWGRepresentation
        #import warnings
        tawg = TaborAWGRepresentation(r'USB0::0x168C::0x2184::0000216488::INSTR')
        tchannelpair = TaborChannelPair(tawg, (1, 2), 'TABOR_AB')
        tawg.paranoia_level = 2

        #warnings.simplefilter('error', Warning)

        from qupulse.hardware.setup import HardwareSetup, PlaybackChannel, MarkerChannel
        hardware_setup = HardwareSetup()

        hardware_setup.set_channel('TABOR_A', PlaybackChannel(tchannelpair, 0))
        hardware_setup.set_channel('TABOR_B', PlaybackChannel(tchannelpair, 1))
        hardware_setup.set_channel('TABOR_A_MARKER', MarkerChannel(tchannelpair, 0))
        hardware_setup.set_channel('TABOR_B_MARKER', MarkerChannel(tchannelpair, 1))

        if with_alazar:
            from qupulse.hardware.dacs.alazar import AlazarCard
            import atsaverage.server

            if not atsaverage.server.Server.default_instance.running:
                atsaverage.server.Server.default_instance.start(key=b'guest')

            import atsaverage.core

            alazar = AlazarCard(atsaverage.core.getLocalCard(1, 1))
            alazar.register_mask_for_channel('A', 0)
            alazar.register_mask_for_channel('B', 0)
            alazar.register_mask_for_channel('C', 0)
            alazar.config = get_alazar_config()

            alazar.register_operations('test', get_operations())
            window = get_window(atsaverage.core.getLocalCard(1, 1))
            hardware_setup.register_dac(alazar)

        repeated = get_pulse()

        from qupulse.pulses.sequencing import Sequencer

        sequencer = Sequencer()
        sequencer.push(repeated,
                       parameters=dict(n=1000, min=-0.5, max=0.5, tau=192*3),
                       channel_mapping={'out': 'TABOR_A', 'trigger': 'TABOR_A_MARKER'},
                       window_mapping=dict(A='A', B='B', C='C'))
        instruction_block = sequencer.build()

        hardware_setup.register_program('test', instruction_block)

        if with_alazar:
            from atsaverage.masks import PeriodicMask
            m = PeriodicMask()
            m.identifier = 'D'
            m.begin = 0
            m.end = 1
            m.period = 1
            m.channel = 0
            alazar._registered_programs['test'].masks.append(m)

        hardware_setup.arm_program('test')

        d = 1