Exemplo n.º 1
0
    def generate_sequence(self, upload=True):
        # electron manipulation pulses
        T = pulse.SquarePulse(channel='MW_pulsemod',
                              length=100e-9,
                              amplitude=0)
        TIQ = pulse.SquarePulse(channel='MW_Imod', length=10e-9, amplitude=0)

        CORPSE_pi = pulselib.IQ_CORPSE_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_mod_frq'],
            rabi_frequency=self.params['CORPSE_rabi_frequency'],
            amplitude=self.params['CORPSE_amp'],
            eff_rotation_angle=180)

        CORPSE_pi2 = pulselib.IQ_CORPSE_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_mod_frq'],
            rabi_frequency=self.params['CORPSE_rabi_frequency'],
            amplitude=self.params['CORPSE_amp'],
            eff_rotation_angle=90)

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

        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)

        elts = []
        seq = pulsar.Sequence('CORPSE test')

        for i in range(self.params['pts']):
            e = element.Element('CORPSE_Pi2_Pi-{}'.format(i),
                                pulsar=qt.pulsar,
                                global_time=True)
            e.append(T)
            e.append(pulse.cp(CORPSE_pi2))
            e.append(pulse.cp(TIQ, length=self.params['delays'][i]))
            e.append(pulse.cp(CORPSE_pi))
            e.append(T)
            elts.append(e)
            seq.append(name='CORPSE_Pi2_Pi-{}'.format(i),
                       wfname=e.name,
                       trigger_wait=True)
            seq.append(name='sync-{}'.format(i), wfname=sync_elt.name)

        if upload:
            qt.pulsar.upload(sync_elt, wait_1us, *elts)
        qt.pulsar.program_sequence(seq)
Exemplo n.º 2
0
    def generate_sequence(self, upload=True):
        # electron manipulation pulses
        T = pulse.SquarePulse(channel='MW_pulsemod', length=10e-9, amplitude=0)

        CORPSE = pulselib.IQ_CORPSE_pulse(
            'CORPSE pi-pulse',
            I_channel=self.params['cur_MW_channel'],
            Q_channel='dummy',
            PM_channel='MW_pulsemod',
            #second_MW_channel = 'MW_Qmod',
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            amplitude=self.params['CORPSE_pi_amp'],
            frequency=self.params['frq_mod'],
            rabi_frequency=self.params['CORPSE_rabi_frequency'],
            pulse_delay=self.params['CORPSE_pulse_delay'],
            eff_rotation_angle=self.params['CORPSE_eff_rotation_angle'])
        CORPSE.channels.remove('dummy')

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

        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)

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

        # sequence
        seq = pulsar.Sequence('CORPSE pi calibration')
        for i, e in enumerate(elts):
            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(sync_elt, wait_1us, *elts)
            qt.pulsar.program_awg(seq, sync_elt, wait_1us, *elts)
Exemplo n.º 3
0
    def generate_sequence(self, upload=True):
        # electron manipulation pulses
        T = pulse.SquarePulse(channel='MW_pulsemod',
                              length=100e-9,
                              amplitude=0)

        CORPSE = pulselib.IQ_CORPSE_pulse(
            'CORPSE 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_mod_frq'],
            rabi_frequency=self.params['CORPSE_rabi_frequency'])

        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,
                                global_time=True)
            e.append(T)
            e.append(
                pulse.cp(CORPSE,
                         amplitude=self.params['CORPSE_sweep_amps'][i],
                         eff_rotation_angle=self.
                         params['CORPSE_effective_rotation_angles'][i]))

            elts.append(e)

        # sequence
        seq = pulsar.Sequence('CORPSE (any angle) calibration')
        for i, e in enumerate(elts):
            seq.append(name=e.name + '-{}'.format(i),
                       wfname=e.name,
                       trigger_wait=True)
            seq.append(name='sync-{}'.format(i), wfname=sync_elt.name)

        # program AWG
        if upload:
            #qt.pulsar.upload(sync_elt, *elts)
            qt.pulsar.program_awg(seq, sync_elt, wait_1us, *elts)
