Exemplo n.º 1
0
 def _init_integration_params(self):
     self.threshold = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._parent_index}"
             f"/readout/discriminators/{self._index}/threshold"
         ),
         device=self._device,
     )
     self.result = Parameter(
         self,
         self._device._get_node_dict(
             f"/qachannels/{self._parent_index}"
             f"/readout/result/data/{self._index}/wave"
         ),
         device=self._device,
     )
     self.weights = Parameter(
         self,
         self._device._get_node_dict(
             f"/qachannels/{self._parent_index}"
             f"/readout/integration/weights/{self._index}/wave"
         ),
         device=self._device,
     )
Exemplo n.º 2
0
 def _init_params(self):
     """Initialize parameters associated with device nodes."""
     self.ref_clock = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/source"),
         device=self,
         set_parser=Parse.set_ref_clock_wo_zsync,
         get_parser=Parse.get_ref_clock_wo_zsync,
     )
     self.ref_clock_actual = Parameter(
         self,
         self._get_node_dict(
             f"system/clocks/referenceclock/in/sourceactual"),
         device=self,
         get_parser=Parse.get_ref_clock_wo_zsync,
     )
     self.ref_clock_status = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/status"),
         device=self,
         get_parser=Parse.get_locked_status,
     )
     self.progress = Parameter(
         self,
         self._get_node_dict(f"execution/progress"),
         device=self,
     )
Exemplo n.º 3
0
 def _init_awg_params(self):
     self.output1 = Parameter(
         self,
         self._parent._get_node_dict("sigouts/0/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         self._parent._get_node_dict("sigouts/1/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.gain1 = Parameter(
         self,
         self._parent._get_node_dict("awgs/0/outputs/0/amplitude"),
         device=self._parent,
         set_parser=Parse.amp1,
     )
     self.gain2 = Parameter(
         self,
         self._parent._get_node_dict("awgs/0/outputs/1/amplitude"),
         device=self._parent,
         set_parser=Parse.amp1,
     )
Exemplo n.º 4
0
 def _init_params(self):
     """Initialize parameters associated with device nodes."""
     super()._init_params()
     self.sw_trigger = Parameter(
         self,
         self._get_node_dict(f"system/swtriggers/0/single"),
         device=self,
     )
     self.ref_clock = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/source"),
         device=self,
         auto_mapping=True,
     )
     self.ref_clock_actual = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/sourceactual"),
         device=self,
         auto_mapping=True,
     )
     self.ref_clock_status = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/status"),
         device=self,
         get_parser=Parse.get_locked_status,
     )
Exemplo n.º 5
0
 def _init_params(self):
     self.integration_time = Parameter(
         self,
         self._get_node_dict("qas/0/integration/length"),
         device=self,
         set_parser=Parse.uhfqa_time2samples,
         get_parser=Parse.uhfqa_samples2time,
     )
     self.result_source = Parameter(
         self,
         self._get_node_dict("qas/0/result/source"),
         device=self,
         mapping=MAPPINGS["result_source"],
     )
     self.averaging_mode = Parameter(
         self,
         self._get_node_dict("qas/0/result/mode"),
         device=self,
         mapping=MAPPINGS["averaging_mode"],
     )
     self.ref_clock = Parameter(
         self,
         self._get_node_dict(f"system/extclk"),
         device=self,
         set_parser=Parse.set_ref_clock_wo_zsync,
         get_parser=Parse.get_ref_clock_wo_zsync,
     )
Exemplo n.º 6
0
 def __init__(self, parent: BaseInstrument, index: int) -> None:
     super().__init__(parent, index)
     self.output1 = Parameter(
         self,
         dict(
             Node="sigouts/0/on",
             Description=
             "Enables or disables both ouputs of the AWG. Either can be {'1', '0'} or {'on', 'off'}.",
             Type="Integer",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         dict(
             Node="sigouts/1/on",
             Description=
             "Enables or disables both ouputs of the AWG. Either can be {'1', '0'} or {'on', 'off'}.",
             Type="Integer",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.gain1 = Parameter(
         self,
         dict(
             Node="awgs/0/outputs/0/amplitude",
             Description="Sets the gain of the first output channel.",
             Type="Double",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.amp1,
     )
     self.gain2 = Parameter(
         self,
         dict(
             Node="awgs/0/outputs/1/amplitude",
             Description="Sets the gain of the second output channel.",
             Type="Double",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.amp1,
     )
Exemplo n.º 7
0
 def _init_scope_params(self):
     self._enable = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.single = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/single"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.length = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/length"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.greater_equal(v, 4096),
             lambda v: Parse.smaller_equal(v, 128000000),
             lambda v: Parse.multiple_of(v, 16, "down"),
         ],
     )
     self._channel = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channel"),
         device=self._parent,
     )
     self.trigger_source = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/trigchannel"),
         device=self._parent,
         auto_mapping=True,
     )
     self.trigger_level = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/triglevel"),
         device=self._parent,
     )
     self.trigger_enable = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/trigenable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.trigger_reference = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/trigreference"),
         device=self._parent,
     )
     self.trigger_holdoff = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/trigholdoff"),
         device=self._parent,
     )
