Download

Download this file as Jupyter notebook: acquisition.ipynb.

Acquisition#

This section will discuss SDK features related to acquiring signals with the QCS. Signals are acquired by the M5200A digitizer, typically after being downconverted by the M5301A downconverter.

See Keysight Hardware Modules for more details on the M5200A and M5201A.

Acquisitions can be added to a program to play on one of these channels with the method Program.add_acquisition(integration_filter, channels).

In addition to specifying the channels to acquire on, this method also has integration_filter as a required argument. For a simple acquisition, a float can be used as the integration filter to specify the acquisition time in seconds.

Alternatively the integration_filter argument can be used to specify how to demodulate the acquired signal. Details on this and additional acquisition features are described in the following section.

Demodulation#

In quantum experiments it is commonly the case that users do not need the full time trace of an acquired signal and would prefer to extract a single IQ point from each acquisition. This process is referred to as IQ demodulation, and involves three requirements:

  1. Filtering: There are many reasons that users may want to apply a filter to the data that they are acquiring. A bandpass filter can remove unwanted frequency components from the data, while various kinds of matched filters may give greater weight to parts of the signal that carry the highest signal-to-noise ratio.

  2. Digital Downconversion: Even if a downconverter is used to bring a microwave signal into the frequency range of a digitizer, the signal acquired by the digitizer may still be at some intermediate frequency (IF). The first requirement for demodulation is to downconvert this to 0 frequency so that the signal does not vanish when integrated.

  3. Integration: In order to reduce the data from a full time trace to a single IQ point, each data point is summed after downconversion and filtering.

Multiplexed readout#

Superconducting qubits often use a shared readout line to measure the state of multiple qubits. This can be achieved by coupling the line to multiple readout resonators with different resonance frequencies. The measurement can then be performed by applying a readout pulse at many different frequencies, and then simultaneously filtering acquired signal at each frequency in order to analyze the I/Q signal from each tone independently.

The QCS supports multiplexing of up to 5 different readout frequencies per control line. This is expressed in the SDK by using the channel mapper to map multiple virtual channels to a single physical channel as shown in the code snippets below:

[2]:
import keysight.qcs as qcs

n_qubits = 5

# virtual channels

acquire_channels = qcs.Channels(
    range(n_qubits), "acquire_channels", absolute_phase=True
)

readout_channels = qcs.Channels(
    range(n_qubits), "readout_channels", absolute_phase=True
)

Here we are setting up a channel mapper with 5:1 readout multiplexing. First we create 5 virtual channels to represent the inputs and outputs to the different readout resonators that we can address.

[3]:
# physical channels

readout_awg_address = qcs.Address(chassis=1, slot=2, channel=1)

dig_address = qcs.Address(1, 18, 1)

Next, we create one physical channel for the readout AWG and one physical channel for the digitizer.

[4]:
# map virtual channels to physical channels

channel_mapper = qcs.ChannelMapper()

channel_mapper.add_channel_mapping(
    readout_channels, [readout_awg_address] * n_qubits, qcs.InstrumentEnum.M5300AWG
)

channel_mapper.add_channel_mapping(
    acquire_channels, [dig_address] * n_qubits, qcs.InstrumentEnum.M5200Digitizer
)

Finally, we map all 5 of the virtual channels that we created to the same physical channel.


Download

Download this file as Jupyter notebook: acquisition.ipynb.