Signal Hound Drivers¶
Classes:
|
QCoDeS driver for the SignalHound USB SA124B |
- class qcodes.instrument_drivers.signal_hound.SignalHoundUSBSA124B(name: str, dll_path: str | None = None, **kwargs: Unpack[InstrumentBaseKWArgs])[source]¶
Bases:
Instrument
QCoDeS driver for the SignalHound USB SA124B
The driver needs Signal Hounds software Spike installed to function. In addition, you may need to install Microsoft Visual Studio C++ Redistributable for the driver to function within QCoDeS. At the time of writing the current version of Spike (3.2.3) uses Microsoft Visual Studio C++ Redistributable 2012
- Parameters:
name – Name of the instrument.
dll_path – Path to
sa_api.dll
Defaults to the default dll within Spike installation**kwargs – kwargs are forwarded to base class.
Attributes:
Center frequency for sweep.
Width of frequency span.
Number of points in frequency sweep.
Number of averages to perform.
Setting reference level will automatically select gain and attenuation optimal for measuring at and below this level
Use an external 10 MHz reference source.
Parameter device_type
The driver currently only supports sweeping mode.
The driver only supports averaging mode.
Resolution Bandwidth (RBW) is the bandwidth of spectral energy represented in each frequency bin
The video bandwidth (VBW) is applied after the signal has been converted to frequency domain as power, voltage, or log units.
Apply software filter to remove undersampling mirroring
Time to sleep before and after getting data from the instrument
Parameter trace
The maximum power in a window of 250 kHz around the specified frequency with Resolution bandwidth set to 1 kHz.
Parameter scale
Parameter frequency_axis
Parameter freq_sweep
Methods:
Sync parameters sets the configuration of the instrument using the parameters specified in the Qcodes instrument.
Syncs parameters to the Instrument and updates the setpoint of the trace.
Opens connection to the instrument
close
()Close connection to the instrument.
abort
()Abort any running acquisition.
preset
()Like close but performs a hardware reset before closing the connection.
Queries the sweep for information on the parameters that defines the x axis of the sweep
check_for_error
(err, source[, extrainfo])get_idn
()Parse a standard VISA
*IDN?
response into an ID dict.- dll_path = 'C:\\Program Files\\Signal Hound\\Spike\\sa_api.dll'¶
- frequency: SweepTraceParameter = self.add_parameter( "frequency", label="Frequency", unit="Hz", initial_value=5e9, vals=vals.Numbers(), parameter_class=SweepTraceParameter, docstring="Center frequency for sweep. " "This is the set center, the actual " "center may be subject to round off " "compared to this value", )¶
Center frequency for sweep.
This is the set center, the actual center may be subject to round off compared to this value
- span: SweepTraceParameter = self.add_parameter( "span", label="Span", unit="Hz", initial_value=0.25e6, vals=vals.Numbers(), parameter_class=SweepTraceParameter, docstring="Width of frequency span. " "This is the set span, the actual " "span may be subject to round off " "compared to this value", )¶
Width of frequency span.
This is the set span, the actual span may be subject to round off compared to this value
- npts: Parameter = self.add_parameter( "npts", label="Number of Points", get_cmd=self._get_npts, set_cmd=False, docstring="Number of points in frequency sweep.", )¶
Number of points in frequency sweep.
- avg: Parameter = self.add_parameter( "avg", label="Averages", initial_value=1, get_cmd=None, set_cmd=None, vals=vals.Ints(), docstring="Number of averages to perform. " "Averages are performed in software by " "acquiring multiple sweeps", )¶
Number of averages to perform.
Averages are performed in software by acquiring multiple sweeps
- ref_lvl: TraceParameter = self.add_parameter( "ref_lvl", label="Reference power", unit="dBm", initial_value=0, vals=vals.Numbers(max_value=20), parameter_class=TraceParameter, docstring="Setting reference level will " "automatically select gain and attenuation " "optimal for measuring at and below " "this level", )¶
Setting reference level will automatically select gain and attenuation optimal for measuring at and below this level
- external_reference: ExternalRefParameter = self.add_parameter( "external_reference", initial_value=False, vals=vals.Bool(), parameter_class=ExternalRefParameter, docstring="Use an external 10 MHz reference source. " "Note that Signal Hound does not support " "disabling external ref. To disable close " "the connection and restart.", )¶
Use an external 10 MHz reference source.
Note that Signal Hound does not support disabling external ref. To disable close the connection and restart.
- device_type: Parameter = self.add_parameter( "device_type", set_cmd=False, get_cmd=self._get_device_type )¶
Parameter device_type
- device_mode: Parameter = self.add_parameter( "device_mode", get_cmd=lambda: "sweeping", set_cmd=False, docstring="The driver currently only " "supports sweeping mode. " "It is therefor not possible " "to set this parameter to anything else", )¶
The driver currently only supports sweeping mode.
It is therefor not possible to set this parameter to anything else
- acquisition_mode: Parameter = self.add_parameter( "acquisition_mode", get_cmd=lambda: "average", set_cmd=False, docstring="The driver only supports averaging " "mode it is therefor not possible to set " "this parameter to anything else", )¶
The driver only supports averaging mode.
It is therefor not possible to set this parameter to anything else
- rbw: TraceParameter = self.add_parameter( "rbw", label="Resolution Bandwidth", unit="Hz", initial_value=1e3, vals=vals.Numbers(0.1, 250e3), parameter_class=TraceParameter, docstring="Resolution Bandwidth (RBW) is " "the bandwidth of " "spectral energy represented in each " "frequency bin", )¶
Resolution Bandwidth (RBW) is the bandwidth of spectral energy represented in each frequency bin
- vbw: TraceParameter = self.add_parameter( "vbw", label="Video Bandwidth", unit="Hz", initial_value=1e3, vals=vals.Numbers(), parameter_class=TraceParameter, docstring="The video bandwidth (VBW) is applied " "after the signal has been converted to " "frequency domain as power, voltage, " "or log units. It is implemented as a " "simple rectangular window, averaging the " "amplitude readings for each frequency " "bin over several overlapping FFTs. " "For best performance use RBW as the VBW.", )¶
The video bandwidth (VBW) is applied after the signal has been converted to frequency domain as power, voltage, or log units. It is implemented as a simple rectangular window, averaging the amplitude readings for each frequency bin over several overlapping FFTs. For best performance use RBW as the VBW.
- reject_image: TraceParameter = self.add_parameter( "reject_image", label="Reject image", unit="", initial_value=True, parameter_class=TraceParameter, get_cmd=None, docstring="Apply software filter to remove undersampling mirroring", vals=vals.Bool(), )¶
Apply software filter to remove undersampling mirroring
- sleep_time: Parameter = self.add_parameter( "sleep_time", label="Sleep time", unit="s", initial_value=0.1, get_cmd=None, set_cmd=None, docstring="Time to sleep before and after " "getting data from the instrument", vals=vals.Numbers(0), )¶
Time to sleep before and after getting data from the instrument
- trace: FrequencySweep = self.add_parameter( name="trace", sweep_len=1, start_freq=1, stepsize=1, parameter_class=FrequencySweep, )¶
Parameter trace
- power: Parameter = self.add_parameter( "power", label="Power", unit="dBm", get_cmd=self._get_power_at_freq, set_cmd=False, docstring="The maximum power in a window of 250 kHz " "around the specified frequency with " "Resolution bandwidth set to 1 kHz." "The integration window is specified by " "the VideoBandWidth (set by vbw)", )¶
The maximum power in a window of 250 kHz around the specified frequency with Resolution bandwidth set to 1 kHz.
The integration window is specified by the VideoBandWidth (set by vbw)
- scale: ScaleParameter = self.add_parameter( "scale", initial_value="log-scale", vals=vals.Enum( "log-scale", "lin-scale", "log-full-scale", "lin-full-scale" ), parameter_class=ScaleParameter, )¶
Parameter scale
- frequency_axis: Parameter = self.add_parameter( "frequency_axis", label="Frequency", unit="Hz", get_cmd=self._get_freq_axis, set_cmd=False, vals=vals.Arrays(shape=(self.npts,)), snapshot_value=False, )¶
Parameter frequency_axis
- freq_sweep: ParameterWithSetpoints = self.add_parameter( "freq_sweep", label="Power", unit="depends on mode", get_cmd=self._get_sweep_data, set_cmd=False, parameter_class=ParameterWithSetpoints, vals=vals.Arrays(shape=(self.npts,)), setpoints=(self.frequency_axis,), snapshot_value=False, )¶
Parameter freq_sweep
- sync_parameters() None [source]¶
Sync parameters sets the configuration of the instrument using the parameters specified in the Qcodes instrument.
- Sync parameters consists of five parts
Center span configuration (freqs and span)
- Acquisition configuration
lin-scale/log-scale avg/max power
Configuring the external 10MHz reference
Configuration of the mode that is being used
Acquisition mode. At the moment only sweeping is implemented
This does not currently implement Configuration of the tracking generator used in VNA mode
- configure() None [source]¶
Syncs parameters to the Instrument and updates the setpoint of the trace.
- QuerySweep() tuple[int, float, float] [source]¶
Queries the sweep for information on the parameters that defines the x axis of the sweep
- Returns:
number of points in sweep, start frequency and step size
- get_idn() dict[str, str | None] [source]¶
Parse a standard VISA
*IDN?
response into an ID dict.Even though this is the VISA standard, it applies to various other types as well, such as IPInstruments, so it is included here in the Instrument base class.
Override this if your instrument does not support
*IDN?
or returns a nonstandard IDN string. This string is supposed to be a comma-separated list of vendor, model, serial, and firmware, but semicolon and colon are also common separators so we accept them here as well.- Returns:
A dict containing vendor, model, serial, and firmware.
- parameters: dict[str, ParameterBase] = {}¶
All the parameters supported by this instrument. Usually populated via
add_parameter()
.
- functions: dict[str, Function] = {}¶
All the functions supported by this instrument. Usually populated via
add_function()
.
- submodules: dict[str, InstrumentModule | ChannelTuple] = {}¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule()
.
- instrument_modules: dict[str, InstrumentModule] = {}¶
All the
InstrumentModule
of this instrument Usually populated viaadd_submodule()
.
- log: InstrumentLoggerAdapter = get_instrument_logger(self, __name__)¶