Exemplo n.º 8
0
 def _init_params(self):
     """Initialize parameters associated with device nodes."""
     super()._init_params()
     self.integration_time = Parameter(
         self,
         dict(
             Node=f"{self.serial}/qas/0/integration/length".upper(),
             Description=
             "The integration time of all weighted integration units "
             "specified in seconds. In Standard mode, a maximum of 4096 "
             "samples can be integrated, which corresponds to 2.3 µs. "
             "In Spectroscopy mode, a maximum of 16.7 MSa can be "
             "integrated, which corresponds to ~10 ms.",
             Type="Double",
             Properties="Read, Write, Setting",
             Unit="s",
         ),
         device=self,
         set_parser=Parse.uhfqa_time2samples,
         get_parser=Parse.uhfqa_samples2time,
     )
     self.integration_length = Parameter(
         self,
         self._get_node_dict("qas/0/integration/length"),
         device=self,
         set_parser=[
             lambda v: Parse.greater_equal(v, 4),
             lambda v: Parse.multiple_of(v, 4, "down"),
         ],
     )
     self.result_source = Parameter(
         self,
         self._get_node_dict("qas/0/result/source"),
         device=self,
         mapping=MAPPINGS["result_source"],
     )
     self.averaging_mode = Parameter(
         self,
         self._get_node_dict("qas/0/result/mode"),
         device=self,
         mapping=MAPPINGS["averaging_mode"],
     )
     self.ref_clock = Parameter(
         self,
         self._get_node_dict(f"system/extclk"),
         device=self,
         auto_mapping=True,
     )