Exemplo n.º 4
0
def pulse_defs_lt2(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)

    # some not yet specified pulse on the electron
    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_lt2['MW_pulse_mod_risetime'])

    msmt.CORPSE_pi = pulselib.IQ_CORPSE_pulse(
        'CORPSE pi-pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt2['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt2['CORPSE_pi_mod_frq'],
        amplitude=msmt.params_lt2['CORPSE_amp'],
        rabi_frequency=msmt.params_lt2['CORPSE_rabi_frequency'],
        eff_rotation_angle=180)

    msmt.CORPSE_pi2 = pulselib.IQ_CORPSE_pulse(
        'CORPSE pi2-pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params_lt2['MW_pulse_mod_risetime'],
        frequency=msmt.params_lt2['CORPSE_pi2_mod_frq'],
        amplitude=msmt.params_lt2['CORPSE_pi2_amp'],
        rabi_frequency=msmt.params_lt2['CORPSE_rabi_frequency'],
        eff_rotation_angle=90)

    ### synchronizing, etc
    msmt.adwin_lt2_trigger_pulse = pulse.SquarePulse(
        channel='adwin_sync', length=5e-6,
        amplitude=2)  #only used for calibrations!!

    ### LDE attempt
    msmt.eom_aom_pulse = pulselib.EOMAOMPulse(
        'Eom Aom Pulse',
        eom_channel='EOM_Matisse',
        aom_channel='EOM_AOM_Matisse',
        eom_pulse_duration=msmt.params_lt2['eom_pulse_duration'],
        eom_off_duration=msmt.params_lt2['eom_off_duration'],
        eom_off_amplitude=msmt.params_lt2['eom_off_amplitude'],
        eom_pulse_amplitude=msmt.params_lt2['eom_pulse_amplitude'],
        eom_overshoot_duration1=msmt.params_lt2['eom_overshoot_duration1'],
        eom_overshoot1=msmt.params_lt2['eom_overshoot1'],
        eom_overshoot_duration2=msmt.params_lt2['eom_overshoot_duration2'],
        eom_overshoot2=msmt.params_lt2['eom_overshoot2'],
        aom_risetime=msmt.params_lt2['aom_risetime'])

    msmt.short_eom_aom_pulse = pulselib.short_EOMAOMPulse(
        'Eom Aom Pulse',
        eom_channel='EOM_Matisse',
        aom_channel='EOM_AOM_Matisse',
        eom_off_duration=msmt.params_lt2['eom_off_duration'],
        eom_off_amplitude=msmt.params_lt2['eom_off_amplitude'],
        eom_off_2_amplitude=2.65,  #msmt.params_lt2['eom_off_2_amplitude'],
        eom_overshoot_duration1=msmt.params_lt2['eom_overshoot_duration1'],
        eom_overshoot1=0.0,  #msmt.params_lt2['eom_overshoot1'],
        eom_overshoot_duration2=msmt.params_lt2['eom_overshoot_duration2'],
        eom_overshoot2=0.0,  #msmt.params_lt2['eom_overshoot2'],
        aom_risetime=msmt.params_lt2['aom_risetime'])

    msmt.HH_sync = pulse.SquarePulse(channel='HH_sync',
                                     length=50e-9,
                                     amplitude=1.0)
    msmt.eom_trigger = pulse.SquarePulse(channel='EOM_trigger',
                                         length=100e-9,
                                         amplitude=1.0)
    msmt.SP_pulse = pulse.SquarePulse(channel='AOM_Newfocus', amplitude=1.0)
    # msmt.yellow_pulse = pulse.SquarePulse(channel = 'AOM_Yellow', amplitude = 1.0)
    msmt.plu_gate = pulse.SquarePulse(
        channel='plu_sync',
        amplitude=1.0,
        length=msmt.params_lt2['PLU_gate_duration'])

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

    ### LDE attempt

    return True
Exemplo n.º 5
0
    def generate_sequence(self, upload=True):
        #print 'test'
        # define the necessary pulses

        X1 = pulselib.IQ_CORPSE_pulse('CORPSE pi-pulse',
        I_channel = 'MW_1', 
        Q_channel='dummy',
        PM_channel = 'MW_pulsemod',
        #second_MW_channel = 'MW_Qmod',
        PM_risetime = self.params['MW_pulse_mod_risetime'],
        amplitude = self.params['CORPSE_pi_amp'],

        rabi_frequency = self.params['CORPSE_pi_frq'],
        eff_rotation_angle = 180)
        X1.channels.remove('dummy')
        X2 = pulselib.IQ_CORPSE_pulse('CORPSE 2pi-pulse',
        I_channel = 'MW_2', 
        PM_channel = 'MW_pulsemod',
        #second_MW_channel = 'MW_Qmod',
        PM_risetime = self.params['MW_pulse_mod_risetime'],
        amplitude = self.params['CORPSE_2pi_amp'],
        rabi_frequency = self.params['CORPSE_2pi_frq'],
        eff_rotation_angle = 360)
        X2.channels.remove('dummy')

        RND_halt = pulse.SquarePulse(channel = 'RND_halt', amplitude = 1.0, 
                                    length = 400e-9)
        sync = pulse.SquarePulse(channel = 'sync', length = 50e-9, amplitude = 1.0)
        T = pulse.SquarePulse(channel='MW_1', name='delay',
            length = 200e-9, amplitude = 0.)
        RO_pulse = pulse.SquarePulse(channel = 'AOM_Matisse', 
                                     amplitude = self.params['E_RO_voltage_AWG'], 
                                     length = self.params['SSRO_duration']*1e-6)

        # make the elements - one for each ssb frequency
        elements = []
        for i in range(self.params['pts']):

            e = element.Element('ElectronRandom_pt-%d' % i, pulsar=qt.pulsar)

            e.append(T)
            e.append(sync)
            e.append(T)
            e.append(RND_halt)
            ref=e.append(T)
            e.add(X1, refpulse=ref)
            e.add(X2, refpulse=ref)
            e.append(pulse.cp(T, length = 1e-6))
            e.append(RO_pulse)
            e.append(T)

            elements.append(e)


        # create a sequence from the pulses
        seq = pulsar.Sequence('ElectronRandom sequence')
        for e in elements:
            seq.append(name=e.name, wfname=e.name, trigger_wait=True)

        # upload the waveforms to the AWG
        if upload:
            qt.pulsar.program_awg(seq,*elements)