Exemple #1
0
    (
        "out1_modsource",
        REG_SG_MODSOURCE,
        lambda s, old: old & ~0x00000006 | s << 1
        if s in [SG_MODSOURCE_INT, SG_MODSOURCE_ADC, SG_MODSOURCE_DAC]
        else None,
        lambda rval: rval & 0x00000006 >> 1,
    ),
    (
        "out2_modsource",
        REG_SG_MODSOURCE,
        lambda s, old: old & 0x00000018 | s << 3
        if s in [SG_MODSOURCE_INT, SG_MODSOURCE_ADC, SG_MODSOURCE_DAC]
        else None,
        lambda rval: rval & 0x00000018 >> 3,
    ),
    (
        "out1_amp_pc",
        REG_SG_PRECLIP,
        lambda a, old: old & 0xFFFF0000 | _usgn(1 / a, 16),
        lambda rval: rval & 0x0000FFFF * _SG_AMPSCALE,
    ),
    (
        "out2_amp_pc",
        REG_SG_PRECLIP,
        lambda a, old: old & 0x0000FFFF | _usgn(1 / a, 16) << 16,
        lambda rval: rval >> 16 * _SG_AMPSCALE,
    ),
]
_instrument._attach_register_handlers(_siggen_reg_hdl, SignalGenerator)
Exemple #2
0
     lambda rval: rval & 1),
    ('source_ch2', REG_OSC_OUTSEL, lambda s, old: (old & ~2) | s << 1
     if s in [OSC_SOURCE_ADC, OSC_SOURCE_DAC] else None,
     lambda rval: rval & 2 >> 1),
    ('trig_mode', REG_OSC_TRIGMODE, lambda s, old: (old & ~3) | s
     if s in [OSC_TRIG_AUTO, OSC_TRIG_NORMAL, OSC_TRIG_SINGLE] else None,
     lambda rval: rval & 3),
    ('trig_edge', REG_OSC_TRIGCTL, lambda s, old: (old & ~3) | s
     if s in [OSC_EDGE_RISING, OSC_EDGE_FALLING, OSC_EDGE_BOTH] else None,
     lambda rval: rval & 3),
    ('trig_ch', REG_OSC_TRIGCTL, lambda s, old: (old & ~0x7F0) | s << 4
     if s in [OSC_TRIG_CH1, OSC_TRIG_CH2, OSC_TRIG_DA1, OSC_TRIG_DA2] else
     None, lambda rval: rval & 0x7F0 >> 4),
    ('hf_reject', REG_OSC_TRIGCTL, lambda s, old: (old & ~0x1000) | s << 12
     if int(s) in [0, 1] else None, lambda rval: rval & 0x1000 >> 12),
    ('hysteresis', REG_OSC_TRIGCTL, lambda s, old:
     (old & ~0xFFFF0000) | s << 16
     if 0 <= s < 2**16 else None, lambda rval: rval & 0xFFFF0000 >> 16),
    ('trigger_level', REG_OSC_TRIGLVL, lambda s, old: _sgn(s, 32),
     lambda rval: rval),
    ('loopback_mode', REG_OSC_ACTL, lambda m, old: (old & ~0x01) | m
     if m in [_OSC_LB_CLIP, _OSC_LB_ROUND] else None,
     lambda rval: rval & 0x01),
    ('ain_mode', REG_OSC_ACTL, lambda m, old: (old & ~0x300) | m << 16
     if m in [_OSC_AIN_DDS, _OSC_AIN_DECI] else None, lambda rval:
     (rval & 0x300) >> 16),
    ('decimation_rate', REG_OSC_DECIMATION, lambda r, old: _usgn(r, 32),
     lambda rval: rval),
]
_instrument._attach_register_handlers(_osc_reg_hdl, Oscilloscope)
Exemple #3
0
        self.pretrigger = 0
        self.render_deci = 1.0
        self.offset = 64
        self.render_deci_alt = self.render_deci
        self.offset_alt = self.offset
        self.set_frontend(1, fiftyr=True, atten=True, ac=True)
        self.set_frontend(2, fiftyr=True, atten=True, ac=True)


