Skip to content

Commit

Permalink
Added documentation on the GENswitch, QBox, Windfreak MWS and IQ modu…
Browse files Browse the repository at this point in the history
…lation in general.
  • Loading branch information
PP501 committed May 23, 2024
1 parent 206938a commit f2cf464
Show file tree
Hide file tree
Showing 14 changed files with 2,218 additions and 1 deletion.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ This is a toolbox to control instruments to run a general lab experiments. This
There are two classes of documentation provided for this stack:

- [User documentation](docs/User/Readme.md)
- [Driver-specific documentation](docs/User/InstrumentSpecific/Readme.md)
- [Custom device documentation](docs/User/CustomDevices/Readme.md)
- [Measurement methods](docs/User/MeasurementMethods/Readme.md)
- [Developer documentation](docs/Developer/Readme.md)


Expand Down
1,155 changes: 1,155 additions & 0 deletions docs/User/CustomDevices/BoxIQmod.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions docs/User/CustomDevices/BoxIQmod.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Qubit Control and Readout Box (IQ modulation)

This is a compact **1U rack-mount module** that enables qubit readout and control (with in-situ mixer calibration). The layout is as follows:

![My Diagram3](BoxIQmod.drawio.svg)

The front panel consists of all SMA ports except the two DC ports which are BNC. The general usage notes will be highlighted in the sections below.

## Readout

The box uses a heterodyne scheme for the readout. The idea is that:

- The readout resonator is excited (directly into the fridge input outside the box) at the resonant frequency $f_0$.
- The output from the fridge looks like $A\cos(2\pi f_0 t + \varphi)$ where the goal is to find $I=A\cos(\varphi)$ and $Q=A\sin(\varphi)$.
- The LO downconversion source is set to $f_0+f_{off}$ (can be any frequency offset, but it is convenient to typically use $f_{off}=25~\textnormal{MHz}$). Useful to utilise [`VariableSpaced`](../Var_Defns.md).
- The *Marki MLIQ0218L* is a wide-band mixer that can operate over 2-18GHz and thus, covers the usual 6.9-12GHz resonator range. It embeds the amplitude and phase of the readout output from the fridge onto the signal: $A\cos(2\pi f_{off}t+\varphi)$.
- The signal is subsequently filtered for aliases and amplified before sending into the ADC digitiser where the signal is digitally demodulated and filtered to extract the I and Q components (either in the [CPU](../Proc_CPU_list.md#cpu-ddc)/[GPU](../Proc_GPU_list.md#gpu-ddc) or onboard any [FPGA](../Proc_FPGA_list.md#fpga-ddc) processors).

The advantages of this method are:

- No filters or IQ-modulators are required (as with a homodyne upconversion setup where the second sideband requires elimination).
- Only one digitiser input is required (as opposed to two if downconverting exactly to DC when using $f_0$ for the LO).

## Qubit control and mixer calibration

The qubit is controlled via [IQ modulation](../MeasurementMethods/IQmod.md) via the two AWG ports and the MW LO port. The mixer DC offsets are controlled via the two DC BNC ports (feeding into Bias-Ts). The *Marki MLIQ0218L* was once again chosen for its wide-band operation (albeit, the splitter it to 4-12GHz qubit frequency operation).

To perform mixer calibration, the *RADIALL R570432100* switch is set to port 1 to sniff the signal sent directly to the fridge. This signal is sent to the downconversion readout setup. That is:

- The downconversion LO is set to $f_{in}+f_{off}$ and the digital demodulation is done on $f_{off}$.
- This effectively makes the readout setup a spectrum analyser where the manitude of any peak at $f_{in}$ can be sampled.
- By sweeping the value of $f_{in}+f_{off}$ on the downconversion LO source, one may sample the magnitudes of the sideband and LO peaks.

The panel LED lights up to indicate that the switch is on mixer calibration mode. To use the switch, simply instantiate the [HAL](../GENswitch.md) over the driver YAML:

```yaml
sw_qbox:
type: sqdtoolz.Drivers.SW_RpiIQBox.SW_RpiIQBox
address: 'TCPIP::192.168.1.19::4000::SOCKET'
parameters:
pulse_delay_time:
initial_value: 1
```
Just change the IP address of the Raspberry Pi (with the [drivers](https://github.com/sqdlab/SQDdevRPi) installed) as appropriate. The switch states are given as `'Pmix'` and `'Pmeas'` for mixer calibration and normal readout measurements respectively.
6 changes: 6 additions & 0 deletions docs/User/CustomDevices/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Custom devices

Here is a list of custom devices that aid in measurements as supported by *SQDToolz*:

- [Qubit Control and Readout Box (IQ modulation)](BoxIQmod.md)

1 change: 1 addition & 0 deletions docs/User/GENmwSource.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import sqdtoolz as stz

lab.load_instrument('src_sgs')
stz.GENmwSource("MWcavity", lab, 'src_sgs', 'RFOUT')

lab.HAL('MWcavity').Mode = 'Continuous'
lab.HAL('MWcavity').Power = 14.5
lab.HAL('MWcavity').Frequency = 8.1e9
Expand Down
20 changes: 20 additions & 0 deletions docs/User/GENswitch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# HAL `GENswitch` for Switches

The `GENswitch` HAL manages switches typically used as follows:

```python
import sqdtoolz as stz
#Initialise Laboratory object as lab
...

lab.load_instrument('sw_rpi')
stz.GENswitch('sw_rpi', lab, 'sw_rpi')

lab.HAL('sw_rpi').Position = "P1"
```

The `GENswitch` HAL simply sets the position of a given switch (whether it is over Ethernet or a serial COM port). The switch positions are typically given as `'P1'`, `'P2'` etc. for the given switch positions. Some special switches (like the [custom qubit control and readout box](CustomDevices/BoxIQmod.md)) may use other labels like `'Pmeas'` and `'Pmix'`. If unsure just use the `get_possible_contacts` function to query the possible switch states:

```python
lab.HAL('sw_rpi').get_possible_contacts()
```
1 change: 1 addition & 0 deletions docs/User/InstrumentSpecific/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ FPGA DSP units:
Microwave sources:
- [Rohde & Schwarz SGS100A](RohdeAndSchwarz_SGS100A.md)
- [Rohde & Schwarz SMB100A](RohdeAndSchwarz_SMB100A.md)
- [Windfreak SynthHD PRO (v2)](WindFreak_SynthHD.md)

Source-Measure-Units:
- [Keithley 236](Keithley_236.md)
Loading

0 comments on commit f2cf464

Please sign in to comment.