Exemplo n.º 9
0
 def __init__(self,
              name: str,
              serial: str,
              discovery=None,
              **kwargs) -> None:
     super().__init__(name, DeviceTypes.UHFQA, serial, discovery, **kwargs)
     self._awg = AWG(self, 0)
     self._channels = [ReadoutChannel(self, i) for i in range(10)]
     self.integration_time = Parameter(
         self,
         dict(
             Node="qas/0/integration/length",
             Description="The integration time of the QA Integration unit.",
             Type="Double",
             Properties="Read, Write",
             Unit="s",
         ),
         device=self,
         set_parser=Parse.uhfqa_time2samples,
         get_parser=Parse.uhfqa_samples2time,
     )
     self.result_source = Parameter(
         self,
         dict(
             Node="qas/0/result/source",
             Description=
             "The signal source for the QA Results unit. One of {'Crosstalk', 'Threshold', 'Rotation', 'Crosstalk Correlation', 'Threshold Correlation', 'Integration'}.",
             Type="Integer",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self,
         mapping=MAPPINGS["result_source"],
     )
     self.averaging_mode = Parameter(
         self,
         dict(
             Node="qas/0/result/mode",
             Description=
             "Selects the order of the result logger. One of {'Cyclic', 'Sequential'}.",
             Type="Integer",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self,
         mapping=MAPPINGS["averaging_mode"],
     )
Exemplo n.º 10
0
 def __init__(self, parent: BaseInstrument, index: int) -> None:
     if index not in range(10):
         raise ValueError(f"The channel index {index} is out of range!")
     self._index = index
     self._parent = parent
     self._enabled = False
     self._readout_frequency = 100e6
     self._readout_amplitude = 1
     self._phase_shift = 0
     self.rotation = Parameter(
         self,
         dict(
             Node=f"qas/0/rotations/{self._index}",
             Description=
             "Sets the rotation of the readout channel in degrees.",
             Type="Double",
             Properties="Read, Write",
             Unit="Degrees",
         ),
         device=self._parent,
         set_parser=Parse.deg2complex,
         get_parser=Parse.complex2deg,
     )
     self.threshold = Parameter(
         self,
         dict(
             Node=f"qas/0/thresholds/{self._index}/level",
             Description="Sets the threshold of the readout channel.",
             Type="Double",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
     )
     self.result = Parameter(
         self,
         dict(
             Node=f"qas/0/result/data/{self._index}/wave",
             Description="Returns the result vector of the readout channel.",
             Type="Numpy array",
             Properties="Read",
             Unit="None",
         ),
         device=self._parent,
         get_parser=self._average_result,
     )
Exemplo n.º 11
0
 def _setup(self) -> None:
     self._module = self._parent._controller.connection.daq_module
     # add all parameters from nodetree
     nodetree = self._module.get_nodetree("*")
     for k, v in nodetree.items():
         name = k[1:].replace("/", "_")
         mapping = MAPPINGS[name] if name in MAPPINGS.keys() else None
         setattr(self, name, Parameter(self, v, device=self, mapping=mapping))
     self._init_settings()
Exemplo n.º 12
0
 def _init_channel_params(self):
     self.rotation = Parameter(
         self,
         self._parent._get_node_dict(f"qas/0/rotations/{self._index}"),
         device=self._parent,
         set_parser=Parse.deg2complex,
         get_parser=Parse.complex2deg,
     )
     self.threshold = Parameter(
         self,
         self._parent._get_node_dict(f"qas/0/thresholds/{self._index}/level"),
         device=self._parent,
     )
     self.result = Parameter(
         self,
         self._parent._get_node_dict(f"qas/0/result/data/{self._index}/wave"),
         device=self._parent,
         get_parser=self._average_result,
     )
Exemplo n.º 13
0
 def _init_sweeper_params(self):
     self.oscillator_gain = Parameter(
         self,
         self._device._get_node_dict(f"qachannels/{self._index}/oscs/0/gain"),
         device=self._device,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, 0.0),
         ],
     )
     self.oscillator_freq = Parameter(
         self,
         self._device._get_node_dict(f"qachannels/{self._index}/oscs/0/freq"),
         device=self._device,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1e9),
             lambda v: Parse.greater_equal(v, 0.0),
         ],
     )
     self.integration_time = Parameter(
         self,
         dict(
             Node=f"{self._device.serial}/qachannels/{self._index}/spectroscopy/length".upper(),
             Description="Sets the integration length in Spectroscopy mode in unit "
             "of seconds. Up to 16.7 ms can be recorded, which "
             "corresponds to 33.5 MSa (2^25 samples).",
             Type="Double",
             Properties="Read, Write, Setting",
             Unit="s",
         ),
         device=self._device,
         set_parser=Parse.shfqa_time2samples,
         get_parser=Parse.shfqa_samples2time,
     )
     self.integration_length = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/spectroscopy/length"
         ),
         device=self._device,
         set_parser=[
             lambda v: Parse.greater_equal(v, 4),
             lambda v: Parse.smaller_equal(v, ((2 ** 23) - 1) * 4),
             lambda v: Parse.multiple_of(v, 4, "down"),
         ],
     )
     self.integration_delay = Parameter(
         self,
         self._device._get_node_dict(f"qachannels/{self._index}/spectroscopy/delay"),
         device=self._device,
         set_parser=lambda v: Parse.multiple_of(v, 2e-9, "nearest"),
     )
     self.trigger_source = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/spectroscopy/trigger/channel"
         ),
         device=self._device,
         auto_mapping=True,
     )
Exemplo n.º 14
0
    def _init_params(self):
        """Initialize parameters associated with device nodes.

        Can be overwritten by any instrument that inherits from the
        :class:`BaseInstrument`.

        """
        self.data_server_version = Parameter(
            self,
            self._get_node_dict(f"/zi/about/revision"),
            device=self,
            get_parser=Parse.version_parser,
        )
        self.firmware_version = Parameter(
            self,
            self._get_node_dict(f"/system/fwrevision"),
            device=self,
        )
        self.fpga_version = Parameter(
            self,
            self._get_node_dict(f"/system/fpgarevision"),
            device=self,
        )
