示例#1
0
def prepare(m):
    funcs.prepare(m)

    m.CORPSE_pi = pulselib.IQ_CORPSE_pi_pulse(
        'CORPSE pi-pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=m.params['MW_pulse_mod_risetime'],
        frequency=m.params['CORPSE_pi_mod_frq'],
        amplitude=m.params['CORPSE_pi_amp'],
        length_60=m.params['CORPSE_pi_60_duration'],
        length_m300=m.params['CORPSE_pi_m300_duration'],
        length_420=m.params['CORPSE_pi_420_duration'])

    m.CORPSE_pi2 = pulselib.IQ_CORPSE_pi2_pulse(
        'CORPSE pi2-pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=m.params['MW_pulse_mod_risetime'],
        frequency=m.params['CORPSE_pi2_mod_frq'],
        amplitude=m.params['CORPSE_pi2_amp'],
        length_24p3=m.params['CORPSE_pi2_24p3_duration'],
        length_m318p6=m.params['CORPSE_pi2_m318p6_duration'],
        length_384p3=m.params['CORPSE_pi2_384p3_duration'])
示例#2
0
    def generate_sequence(self, upload=True):
        # MBI element
        mbi_elt = self._MBI_element()

        # electron manipulation pulses
        T = pulse.SquarePulse(channel='MW_pulsemod', length=10e-9, amplitude=0)

        CORPSE_pi = pulselib.IQ_CORPSE_pi_pulse(
            'CORPSE pi-pulse',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            frequency=self.params['CORPSE_pi_mod_frq'],
            amplitude=self.params['CORPSE_pi_amp'],
            length_60=self.params['CORPSE_pi_60_duration'],
            length_m300=self.params['CORPSE_pi_m300_duration'],
            length_420=self.params['CORPSE_pi_420_duration'])

        sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar)
        adwin_sync = pulse.SquarePulse(channel='adwin_sync',
                                       length=10e-6,
                                       amplitude=2)
        sync_elt.append(adwin_sync)

        wait_1us = element.Element('1us_delay', pulsar=qt.pulsar)
        wait_1us.append(pulse.cp(T, length=1e-6))

        elts = []
        for i in range(self.params['pts']):
            e = element.Element('CORPSE-{}'.format(i), pulsar=qt.pulsar)
            e.append(
                T,
                pulse.cp(CORPSE_pi,
                         amplitude=self.params['CORPSE_pi_sweep_amps'][i]))
            elts.append(e)

        # sequence
        seq = pulsar.Sequence('CORPSE pi calibration')
        for i, e in enumerate(elts):
            seq.append(name='MBI-%d' % i,
                       wfname=mbi_elt.name,
                       trigger_wait=True,
                       goto_target='MBI-%d' % i,
                       jump_target=e.name + '-0')

            for j in range(self.params['multiplicity']):
                seq.append(name=e.name + '-{}'.format(j),
                           wfname=e.name,
                           trigger_wait=(j == 0))
                seq.append(name='wait-{}-{}'.format(i, j),
                           wfname=wait_1us.name,
                           repetitions=self.params['delay_reps'])
            seq.append(name='sync-{}'.format(i), wfname=sync_elt.name)

        # program AWG
        if upload:
            qt.pulsar.upload(mbi_elt, sync_elt, wait_1us, *elts)
        qt.pulsar.program_sequence(seq)
示例#3
0
    def generate_sequence(self, upload=True):
        mbi_elt = self._MBI_element()

        T_MW = pulse.SquarePulse(channel='MW_pulsemod',
            length = 50e-9, amplitude = 0)
        T_SP = pulse.SquarePulse(channel='Velocity1AOM',
            length = 200e-9, amplitude = 0)

        CNOT_pi2pi = pulselib.MW_IQmod_pulse('pi2pi pulse mI=-1',
            I_channel = 'MW_Imod',
            Q_channel = 'MW_Qmod',
            PM_channel = 'MW_pulsemod',
            PM_risetime = self.params['MW_pulse_mod_risetime'],
            frequency = self.params['pi2pi_mIm1_mod_frq'],
            amplitude = self.params['pi2pi_mIm1_amp'],
            length = self.params['pi2pi_mIm1_duration'])

        CORPSE_pi = pulselib.IQ_CORPSE_pi_pulse('CORPSE pi-pulse',
            I_channel = 'MW_Imod',
            Q_channel = 'MW_Qmod',
            PM_channel = 'MW_pulsemod',
            PM_risetime =  self.params['MW_pulse_mod_risetime'],
            frequency = self.params['CORPSE_pi_mod_frq'],
            amplitude = self.params['CORPSE_pi_amp'],
            length_60 = self.params['CORPSE_pi_60_duration'],
            length_m300 = self.params['CORPSE_pi_m300_duration'],
            length_420 = self.params['CORPSE_pi_420_duration'])

        SP_pulse = pulse.SquarePulse(channel = 'Velocity1AOM',
            amplitude = 1.0)

        sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar)
        adwin_sync = pulse.SquarePulse(channel='adwin_sync',
            length = self.params['AWG_to_adwin_ttl_trigger_duration'],
            amplitude = 2)
        sync_elt.append(adwin_sync)

        N_ro_elt = element.Element('N_RO', pulsar=qt.pulsar,
            global_time = True)

        # N_ro_elt.append(T_SP)
        # N_ro_elt.append(pulse.cp(SP_pulse,
        #                          length = self.params['RO_SP_duration']),
        #                 )

        N_ro_elt.append(T_MW)
        N_ro_elt.append(CORPSE_pi)
        N_ro_elt.append(T_MW)
        N_ro_elt.append(CNOT_pi2pi)
        N_ro_elt.append(pulse.cp(T_MW, length=1e-6))
        # N_ro_elt.append(adwin_sync)

        seq = pulsar.Sequence('N-RR')
        seq.append(name = 'MBI',
            wfname = mbi_elt.name,
            trigger_wait = True,
            goto_target = 'MBI',
            jump_target = 'RO-1')

        for i in range(self.params['nr_of_ROsequences']):
            seq.append(name = 'RO-{}'.format(i+1),
                wfname = N_ro_elt.name,
                trigger_wait = True)

            seq.append(name = 'sync-{}'.format(i+1),
                wfname = sync_elt.name)

        if upload:
            qt.pulsar.upload(mbi_elt, sync_elt, N_ro_elt)
        qt.pulsar.program_sequence(seq)
