qick.drivers.generator
Drivers for signal generators: FPGA blocks that send data to DACs.
Classes
|
A signal generator with a memory for envelope waveforms. |
|
Generic class for multiplexed generators. |
|
A signal generator controlled by the TProcessor. |
|
Abstract class which defines methods that are common to different signal generators. |
|
Plays a constant IQ value, which gets mixed with the DAC's built-in oscillator. |
|
The default max amplitude for this generator is 0.9 times the maximum of int16. |
|
AXIS Signal Generator with 4 muxed outputs. |
|
AXIS Signal Generator with 4 muxed outputs. |
|
AxisSgMux4V3: no digital mixer, but otherwise behaves identically to AxisSgMux4V2. |
|
AXIS Signal Generator with 8 muxed outputs. |
|
AxisSignalGen class Supports AxisSignalGen V4+V5+V6, since they have the same software interface (ignoring registers that are not used) |
- class qick.drivers.generator.AbsSignalGen(*args: Any, **kwargs: Any)[source]
Bases:
SocIp
Abstract class which defines methods that are common to different signal generators.
- set_nyquist(nqz)[source]
Set the Nyquist zone mode for the DAC linked to this generator. For tProc-controlled generators, this method is called automatically during program config. You should normally only call this method directly for a constant-IQ output.
- Parameters:
nqz (int) – Nyquist zone (must be 1 or 2). Setting the NQZ to 2 increases output power in the 2nd/3rd Nyquist zones.
- set_mixer_freq(f, ro_ch=None, phase_reset=True)[source]
Set the mixer frequency for the DAC linked to this generator. For tProc-controlled generators, this method is called automatically during program config. You should normally only call this method directly for a constant-IQ output.
- Parameters:
mixer_freq (float) – Mixer frequency (in MHz)
ro_ch (int) – readout channel for frequency matching (use None if you don’t want mixer freq to be rounded to a valid readout frequency)
phase_reset (bool) – if this changes the frequency, also reset the phase (so if we go to freq=0, we end up on the real axis)
- class qick.drivers.generator.AbsArbSignalGen(*args: Any, **kwargs: Any)[source]
Bases:
AbsSignalGen
A signal generator with a memory for envelope waveforms.
- class qick.drivers.generator.AbsPulsedSignalGen(*args: Any, **kwargs: Any)[source]
Bases:
AbsSignalGen
A signal generator controlled by the TProcessor.
- class qick.drivers.generator.AxisSignalGen(*args: Any, **kwargs: Any)[source]
Bases:
AbsArbSignalGen
,AbsPulsedSignalGen
AxisSignalGen class Supports AxisSignalGen V4+V5+V6, since they have the same software interface (ignoring registers that are not used)
AXIS Signal Generator Registers. START_ADDR_REG
WE_REG * 0 : disable writes. * 1 : enable writes.
- class qick.drivers.generator.AxisSgInt4V1(*args: Any, **kwargs: Any)[source]
Bases:
AbsArbSignalGen
,AbsPulsedSignalGen
The default max amplitude for this generator is 0.9 times the maximum of int16. This is necessary to prevent interpolation overshoot: the output of the interpolation filter may exceed the max value of the input points. (https://blogs.keysight.com/blogs/tech/rfmw.entry.html/2019/05/07/confronting_measurem-IBRp.html) The result of overshoot is integer overflow in the filter output and big negative spikes. If the input to the filter is a square pulse, the rising edge of the output overshoots by 10%. Therefore, scaling envelopes by 90% seems safe.
AXIS Signal Generator with envelope x4 interpolation V1 Registers. START_ADDR_REG
WE_REG * 0 : disable writes. * 1 : enable writes.
- class qick.drivers.generator.AbsMuxSignalGen(*args: Any, **kwargs: Any)[source]
Bases:
AbsPulsedSignalGen
Generic class for multiplexed generators.
Registers: PINCx_REG : frequency of tone x. POFFx_REG : phase of tone x. GAINx_REG : gain of tone x.
WE_REG * 0 : disable writes. * 1 : enable writes.
- HAS_MIXER = None
- set_tones_int(tones)[source]
Set up a list of tones all at once, using raw (integer) units. If the supplied list of tones is shorter than the number supported, the extra tones will have their gains set to 0.
This method isn’t meant to be called directly. It is called by set_tones() or QickProgram.config_gens().
- set_tones(freqs, gains=None, phases=None, ro_ch=None)[source]
Set up a list of tones.
This method is not normally used, it’s only for debugging and testing. Normally the generator is configured based on parameters supplied in QickProgram.declare_gen().
- Parameters:
freqs (list of float) – Tone frequencies for the muxed generator (in MHz). Positive and negative values are allowed.
gains (list of float, optional) – Tone amplitudes for the muxed generator (in range -1 to 1).
phases (list of float, optional) – Phases for the muxed generator (in degrees).
ro_ch (int, optional) – readout channel for frequency-matching
- class qick.drivers.generator.AxisSgMux4V1(*args: Any, **kwargs: Any)[source]
Bases:
AbsPulsedSignalGen
AXIS Signal Generator with 4 muxed outputs.
- class qick.drivers.generator.AxisSgMux4V2(*args: Any, **kwargs: Any)[source]
Bases:
AbsMuxSignalGen
AXIS Signal Generator with 4 muxed outputs.
- class qick.drivers.generator.AxisSgMux4V3(*args: Any, **kwargs: Any)[source]
Bases:
AxisSgMux4V2
AxisSgMux4V3: no digital mixer, but otherwise behaves identically to AxisSgMux4V2.
- class qick.drivers.generator.AxisSgMux8V1(*args: Any, **kwargs: Any)[source]
Bases:
AbsMuxSignalGen
AXIS Signal Generator with 8 muxed outputs.
- class qick.drivers.generator.AxisConstantIQ(*args: Any, **kwargs: Any)[source]
Bases:
AbsSignalGen
Plays a constant IQ value, which gets mixed with the DAC’s built-in oscillator.