Exemplo n.º 15
0
 def _init_params(self):
     """Initialize parameters associated with device nodes."""
     super()._init_params()
     self.ref_clock = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/source"),
         device=self,
         auto_mapping=True,
     )
     self.ref_clock_actual = Parameter(
         self,
         self._get_node_dict(
             f"system/clocks/referenceclock/in/sourceactual"),
         device=self,
         auto_mapping=True,
     )
     self.ref_clock_status = Parameter(
         self,
         self._get_node_dict(f"system/clocks/referenceclock/in/status"),
         device=self,
         get_parser=Parse.get_locked_status,
     )
     self.progress = Parameter(
         self,
         self._get_node_dict(f"execution/progress"),
         device=self,
     )
     self._enable = Parameter(
         self,
         self._get_node_dict(f"execution/enable"),
         device=self,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.repetitions = Parameter(
         self,
         self._get_node_dict(f"execution/repetitions"),
         device=self,
         set_parser=[
             lambda v: Parse.greater_equal(v, 1),
             lambda v: Parse.smaller_equal(v, 2**32 - 1),
         ],
     )
     self.holdoff = Parameter(
         self,
         self._get_node_dict(f"execution/holdoff"),
         device=self,
         set_parser=[
             lambda v: Parse.greater_equal(v, 100e-9),
             lambda v: Parse.multiple_of(v, 100e-9, "nearest"),
         ],
     )
Exemplo n.º 16
0
 def _init_qachannel_params(self):
     self.input = Parameter(
         self,
         self._parent._get_node_dict(f"qachannels/{self._index}/input/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.input_range = Parameter(
         self,
         self._parent._get_node_dict(
             f"qachannels/{self._index}/input/range"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.greater_equal(v, -50),
             lambda v: Parse.smaller_equal(v, 10),
             lambda v: Parse.multiple_of(v, 5, "nearest"),
         ],
     )
     self.output = Parameter(
         self,
         self._parent._get_node_dict(f"qachannels/{self._index}/output/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output_range = Parameter(
         self,
         self._parent._get_node_dict(
             f"qachannels/{self._index}/output/range"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.greater_equal(v, -50),
             lambda v: Parse.smaller_equal(v, 10),
             lambda v: Parse.multiple_of(v, 5, "nearest"),
         ],
     )
     self.center_freq = Parameter(
         self,
         self._parent._get_node_dict(
             f"qachannels/{self._index}/centerfreq"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.greater_equal(v, 1e9),
             lambda v: Parse.smaller_equal(v, 8e9),
             lambda v: Parse.multiple_of(v, 100e6, "nearest"),
         ],
     )
     self.mode = Parameter(
         self,
         self._parent._get_node_dict(f"qachannels/{self._index}/mode"),
         device=self._parent,
         auto_mapping=True,
     )
Exemplo n.º 17
0
 def _init_awg_params(self):
     self._enable = Parameter(
         self,
         self._parent._get_node_dict(f"awgs/0/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.output1 = Parameter(
         self,
         self._parent._get_node_dict("sigouts/0/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         self._parent._get_node_dict("sigouts/1/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.gain1 = Parameter(
         self,
         self._parent._get_node_dict("awgs/0/outputs/0/amplitude"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, -1.0),
         ],
     )
     self.gain2 = Parameter(
         self,
         self._parent._get_node_dict("awgs/0/outputs/1/amplitude"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, -1.0),
         ],
     )
     self.single = Parameter(
         self,
         self._parent._get_node_dict("awgs/0/single"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
Exemplo n.º 18
0
 def _init_readout_params(self):
     self._enable = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/readout/result/enable"
         ),
         device=self._device,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.integration_length = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/readout/integration/length"
         ),
         device=self._device,
     )
     self.integration_delay = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/readout/integration/delay"
         ),
         device=self._device,
     )
     self.result_source = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/readout/result/source"
         ),
         device=self._device,
         auto_mapping=True,
     )
     self.result_length = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/readout/result/length"
         ),
         device=self._device,
     )
     self.num_averages = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/readout/result/averages"
         ),
         device=self._device,
     )