_pm_reg_hdl = [
    ('init_freq_ch1', (REG_PM_INITF1_H, REG_PM_INITF1_L), lambda f, old:
     ((_usgn(f * _PM_FREQSCALE, 48) >> 32) & 0xFFFF,
      _usgn(f * _PM_FREQSCALE, 48) & 0xFFFFFFFF), lambda rval: (
          (rval[0] << 32) | rval[1]) / _PM_FREQSCALE),
    ('init_freq_ch2', (REG_PM_INITF2_H, REG_PM_INITF2_L), lambda f, old:
     ((_usgn(f * _PM_FREQSCALE, 48) >> 32) & 0xFFFF,
      _usgn(f * _PM_FREQSCALE, 48) & 0xFFFFFFFF), lambda rval: (
          (rval[0] << 32) | rval[1]) / _PM_FREQSCALE),
    ('control_gain', REG_PM_CGAIN, lambda f, old: _sgn(f, 12) | (old & ~0xFFF),
     lambda rval: _upsgn(rval & 0xFFF, 12)),
    ('control_shift', REG_PM_CGAIN, lambda f, old:
     (_usgn(f, 4) << 20) | (old & ~0xF00000), lambda rval: (rval >> 20) & 0xF),
    ('integrator_shift', REG_PM_INTSHIFT, lambda f, old:
     (_usgn(f, 4) << 16) | (old & ~0xF0000), lambda rval: (rval >> 16) & 0xF),
    ('output_decimation', REG_PM_OUTDEC,
     lambda f, old: _usgn(f, 10) | (old & ~0x3FF), lambda rval: rval & 0x3FF),
    ('output_shift', REG_PM_OUTSHIFT, lambda f, old:
     (_usgn(f, 4) << 10) | (old & ~0x3C00), lambda rval: (rval >> 10) & 0xF),
]
_instrument._attach_register_handlers(_pm_reg_hdl, PhaseMeter)
Exemple #4
0
      _usgn(r / _SG_FREQSCALE, 48) & 0xFFFFFFFF), lambda rval: _SG_FREQSCALE /
     (rval[0] & 0xFFFF0000 << 16 | rval[1])),
    ('out2_riserate', (REG_SG_RFRATE2_H, REG_SG_RISERATE2_L), lambda r, old:
     (old[0] & 0xFFFF0000 | _usgn(r / _SG_RISESCALE, 48) >> 32,
      _usgn(r / _SG_RISESCALE, 48) & 0xFFFFFFFF), lambda rval:
     (rval[0] & 0x0000FFFF << 32 | rval[1]) * _SG_RISESCALE),
    ('out2_fallrate', (REG_SG_RFRATE2_H, REG_SG_FALLRATE2_L), lambda r, old:
     (old[0] & 0x0000FFFF | (_usgn(r / _SG_RISESCALE, 48) >> 32) << 16,
      _usgn(r / _SG_RISESCALE, 48) & 0xFFFFFFFF), lambda rval:
     (rval[0] & 0xFFFF0000 << 16 | rval[1]) * _SG_RISESCALE),
    ('mod1_amplitude', REG_SG_MODA1,
     lambda a, old: _usgn(a / _SG_DEPTHSCALE, 15), lambda rval: rval),
    ('mod2_amplitude', REG_SG_MODA2,
     lambda a, old: _usgn(a / _SG_DEPTHSCALE, 15), lambda rval: rval),
    ('out1_modsource', REG_SG_MODSOURCE,
     lambda s, old: old & ~0x00000006 | s << 1
     if s in [SG_MODSOURCE_INT, SG_MODSOURCE_ADC, SG_MODSOURCE_DAC] else None,
     lambda rval: rval & 0x00000006 >> 1),
    ('out2_modsource', REG_SG_MODSOURCE,
     lambda s, old: old & 0x00000018 | s << 3
     if s in [SG_MODSOURCE_INT, SG_MODSOURCE_ADC, SG_MODSOURCE_DAC] else None,
     lambda rval: rval & 0x00000018 >> 3),
    ('out1_amp_pc', REG_SG_PRECLIP,
     lambda a, old: old & 0xFFFF0000 | _usgn(1 / a, 16),
     lambda rval: rval & 0x0000FFFF * _SG_AMPSCALE),
    ('out2_amp_pc', REG_SG_PRECLIP,
     lambda a, old: old & 0x0000FFFF | _usgn(1 / a, 16) << 16,
     lambda rval: rval >> 16 * _SG_AMPSCALE),
]
_instrument._attach_register_handlers(_siggen_reg_hdl, SignalGenerator)
Exemple #5
0
    ('bs_cic3', REG_SA_DECCTL, lambda r, old:
     (old & ~0x78000) | _usgn(r, 4) << 15, lambda rval: rval & 0x78000 >> 15),
    ('dec_iir', REG_SA_DECCTL, lambda r, old:
     (old & ~0x780000) | _usgn(r + 1, 4) << 19, lambda rval:
     (rval & 0x780000 >> 19) - 1),
    ('rbw_ratio', REG_SA_RBW, lambda r, old:
     (old & ~0xFFFFFF) | _usgn(r * 2**10, 24), lambda rval:
     (rval & 0xFFFFFF) / 2**10),
    ('window', REG_SA_RBW, lambda r, old: (old & ~0x3000000) | r << 24
     if r in [SA_WIN_NONE, SA_WIN_BH, SA_WIN_HANNING, SA_WIN_FLATTOP] else
     None, lambda rval: (rval & 0x3000000) >> 24),
    ('ref_level', REG_SA_REFLVL, lambda r, old:
     (old & ~0x0F) | _usgn(r, 4), lambda rval: rval & 0x0F),
    ('gain_sos0', REG_SA_SOS0_GAIN, lambda r, old: _sgn(r, 18),
     lambda rval: rval),
    ('a1_sos0', REG_SA_SOS0_A1, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('a2_sos0', REG_SA_SOS0_A2, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('b1_sos0', REG_SA_SOS0_B1, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('gain_sos1', REG_SA_SOS1_GAIN, lambda r, old: _sgn(r, 18),
     lambda rval: rval),
    ('a1_sos1', REG_SA_SOS1_A1, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('a2_sos1', REG_SA_SOS1_A2, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('b1_sos1', REG_SA_SOS1_B1, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('gain_sos2', REG_SA_SOS2_GAIN, lambda r, old: _sgn(r, 18),
     lambda rval: rval),
    ('a1_sos2', REG_SA_SOS2_A1, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('a2_sos2', REG_SA_SOS2_A2, lambda r, old: _sgn(r, 18), lambda rval: rval),
    ('b1_sos2', REG_SA_SOS2_B1, lambda r, old: _sgn(r, 18), lambda rval: rval),
]
_instrument._attach_register_handlers(_sa_reg_hdl, SpecAn)
Exemple #6
0
	('window',			REG_SA_RBW,			lambda r, old: (old & ~0x3000000) | r << 24 if r in [SA_WIN_NONE, SA_WIN_BH, SA_WIN_HANNING, SA_WIN_FLATTOP] else None,
											lambda rval: (rval & 0x3000000) >> 24),
	('ref_level',		REG_SA_REFLVL,		lambda r, old: (old & ~0x0F) | _usgn(r, 4),
											lambda rval: rval & 0x0F),
	('gain_sos0',		REG_SA_SOS0_GAIN,	lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('a1_sos0',			REG_SA_SOS0_A1,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('a2_sos0',			REG_SA_SOS0_A2,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('b1_sos0',			REG_SA_SOS0_B1,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('gain_sos1',		REG_SA_SOS1_GAIN,	lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('a1_sos1',			REG_SA_SOS1_A1,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('a2_sos1',			REG_SA_SOS1_A2,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('b1_sos1',			REG_SA_SOS1_B1,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('gain_sos2',		REG_SA_SOS2_GAIN,	lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('a1_sos2',			REG_SA_SOS2_A1,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('a2_sos2',			REG_SA_SOS2_A2,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
	('b1_sos2',			REG_SA_SOS2_B1,		lambda r, old: _sgn(r, 18),
											lambda rval: rval),
]
_instrument._attach_register_handlers(_sa_reg_hdl, SpecAn)
Exemple #7
0
		self.calibration = dict(self._moku._get_property_section("calibration"))

	attach_moku.__doc__ = _instrument.MokuInstrument.attach_moku.__doc__

_osc_reg_hdl = [
	('source_ch1',		REG_OSC_OUTSEL,		lambda s, old: (old & ~1) | s if s in [OSC_SOURCE_ADC, OSC_SOURCE_DAC] else None,
											lambda rval: rval & 1),
	('source_ch2',		REG_OSC_OUTSEL,		lambda s, old: (old & ~2) | s << 1 if s in [OSC_SOURCE_ADC, OSC_SOURCE_DAC] else None,
											lambda rval: rval & 2 >> 1),
	('trig_mode',		REG_OSC_TRIGMODE,	lambda s, old: (old & ~3) | s if s in [OSC_TRIG_AUTO, OSC_TRIG_NORMAL, OSC_TRIG_SINGLE] else None,
											lambda rval: rval & 3),
	('trig_edge',		REG_OSC_TRIGCTL,	lambda s, old: (old & ~3) | s if s in [OSC_EDGE_RISING, OSC_EDGE_FALLING, OSC_EDGE_BOTH] else None,
											lambda rval: rval & 3),
	('trig_ch',			REG_OSC_TRIGCTL,	lambda s, old: (old & ~0x7F0) | s << 4 if s in
												[OSC_TRIG_CH1, OSC_TRIG_CH2, OSC_TRIG_DA1, OSC_TRIG_DA2] else None,
											lambda rval: rval & 0x7F0 >> 4),
	('hf_reject',		REG_OSC_TRIGCTL,	lambda s, old: (old & ~0x1000) | s << 12 if int(s) in [0, 1] else None,
											lambda rval: rval & 0x1000 >> 12),
	('hysteresis',		REG_OSC_TRIGCTL,	lambda s, old: (old & ~0xFFFF0000) | s << 16 if 0 <= s < 2**16 else None,
											lambda rval: rval & 0xFFFF0000 >> 16),
	('trigger_level',	REG_OSC_TRIGLVL,	lambda s, old: _sgn(s, 32),
											lambda rval: rval),
	('loopback_mode',	REG_OSC_ACTL,		lambda m, old: (old & ~0x01) | m if m in [_OSC_LB_CLIP, _OSC_LB_ROUND] else None,
											lambda rval: rval & 0x01),
	('ain_mode',		REG_OSC_ACTL,		lambda m, old: (old & ~0x300) | m << 16 if m in [_OSC_AIN_DDS, _OSC_AIN_DECI] else None,
											lambda rval: (rval & 0x300) >> 16),
	('decimation_rate',	REG_OSC_DECIMATION,	lambda r, old: _usgn(r, 32), lambda rval: rval),
]
_instrument._attach_register_handlers(_osc_reg_hdl, Oscilloscope)