# Active Technologies AWG-401x 1.2GS/s Arbitrary Waveform Generator

class pymeasure.instruments.activetechnologies.AWG401x_AFG(adapter, **kwargs)

  Bases: `AWG401x_base`

  Represents the Active Technologies AWG-401x Arbitrary Waveform Generator in AFG mode.

      wfg = AWG401x_AFG("TCPIP::192.168.0.123::INSTR")

      wfg.reset()                     # Reset the instrument at default state

      wfg.channels[1].shape = "SINUSOID"    # Sets a sine waveform on CH1
      wfg.channels[1].frequency = 4.7e3     # Sets the frequency to 4.7 kHz on CH1
      wfg.channels[1].amplitude = 1         # Set amplitude of 1 V on CH1
      wfg.channels[1].offset = 0            # Set the amplitude to 0 V on CH1
      wfg.channels[1].enabled = True        # Enables the CH1

      wfg.channels[2].shape = "SQUARE"      # Sets a square waveform on CH2
      wfg.channels[2].frequency = 100e6     # Sets the frequency to 100 MHz on CH2
      wfg.channels[2].amplitude = 0.5         # Set amplitude of 0.5 V on CH2
      wfg.channels[2].offset = 0            # Set the amplitude to 0 V on CH2
      wfg.channels[2].enabled = True        # Enables the CH2

      wfg.enabled = True              # Enable output of waveform generator
      wfg.beep()                      # "beep"

      print(wfg.check_errors())       # Get the error queue

  ch_1
    Channel:

      `ChannelAFG`

  ch_2
    Channel:

      `ChannelAFG`

  property enabled

    A boolean property that enables the generation of signals.

class pymeasure.instruments.activetechnologies.AWG401x_AWG(adapter, **kwargs)

  Bases: `AWG401x_base`

  Represents the Active Technologies AWG-401x Arbitrary Waveform Generator in AWG mode.

      wfg = AWG401x_AWG("TCPIP::192.168.0.123::INSTR")

      wfg.reset()             # Reset the instrument at default state

      # Set a oscillating waveform
      wfg.waveforms["MyWaveform"] = [1, 0] * 8

      for i in range(1, wfg.num_ch + 1):
          wfg.entries[1].channels[i].voltage_high = 1       # Sets high voltage = 1
          wfg.entries[1].channels[i].voltage_low = 0        # Sets low voltage = 1
          wfg.entries[1].channels[i].waveform = "SQUARE"    # Sets a square wave
          wfg.setting_ch[i].enabled = True            # Enable channel

      wfg.entries.resize(2)           # Resize the number of entries to 2

      wfg.entries[2].channels[1].waveform = "MyWaveform"   # Set custom waveform

      wfg.enabled = True              # Enable output of waveform generator
      wfg.beep()                      # "beep"

      print(wfg.check_errors())       # Get the error queue

  class DummyEntriesElements(parent, number_of_channel)

    Bases: `Sequence`

    Dummy List Class to list every sequencer entry. The content is loaded in real-time.

  class WaveformsLazyDict(parent)

    Bases: `MutableMapping`

    This class inherit from MutableMapping in order to create a custom dict to lazy load, modify, delete and create instrument waveform.

    reset()

      Reset the class reloading the waveforms from instrument

  property burst_count

    This property sets or queries the burst count parameter.(dynamic)

  property burst_count_max

    This property queries the maximum burst count parameter.

  property burst_count_min

    This property queries the minimum burst count parameter.

  property enabled

    A boolean property that enables the generation of signals.

  property entry_level_strategy

    This property sets or or returns the Entry Length Strategy. This strategy manages the length of the sequencer entries in relationship with the length of the channel waveforms defined for each entry. The possible values are:

    - ADAPTL<ONGER>: the length of an entry of the sequencer by default will be equal to the length of the longer channel waveform, among all analog channels, assigned to the entry.

    - ADAPTS<HORTER>: the length of an entry of the sequencer by default will be equal to the length of the shorter channel waveform, among all analog channels, assigned to the entry.

    - DEF<AULT>:the length of an entry of the sequencer by default will be equal to the value specified in the Sequencer Item Default Length [N] parameter

  list_files(path=None)

    Return a List of tuples with all file found in a directory. If the path is not specified the current directory will be used

  property num_ch

    This property queries the number of analog channels.

  property num_dch

    This property queries the number of digital channels.

  remove_file(file_name, path=None)

    Remove a specified file

  property run_mode

    This property sets or returns the AWG run mode. The possible values are:

    - CONT<INUOUS>: each waveform will loop as written in the entry repetition parameter and the entire sequence is repeated circularly

    - BURS<T>: the AWG waits for a trigger event. When the trigger event occurs each waveform will loop as written in the entry repetition parameter and the entire sequence will be repeated circularly many times as written in the Burst Count[N] parameter. If you set Burst Count[N]=1 the instrument is in Single mode and the sequence will be repeated only once.

    - TCON<TINUOUS>: the AWG waits for a trigger event. When the trigger event occurs each waveform will loop as written in the entry repetition parameter and the entire sequence will be repeated circularly.

    - STEP<PED>: the AWG, for each entry, waits for a trigger event before the execution of the sequencer entry. The waveform of the entry will loop as written in the entry repetition parameter. After the generation of an entry has completed, the last sample of the current entry or the first sample of the next entry is held until the next trigger is received. At the end of the entire sequence the execution will restart from the first entry.

    - ADVA<NCED>: it enables the “Advanced” mode. In this mode the execution of the sequence can be changed by using conditional and unconditional jumps (JUMPTO and GOTO commands) and dynamic jumps (PATTERN JUMP commands).

    The *RST command sets this parameter to CONTinuous.

  property run_status

    This property returns the run state of the AWG. The possible values are: STOPPED, WAITING_TRIGGER, RUNNING

  property sample_decreasing_strategy

    This property sets or returns the Sample Decreasing Strategy. The “Sample decreasing strategy” parameter defines the strategy used to adapt the waveform length to the sequencer entry length in the case where the original waveform length is longer than the sequencer entry length. Can be set to: DECIM<ATION>, CUTT<AIL>, CUTH<EAD>

  property sample_increasing_strategy

    This property sets or or returns the Sample Increasing Strategy. The “Sample increasing strategy” parameter defines the strategy used to adapt the waveform length to the sequencer entry length in the case where the original waveform length is shorter than the sequencer entry length. Can be set to: INTER<POLATION>, RETURN<ZERO>, HOLD<LAST>, SAMPLESM<ULTIPLICATION>

  property sampling_rate

    This property sets or queries the sample rate for the Sampling Clock.(dynamic)

  property sampling_rate_max

    This property queries the maximum sample rate for the Sampling Clock.

  property sampling_rate_min

    This property queries the minimum sample rate for the Sampling Clock.

  save_file(file_name, data, path=None, override_existing=False)

    Write a string in a file in the instrument

  trigger()

    Force a trigger event to occour.

  property trigger_source

    This property sets or returns the instrument trigger source. The possible values are:

    - TIM<ER>: the trigger is sent at regular intervals.

    - EXT<ERNAL>: the trigger come from the external BNC connector.

    - MAN<UAL>: the trigger is sent via software or using the trigger button on front panel.

  property waveforms

    This property returns a dict with all the waveform present in the instrument system (Wave. List). It is possible to modify the values, delete them or create new waveforms

