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

        X1 = pulselib.MW_CORPSE_pulse('CORPSE pi-pulse',
        MW_channel = 'MW_1', 
        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)

        X2 = pulselib.MW_CORPSE_pulse('CORPSE 2pi-pulse',
        MW_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)

        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)
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.MW_CORPSE_pulse(
            'CORPSE pi-pulse',
            MW_channel=self.params['cur_MW_channel'],
            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_rabi_frequency'],
            pulse_delay=self.params['CORPSE_pulse_delay'],
            eff_rotation_angle=self.params['CORPSE_eff_rotation_angle'])

        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)
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)

    # 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['MW_pulse_mod_risetime'])

    msmt.CORPSE_pi = pulselib.MW_CORPSE_pulse(
        'CORPSE pi-pulse',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        second_MW_channel='MW_Qmod',
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        amplitude=msmt.params['CORPSE_pi_amp'],
        rabi_frequency=msmt.params['CORPSE_rabi_frequency'],
        eff_rotation_angle=180)
    msmt.CORPSE_pi2 = pulselib.MW_CORPSE_pulse(
        'CORPSE pi2-pulse',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        second_MW_channel='MW_Qmod',
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        amplitude=msmt.params['CORPSE_pi2_amp'],
        rabi_frequency=msmt.params['CORPSE_rabi_frequency'],
        eff_rotation_angle=90)
    msmt.CORPSE_RND0 = pulselib.MW_CORPSE_pulse(
        'CORPSE pi2-pulse',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        amplitude=msmt.params['CORPSE_RND_amp'],
        rabi_frequency=msmt.params['CORPSE_rabi_frequency'],
        eff_rotation_angle=msmt.params['RND_angle_0'])
    msmt.CORPSE_RND1 = pulselib.MW_CORPSE_pulse(
        'CORPSE pi2-pulse',
        MW_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        amplitude=msmt.params['CORPSE_RND_amp'],
        rabi_frequency=msmt.params['CORPSE_rabi_frequency'],
        eff_rotation_angle=msmt.params['RND_angle_1'])

    msmt.eom_pulse = eom_pulses.EOMAOMPulse(
        'Eom Aom Pulse',
        eom_channel='EOM_Matisse',
        aom_channel='EOM_AOM_Matisse',
        eom_pulse_duration=msmt.params['eom_pulse_duration'],
        eom_off_duration=msmt.params['eom_off_duration'],
        eom_off_amplitude=msmt.params['eom_off_amplitude'],
        eom_pulse_amplitude=msmt.params['eom_pulse_amplitude'],
        eom_overshoot_duration1=msmt.params['eom_overshoot_duration1'],
        eom_overshoot1=msmt.params['eom_overshoot1'],
        eom_overshoot_duration2=msmt.params['eom_overshoot_duration2'],
        eom_overshoot2=msmt.params['eom_overshoot2'],
        aom_risetime=msmt.params['aom_risetime'],
        aom_amplitude=msmt.params['aom_amplitude'])

    msmt.RND_halt_off_pulse = pulse.SquarePulse(
        channel='RND_halt', amplitude=-2.0, length=msmt.params['RND_duration'])

    ### synchronizing, etc
    msmt.adwin_trigger_pulse = pulse.SquarePulse(channel='adwin_sync',
                                                 length=5e-6,
                                                 amplitude=2)
    msmt.adwin_success_pulse = pulse.SquarePulse(
        channel='adwin_success_trigger', length=5e-6, amplitude=2)
    msmt.sync = pulse.SquarePulse(channel='sync', length=50e-9, amplitude=1.0)

    msmt.SP_pulse = pulse.SquarePulse(channel='AOM_Newfocus', amplitude=1.0)
    msmt.RO_pulse = pulse.SquarePulse(channel='AOM_Matisse', amplitude=0.0)
    msmt.yellow_pulse = pulse.SquarePulse(channel='AOM_Yellow', amplitude=1.0)

    return True