-
Notifications
You must be signed in to change notification settings - Fork 30
Closed
Description
This issue is a collection of pulse corruption I noticed. According to @Nomos11 these might not actually be cause by qupulse.
Example 1
from qupulse.pulses import *
default_params = {}
for ii in range(4):
default_params[f't_read_{ii}'] = qupulse_inst.awg1.make_properly_quantized_time(int(4.5e06))
default_params = {**default_params,
'V_read_0': 0,
'V_read_1': 0,
'V_read_2': 0,
'V_read_3': 0,
'f': 100e-9,
}
shuttle_period = qupulse_inst.awg1.make_properly_quantized_time((1/(default_params["f"]*1e09)) * 1e09)
actual_frequency = 1 / shuttle_period
read_pls = PointPT([
('t_read_0', 'V_read_0'),
('t_read_1', 'V_read_1'),
('t_read_2', 'V_read_2'),
('t_read_3', 'V_read_3'),
], ["playback_channel_D"])
shuttle_out = FunctionPT(f'.75 * cos(2*pi*{actual_frequency}*t + pi/2)', duration_expression=shuttle_period, channel='playback_channel_D')
shuttle_and_read = shuttle_out @ read_pls
pulse_template = read_pls @ qupulse.pulses.RepetitionPT(shuttle_and_read, 15) @ read_pls
physical_pulse_template = pulse_template
_ = qupulse.pulses.plotting.plot(physical_pulse_template, default_params, sample_rate=500*(1/shuttle_period))
_.set_figwidth(50)// program definitions
void renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_function() {
var pos = 0;
waitForSoftwareTrigger();
playWaveIndexed(renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_0,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_1,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_2,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_3, pos, 5744); pos = pos + 5744;
}Sample rate: 24.41kHz (100M base)




The constant tail appears at random voltages from run to run.
Removing read_pls from both the start and end of pulse_template fixes it:
from qupulse.pulses import *
default_params = {}
for ii in range(4):
default_params[f't_read_{ii}'] = qupulse_inst.awg1.make_properly_quantized_time(int(4.5e06))
default_params = {**default_params,
'V_read_0': 0,
'V_read_1': 0,
'V_read_2': 0,
'V_read_3': 0,
'f': 100e-9,
}
shuttle_period = qupulse_inst.awg1.make_properly_quantized_time((1/(default_params["f"]*1e09)) * 1e09)
actual_frequency = 1 / shuttle_period
read_pls = PointPT([
('t_read_0', 'V_read_0'),
('t_read_1', 'V_read_1'),
('t_read_2', 'V_read_2'),
('t_read_3', 'V_read_3'),
], ["playback_channel_D"])
shuttle_out = FunctionPT(f'.75 * cos(2*pi*{actual_frequency}*t + pi/2)', duration_expression=shuttle_period, channel='playback_channel_D')
shuttle_and_read = shuttle_out @ read_pls
pulse_template = qupulse.pulses.RepetitionPT(shuttle_and_read, 15)
physical_pulse_template = pulse_template
_ = qupulse.pulses.plotting.plot(physical_pulse_template, default_params, sample_rate=500*(1/shuttle_period))
_.set_figwidth(50)

This might be because it creates a repeat in seqc:
// program definitions
void renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_function() {
var pos = 0;
waitForSoftwareTrigger();
repeat(15) {
playWaveIndexed(renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_0,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_1,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_2,renamed__e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855_concatenated_waveform_3, pos, 368); // advance disabled do to parent repetition
}
pos = pos + 368;
}Metadata
Metadata
Assignees
Labels
No labels