Exemplo n.º 19
0
 def _init_generator_params(self):
     self._enable = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/generator/enable"),
         device=self._device,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.dig_trigger1_source = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/generator/auxtriggers/0/channel"),
         device=self._device,
         auto_mapping=True,
     )
     self.dig_trigger2_source = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/generator/auxtriggers/1/channel"),
         device=self._device,
         auto_mapping=True,
     )
     self.playback_delay = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/generator/delay"),
         device=self._device,
         set_parser=lambda v: Parse.multiple_of(v, 2e-9, "nearest"),
     )
     self._ready = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/generator/ready"),
         device=self._device,
     )
     self.single = Parameter(
         self,
         self._device._get_node_dict(
             f"qachannels/{self._index}/generator/single"),
         device=self._device,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
Exemplo n.º 20
0
 def _init_awg_params(self):
     self.output1 = Parameter(
         self,
         self._parent._get_node_dict(f"sigouts/{2*self._index}/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         self._parent._get_node_dict(f"sigouts/{2*self._index+1}/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.modulation_freq = Parameter(
         self,
         self._parent._get_node_dict(f"oscs/{4 * self._index}/freq"),
         device=self._parent,
         set_parser=Parse.greater0,
     )
     self.modulation_phase_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"sines/{2 * self._index + 1}/phaseshift"),
         device=self._parent,
         set_parser=Parse.phase,
     )
     self.gain1 = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/outputs/0/gains/0"),
         device=self._parent,
         set_parser=Parse.amp1,
     )
     self.gain2 = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/outputs/1/gains/1"),
         device=self._parent,
         set_parser=Parse.amp1,
     )
Exemplo n.º 21
0
 def _init_awg_params(self):
     self._enable = Parameter(
         self,
         self._parent._get_node_dict(f"awgs/{self._index}/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.output1 = Parameter(
         self,
         self._parent._get_node_dict(f"sigouts/{2*self._index}/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         self._parent._get_node_dict(f"sigouts/{2*self._index+1}/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     # If the HDAWG has the MF option, the oscillator assignment
     # per core is different
     if "MF" in self._parent.options:
         oscs_multiplier = 4
     else:
         oscs_multiplier = 1
     self.modulation_freq = Parameter(
         self,
         self._parent._get_node_dict(
             f"oscs/{oscs_multiplier* self._index}/freq"),
         device=self._parent,
         set_parser=lambda v: Parse.greater(v, 0),
     )
     self.modulation_phase_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"sines/{2 * self._index + 1}/phaseshift"),
         device=self._parent,
         set_parser=Parse.phase,
     )
     self.gain1 = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/outputs/0/gains/0"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, -1.0),
         ],
     )
     self.gain2 = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/outputs/1/gains/1"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, -1.0),
         ],
     )
     self.single = Parameter(
         self,
         self._parent._get_node_dict(f"awgs/{self._index}/single"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.zsync_register_mask = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/register/mask"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 15),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_register_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/register/shift"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 3),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_register_offset = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/register/offset"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1023),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_decoder_mask = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/decoder/mask"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 255),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_decoder_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/decoder/shift"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 7),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_decoder_offset = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/decoder/offset"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1023),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
