Connecting to F1d by Qutech in Python
Instrument Card
The F1d module is an IQ demodulator ranging from 40 MHz to 1.4 GHz. It was initially designed for reflectometry and to be used in conjuction with the S5i RF source and the M2j low noise amplifier.
Device Specification: here
Manufacturer card: QUTECH
At QuTech, we work on a radically new technology with world-changing potential. Our mission: to develop scalable prototypes of a quantum computer and an inherently safe quantum internet, based on the fundamental laws of quantum mechanics.
- Headquarters: CJ Delft, Netherlands
- Yearly Revenue (millions, USD): 41.3
- Vendor Website: here
Connect to the F1d in Python
Read our guide for turning Python scripts into Flojoy nodes.
PROTOCOLS > SCPI
To connect to an F1d RF Signal Generator using Qcodes Community, you can use the following Python script:
from qcodes.instrument.base import Instrumentfrom qcodes.utils.validators import Enumfrom spirack import F1d_module
class F1d(Instrument): def __init__(self, name, spi_rack, module, **kwargs): super().__init__(name, **kwargs)
self.f1d = F1d_module(spi_rack, module)
self.add_parameter('remote_settings', label='Remote settings', get_cmd=self.get_remote_settings)
self.add_parameter('IQ_filter', label='IQ filter', set_cmd=self.f1d.set_IQ_filter, unit='MHz', vals=Enum(1, 3, 10), docstring='Low-pass filter after demodulation')
self.add_parameter('I_gain', label='I gain', set_cmd=self.f1d.set_I_gain, vals=Enum('low', 'mid', 'high'), docstring='Gain of amplifier of demodulated signal')
self.add_parameter('Q_gain', label='Q gain', set_cmd=self.f1d.set_Q_gain, vals=Enum('low', 'mid', 'high'), docstring='Gain of amplifier of demodulated signal')
self.add_parameter('RF_level', label='RF level', get_cmd=self.f1d.get_RF_level, unit='dBm')
self.add_parameter('LO_level', label='LO level', get_cmd=self.f1d.get_LO_level, unit='dBm')
self.add_parameter('enable_remote', label='Enable remote', set_cmd=self.f1d.enable_remote, docstring='getting the remote status is not possible')
self.add_function('clear_rf_clip', call_cmd=self.f1d.clear_rf_clip)
self.add_function('is_rf_clipped', call_cmd=self.f1d.rf_clipped)
def get_remote_settings(self): return self.f1d.remote_settings
# Create an instance of the F1d RF Signal Generatorf1d = F1d(name='f1d', spi_rack=spi_rack_instance, module=1)
# Set the IQ filter to 3 MHzf1d.IQ_filter(3)
# Set the I gain to 'high'f1d.I_gain('high')
# Set the Q gain to 'mid'f1d.Q_gain('mid')
# Get the RF levelrf_level = f1d.RF_level()
# Get the LO levello_level = f1d.LO_level()
# Enable remote modef1d.enable_remote(True)
# Clear RF clipf1d.clear_rf_clip()
# Check if RF is clippedis_rf_clipped = f1d.is_rf_clipped()
Note: In the above script, you need to replace spi_rack_instance
with the actual instance of the SPI_rack
class from the spirack
package that you are using.