Skip to content

Commit

Permalink
Add SSB examples
Browse files Browse the repository at this point in the history
  • Loading branch information
Diego Ristè committed Sep 24, 2019
1 parent 7643f24 commit 2df2b09
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions doc/QGL-demo.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,17 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### This needs to be edited:\n",
"When specifying measurement pulses, the pulse is typically oscillating because it is an \"autodyne\" pulse (single source heterodyne) with an IF frequency of 10 MHz produced by single-sideband modulation. Normally single sideband modulation can be handled in a later step when a pulse sequence is compiled to hardware, but if the start of the pulse occurs at various times with respect to the start of the sequence, multiple modulated pulses will need to be generated with different phases. Since measurements tend to be somewhat long, this quickly consumes the available memory on the APS. Baking the SSB in before is a kludge used to conserve memory on the APS."
"# Single-sideband modulation\n",
"\n",
"In order to prevent leakage at the source frequency, typically single-sideband (SSB) modulation with IQ mixers is used to generate both control and measurement pulses. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For control pulses, we define the SSB frequency as\n",
"`q1.frequency`. In the following example, you can set that parameter to a non-zero SSB to modulate the pulse envelope. "
]
},
{
Expand All @@ -298,10 +307,8 @@
"metadata": {},
"outputs": [],
"source": [
"# set the modulation frequency\n",
"cl[\"q1\"].measure_chan.frequency = 10e6\n",
"\n",
"seq = [[X(q1), MEAS(q1)]]\n",
"q1.frequency = 50e6\n",
"seq= [[X(q1), Y(q1)]]\n",
"mf = compile_to_hardware(seq, 'Test')\n",
"plot_pulse_files(mf)"
]
Expand All @@ -310,7 +317,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Reset the modulation frequency to zero. "
"For measurement pulses, we define the SSB frequency as \n",
"\n",
"`q1.measure_chan.autodyne_frequency`\n",
"\n",
"Note that `autodyne_frequency` is different from `frequency`. In the first case, the SSB frequency is baked directly in the pulse waveform, and is independent of the time when the pulse is applied. In the second case (normally used for the control SSB, see above), the actual pulse shape depends on the time when the pulse occurs. This is in order to maintain the phase reference allowing for arbitrary rotations around any transversal axis."
]
},
{
Expand All @@ -320,7 +331,11 @@
"outputs": [],
"source": [
"# set the modulation frequency\n",
"cl[\"q1\"].measure_chan.frequency = 0e0"
"cl[\"q1\"].measure_chan.autodyne_frequency = 10e6\n",
"\n",
"seq = [[X(q1), MEAS(q1)]]\n",
"mf = compile_to_hardware(seq, 'Test')\n",
"plot_pulse_files(mf)"
]
},
{
Expand Down

0 comments on commit 2df2b09

Please sign in to comment.