Exemplo n.º 22
0
 def __init__(self, parent: BaseInstrument, index: int) -> None:
     super().__init__(parent, index)
     self._iq_modulation = False
     self._trigger_level = 0.25
     self.output1 = Parameter(
         self,
         dict(
             Node=f"sigouts/{2*self._index}/on",
             Description=
             "Enables or disables both ouputs of the AWG. Either can be {'1', '0'} or {'on', 'off'}.",
             Type="Integer",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         dict(
             Node=f"sigouts/{2*self._index+1}/on",
             Description=
             "Enables or disables both ouputs of the AWG. Either can be {'1', '0'} or {'on', 'off'}.",
             Type="Integer",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.modulation_freq = Parameter(
         self,
         dict(
             Node=f"oscs/{4 * self._index}/freq",
             Description=
             "Sets the modulation frequency of the AWG output channels.",
             Type="Double",
             Properties="Read, Write",
             Unit="Hz",
         ),
         device=self._parent,
         set_parser=Parse.greater0,
     )
     self.modulation_phase_shift = Parameter(
         self,
         dict(
             Node=f"sines/{2 * self._index + 1}/phaseshift",
             Description=
             "Sets the modulation phase shift between the two AWG output channels.",
             Type="Double",
             Properties="Read, Write",
             Unit="Degrees",
         ),
         device=self._parent,
         set_parser=Parse.phase,
     )
     self.gain1 = Parameter(
         self,
         dict(
             Node=f"awgs/{self._index}/outputs/0/gains/0",
             Description="Sets the gain of the first output channel.",
             Type="Double",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.amp1,
     )
     self.gain2 = Parameter(
         self,
         dict(
             Node=f"awgs/{self._index}/outputs/1/gains/1",
             Description="Sets the gain of the second output channel.",
             Type="Double",
             Properties="Read, Write",
             Unit="None",
         ),
         device=self._parent,
         set_parser=Parse.amp1,
     )
Exemplo n.º 23
0
 def _init_scope_params(self):
     self._enable = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.channel1 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/0/enable"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.channel2 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/1/enable"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.channel3 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/2/enable"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.channel4 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/3/enable"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.input_select1 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/0/inputselect"),
         device=self._parent,
         auto_mapping=True,
     )
     self.input_select2 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/1/inputselect"),
         device=self._parent,
         auto_mapping=True,
     )
     self.input_select3 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/2/inputselect"),
         device=self._parent,
         auto_mapping=True,
     )
     self.input_select4 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/3/inputselect"),
         device=self._parent,
         auto_mapping=True,
     )
     self._wave1 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/0/wave"),
         device=self._parent,
     )
     self._wave2 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/1/wave"),
         device=self._parent,
     )
     self._wave3 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/2/wave"),
         device=self._parent,
     )
     self._wave4 = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/channels/3/wave"),
         device=self._parent,
     )
     self.trigger_source = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/trigger/channel"),
         device=self._parent,
         auto_mapping=True,
     )
     self.trigger_delay = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/trigger/delay"),
         device=self._parent,
         set_parser=lambda v: Parse.multiple_of(v, 2e-9, "nearest"),
     )
     self.length = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/length"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.greater_equal(v, 16),
             lambda v: Parse.smaller_equal(v, 2 ** 18),
             lambda v: Parse.multiple_of(v, 16, "down"),
         ],
     )
     self.time = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/time"),
         device=self._parent,
         auto_mapping=True,
     )
     self._segments_enable = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/segments/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self._segments_count = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/segments/count"),
         device=self._parent,
         set_parser=lambda v: Parse.greater(v, 0),
     )
     self._averaging_enable = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/averaging/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self._averaging_count = Parameter(
         self,
         self._parent._get_node_dict(f"scopes/0/averaging/count"),
         device=self._parent,
         set_parser=lambda v: Parse.greater(v, 0),
     )
Exemplo n.º 24
0
 def _init_awg_params(self):
     self._enable = Parameter(
         self,
         self._parent._get_node_dict(f"awgs/{self._index}/enable"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.output1 = Parameter(
         self,
         self._parent._get_node_dict(f"sigouts/{2*self._index}/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.output2 = Parameter(
         self,
         self._parent._get_node_dict(f"sigouts/{2*self._index+1}/on"),
         device=self._parent,
         set_parser=Parse.set_on_off,
         get_parser=Parse.get_on_off,
     )
     self.modulation_freq = Parameter(
         self,
         self._parent._get_node_dict(f"oscs/{4 * self._index}/freq"),
         device=self._parent,
         set_parser=lambda v: Parse.greater(v, 0),
     )
     self.modulation_phase_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"sines/{2 * self._index + 1}/phaseshift"),
         device=self._parent,
         set_parser=Parse.phase,
     )
     self.gain1 = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/outputs/0/gains/0"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, -1.0),
         ],
     )
     self.gain2 = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/outputs/1/gains/1"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1.0),
             lambda v: Parse.greater_equal(v, -1.0),
         ],
     )
     self.single = Parameter(
         self,
         self._parent._get_node_dict(f"awgs/{self._index}/single"),
         device=self._parent,
         set_parser=Parse.set_true_false,
         get_parser=Parse.get_true_false,
     )
     self.zsync_register_mask = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/register/mask"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 15),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_register_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/register/shift"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 3),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_register_offset = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/register/offset"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1023),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_decoder_mask = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/decoder/mask"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 255),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_decoder_shift = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/decoder/shift"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 7),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )
     self.zsync_decoder_offset = Parameter(
         self,
         self._parent._get_node_dict(
             f"awgs/{self._index}/zsync/decoder/offset"),
         device=self._parent,
         set_parser=[
             lambda v: Parse.smaller_equal(v, 1023),
             lambda v: Parse.greater_equal(v, 0),
         ],
     )