示例#4
0
def pulse_defs_lt1(msmt):

    # a waiting pulse on the MW pulsemod channel
    msmt.T = pulse.SquarePulse(channel='MW_pulsemod',
                               length=50e-9,
                               amplitude=0)

    msmt.TIQ = pulse.SquarePulse(channel='MW_Imod', length=10e-9, amplitude=0)

    # mw pulses
    msmt.e_pulse = pulselib.MW_IQmod_pulse(
        'MW pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'])

    msmt.fast_pi = pulselib.MW_IQmod_pulse(
        'MW pi pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt1['fast_pi_mod_frq'],
        amplitude=msmt.params_lt1['fast_pi_amp'],
        length=msmt.params_lt1['fast_pi_duration'])

    msmt.fast_pi2 = pulselib.MW_IQmod_pulse(
        'MW pi2 pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt1['fast_pi2_mod_frq'],
        amplitude=msmt.params_lt1['fast_pi2_amp'],
        length=msmt.params_lt1['fast_pi2_duration'])

    msmt.slow_pi = pulselib.MW_IQmod_pulse(
        'slow pi',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt1['selective_pi_mod_frq'],
        amplitude=msmt.params_lt1['selective_pi_amp'],
        length=msmt.params_lt1['selective_pi_duration'])

    msmt.shelving_pulse = pulselib.MW_IQmod_pulse(
        'MBI shelving pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        frequency=msmt.params_lt1['AWG_MBI_MW_pulse_mod_frq'],
        amplitude=msmt.params_lt1['fast_pi_amp'],
        length=msmt.params_lt1['fast_pi_duration'],
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'])
    # CORPSE pi pulse

    msmt.CORPSE_pi = pulselib.IQ_CORPSE_pi_pulse(
        'CORPSE pi-pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt1['CORPSE_pi_mod_frq'],
        amplitude=msmt.params_lt1['CORPSE_pi_amp'],
        length_60=msmt.params_lt1['CORPSE_pi_60_duration'],
        length_m300=msmt.params_lt1['CORPSE_pi_m300_duration'],
        length_420=msmt.params_lt1['CORPSE_pi_420_duration'])

    # CNOT operations on the electron
    msmt.pi2pi_m1 = pulselib.MW_IQmod_pulse(
        'pi2pi pulse mI=-1',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt1['pi2pi_mIm1_mod_frq'],
        amplitude=msmt.params_lt1['pi2pi_mIm1_amp'],
        length=msmt.params_lt1['pi2pi_mIm1_duration'])

    msmt.pi2pi_0 = pulselib.MW_IQmod_pulse(
        'pi2pi pulse mI=0',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt1['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt1['pi2pi_mI0_mod_frq'],
        amplitude=msmt.params_lt1['pi2pi_mI0_amp'],
        length=msmt.params_lt1['pi2pi_mI0_duration'])

    # rf pulses
    msmt.TN = pulse.SquarePulse(channel='RF', length=100e-9, amplitude=0)

    msmt.N_pulse = pulselib.RF_erf_envelope(
        channel='RF', frequency=msmt.params_lt1['N_0-1_splitting_ms-1'])

    msmt.N_pi = pulselib.RF_erf_envelope(
        channel='RF',
        frequency=msmt.params_lt1['N_0-1_splitting_ms-1'],
        length=msmt.params_lt1['N_pi_duration'],
        amplitude=msmt.params_lt1['N_pi_amp'])

    msmt.N_pi2 = pulselib.RF_erf_envelope(
        channel='RF',
        frequency=msmt.params_lt1['N_0-1_splitting_ms-1'],
        length=msmt.params_lt1['N_pi2_duration'],
        amplitude=msmt.params_lt1['N_pi2_amp'])

    ### synchronizing, etc
    msmt.adwin_lt1_trigger_pulse = pulse.SquarePulse(channel='adwin_sync',
                                                     length=10e-6,
                                                     amplitude=2)

    msmt.adwin_lt1_trigger_pulse_mbi = pulse.SquarePulse(channel='adwin_sync',
                                                         length=17e-6,
                                                         amplitude=2)
    # mbi pulse trigger should be longer, because it needs to receive a jump from the ADwin while still going.
    # it also needs to be short enough such that it is finished when the ADWin triggers the next element

    msmt.AWG_LT2_trigger_pulse = pulse.SquarePulse(channel='AWG_LT2_trigger',
                                                   length=10e-9,
                                                   amplitude=2)

    msmt.HH_sync = pulse.SquarePulse(channel='HH_sync',
                                     length=50e-9,
                                     amplitude=1.0)

    # light
    msmt.SP_pulse = pulse.SquarePulse(channel='Velocity1AOM', amplitude=1.0)
    msmt.yellow_pulse = pulse.SquarePulse(channel='YellowAOM', amplitude=1.0)
示例#5
0
    def _pulse_defs(self):
        ### electron manipulation pulses

        # a waiting pulse on the MW pulsemod channel
        self.T = pulse.SquarePulse(channel='MW_pulsemod',
                                   length=10e-9,
                                   amplitude=0)

        self.TIQ = pulse.SquarePulse(channel='MW_Imod',
                                     length=10e-9,
                                     amplitude=0)

        # some not yet specified pulse on the electron
        self.e_pulse = pulselib.MW_IQmod_pulse(
            'MW pulse',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'])

        # slow pi-pulse for MBI
        self.slow_pi = pulselib.MW_IQmod_pulse(
            'slow pi',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            frequency=self.params['selective_pi_mod_frq'],
            amplitude=self.params['selective_pi_amp'],
            length=self.params['selective_pi_duration'])

        # reasonably fast pi and pi/2 pulses
        self.pi_4MHz = pulselib.MW_IQmod_pulse(
            '4MHz pi',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            frequency=self.params['4MHz_pi_mod_frq'],
            amplitude=self.params['4MHz_pi_amp'],
            length=self.params['4MHz_pi_duration'])

        self.pi2_4MHz = pulselib.MW_IQmod_pulse(
            '4MHz pi2',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            frequency=self.params['4MHz_pi2_mod_frq'],
            amplitude=self.params['4MHz_pi2_amp'],
            length=self.params['4MHz_pi2_duration'])

        # shelving pi-pulse to bring electron to ms=-1 after mbi
        self.shelving_pulse = pulselib.MW_IQmod_pulse(
            'MBI shelving pulse',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            frequency=self.params['AWG_MBI_MW_pulse_mod_frq'],
            amplitude=self.params['AWG_shelving_pulse_amp'],
            length=self.params['AWG_shelving_pulse_duration'],
            PM_risetime=self.params['MW_pulse_mod_risetime'])

        # CORPSE pi pulse
        self.CORPSE_pi = pulselib.IQ_CORPSE_pi_pulse(
            'CORPSE pi-pulse',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            frequency=self.params['CORPSE_pi_mod_frq'],
            amplitude=self.params['CORPSE_pi_amp'],
            length_60=self.params['CORPSE_pi_60_duration'],
            length_m300=self.params['CORPSE_pi_m300_duration'],
            length_420=self.params['CORPSE_pi_420_duration'])

        # CNOT operation on the electron
        self.pi2pi_m1 = pulselib.MW_IQmod_pulse(
            'pi2pi pulse mI=-1',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            frequency=self.params['pi2pi_mIm1_mod_frq'],
            amplitude=self.params['pi2pi_mIm1_amp'],
            length=self.params['pi2pi_mIm1_duration'])

        ### nuclear spin manipulation pulses
        self.TN = pulse.SquarePulse(channel='RF', length=100e-9, amplitude=0)

        self.N_pulse = pulselib.RF_erf_envelope(
            channel='RF', frequency=self.params['N_0-1_splitting_ms-1'])

        self.N_pi = pulselib.RF_erf_envelope(
            channel='RF',
            frequency=self.params['N_0-1_splitting_ms-1'],
            length=self.params['N_pi_duration'],
            amplitude=self.params['N_pi_amp'])

        self.N_pi2 = pulselib.RF_erf_envelope(
            channel='RF',
            frequency=self.params['N_0-1_splitting_ms-1'],
            length=self.params['N_pi2_duration'],
            amplitude=self.params['N_pi2_amp'])

        ### synchronizing, etc
        self.adwin_sync = pulse.SquarePulse(channel='adwin_sync',
                                            length=10e-6,
                                            amplitude=2)

        ### useful elements
        self.mbi_elt = self._MBI_element()

        self.sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar)
        self.sync_elt.append(self.adwin_sync)