class pymeasure.instruments.activetechnologies.AWG401x.ChannelAFG(instrument, id)

  Bases: `ChannelBase`

  Implementation of a Active Technologies AWG-4000 channel in AFG mode.

  property baseline_offset

    This property sets or queries the offset level for the specified channel. The offset range setting depends on the amplitude parameter. (dynamic)

  property baseline_offset_max

    This property queries the maximum offset voltage level that can be set to the output waveform.

  property baseline_offset_min

    This property queries the minimum offset voltage level that can be set to the output waveform.

  property frequency

    This property sets or queries the frequency of the output waveform. This command is available when the Run Mode is set to any setting other than Sweep. The output frequency range setting depends on the type of output waveform. If you change the type of output waveform, it may change the output frequency because changing waveform types affects the setting range of the output frequency. The output frequency range setting depends also on the amplitude parameter.(dynamic)

  property frequency_max

    This property queries the maximum frequency that can be set to the output waveform.

  property frequency_min

    This property queries the minimum frequency that can be set to the output waveform.

  property load_impedance

    This property sets the output load impedance for the specified channel. The specified value is used for amplitude, offset, and high/low level settings. You can set the impedance to any value from 1 Ω to 1 MΩ. The default value is 50 Ω.

  property output_impedance

    This property sets the instrument output impedance, the possible values are: 5 Ohm or 50 Ohm (default).

  property phase

    This property sets or queries the phase of the output waveform for the specified channel. The value is in degrees.(dynamic)

  property phase_max

    This property queries the maximum phase that can be set to the output waveform.

  property phase_min

    This property queries the minimum phase that can be set to the output waveform.

  property shape

    This property sets or queries the shape of the carrier waveform. Allowed choices depends on the choosen modality, please refer on instrument manual. When you set this property with a different value, if the instrument is running it will be stopped. Can be set to: SIN<USOID>, SQU<ARE>, PULS<E>, RAMP, PRN<OISE>, DC, SINC, GAUS<SIAN>, LOR<ENTZ>, ERIS<E>, EDEC<AY>, HAV<ERSINE>, ARBB, EFIL<E>, DOUBLEPUL<SE>

  property voltage_amplitude

    This property sets or queries the output amplitude for the specified channel. The measurement unit of amplitude depends on the selection operated using the voltage_unit property. If the carrier is Noise the amplitude is Vpk instead of Vpp. If the carrier is DC level this command causes an error. The range of the amplitude setting could be limited by the frequency and offset parameter of the carrier waveform. (dynamic)

  property voltage_amplitude_max

    This property queries the maximum amplitude voltage level that can be set to the output waveform.

  property voltage_amplitude_min

    This property queries the minimum amplitude voltage level that can be set to the output waveform.

  property voltage_high

    This property sets or queries the high level of the waveform. The high level could be limited by noise level to not exceed the maximum amplitude. If the carrier is Noise or DC level, this command and this query cause an error.(dynamic)

  property voltage_high_max

    This property queries the maximum high voltage level that can be set to the output waveform.

  property voltage_high_min

    This property queries the minimum high voltage level that can be set to the output waveform.

  property voltage_low

    This property sets or queries the low level of the waveform. The low level could be limited by noise level to not exceed the maximum amplitude. If the carrier is Noise or DC level, this command and this query cause an error.(dynamic)

  property voltage_low_max

    This property queries the maximum low voltage level that can be set to the output waveform.

  property voltage_low_min

    This property queries the minimum low voltage level that can be set to the output waveform.

  property voltage_offset

    This property sets or queries the offset level for the specified channel. The offset range setting depends on the amplitude parameter. (dynamic)

  property voltage_offset_max

    This property queries the maximum offset voltage level that can be set to the output waveform.

  property voltage_offset_min

    This property queries the minimum offset voltage level that can be set to the output waveform.

  property voltage_unit

    This property sets or queries the units of output amplitude, the possible choices are: VPP, VRMS, DBM. This command does not affect the offset, high level, or low level of output.