adar1000 — Analog Devices Hardware Python Interfaces 0.0.8 documentation

# adar1000

class adi.adar1000.adar1000(uri='', context=None, chip_id='csb1_chip1', device_number=1, array_element_map=None, channel_element_map=None)

  Bases: `adi.attribute.attribute`, `adi.context_manager.context_manager`

  ADAR1000 Beamformer

  parameters:
    uri: type=string

      Optional parameter for the URI of IIO context with ADAR1000(s). If not given,

    context: type=iio.Context

      Optional parameter for IIO Context handle for the device. Don’t use if instantiating the adar1000 class directly. The adar1000_array class will handle this if creating an array instance.

    chip_id: type=string

      Required string identifying the desired chip select and hardware ID for the ADAR1000. If creating a single adar1000 instance, you can typically leave the default value of “csb1_chip1” as long as the device tree label matches. If creating an adar1000_array instance, the array class will handle the instantiation of individual adar1000 handles.

    device_number: type=int

      Required integer indicating the device number in the array. If creating a single adar1000 instance, this value should be 1. If creating an adar1000_array instance, the array class will handle the instantiation of individual adar1000 handles.

    array_element_map: type=list[list[int]]

      Required list of lists with the map of where the array elements are located in the physical array. Each entry in the map represents a row of elements referenced by element number. For example, a map:

      > [[1, 5, 9, 13],
      > [2, 6, 10, 14],
      > [3, 7, 11, 15],
      > [4, 8, 12, 16]]

      represents an array of 16 elements (4 ADAR1000s) in a 4x4 array. If creating a single adar1000 instance, the elements should be 1-4 in whatever configuration the physical array is (1x4, 2x2, 4x1, etc.). If creating an adar1000_array instance, the array class will handle the instantiation of individual adar1000 handles.

    channel_element_map: type=list[int]

      Required list of integers relating the array element numbers to the channels of the ADAR1000 instance. Each number in the list is the element number in the larger array, in order of the ADAR1000’s channels. For example, a list [10, 14, 13, 9] indicates that the ADAR1000’s channels are the following elements in the full array:

      > Channel 1: Element # 10
      > Channel 2: Element # 14
      > Channel 3: Element # 13
      > Channel 4: Element # 9

      If creating a single adar1000 instance, the elements should be 1-4 in order of the ADAR1000’s channels related to the array elements. If creating an adar1000_array instance, the array class will handle the instantiation of individual adar1000 handles.

  class adar1000_channel(adar_parent, adar_channel, array_element, row, column)

    Bases: `object`

    Class for each channel of the ADAR1000. This class is not meant to be instantiated directly. adar1000 objects will create their own handles of this class, one for each channel

    parameters:
      adar1000_parent: type=adar1000

        Parent ADAR1000 instance

      adar_channel: type=int

        Channel number of the parent corresponding to this channel

      array_element: type=int

        Element number of the array corresponding to this channel

      row: int

        Row number in the array

      column: int

        Column number in the array

    property adar1000_channel
    property adar1000_parent
    property array_element_number

      Element number in the array

    property column

      Element column number in the array

    property detector_power

      Get the detector power reading for the associated channel

    property pa_bias_off

      Get/Set PA_BIAS_OFF in voltage for the associated channel

    property pa_bias_on

      Get/Set PA_BIAS_ON in voltage for the associated channel

    property row

      Element row number in the array

    property rx_attenuator

      Get/Set Rx Attenuator state for the associated channel

    property rx_beam_state

      Get/Set the Channel Rx beam position used by RAM when all channels point to individual states. Valid states are 0-120.

    property rx_enable

      Get/Set the Rx enable state for the associated channel

    property rx_gain

      Get/Set the Rx Gain for the associated channel

    property rx_phase

      Get/Set the Rx Phase for the associated channel

    save_rx_beam(state, attenuator, gain, phase)

      Save a beam to an Rx memory position

      parameters:
        state: int

          State number to save. Valid options are 0 to 120

        attenuator: bool

          Attenuator state for the beam position. True means the attenuator is in place.

        gain: int

          Gain value for the beam position. Valid settings are 0 to 127.

        phase: float

          Phase value for the beam position.

    save_tx_beam(state, attenuator, gain, phase)

      Save a beam to a Tx memory position

      parameters:
        state: int

          State number to save. Valid options are 0 to 120

        attenuator: bool

          Attenuator state for the beam position. True means the attenuator is in place.

        gain: int

          Gain value for the beam position. Valid settings are 0 to 127.

        phase: float

          Phase value for the beam position.

    property tx_attenuator

      Get/Set the Tx Attenuator state for the associated channel

    property tx_beam_state

      Get/Set the Channel Tx beam position used by RAM when all channels point to individual states. Valid states are 0-120.

    property tx_enable

      Get/Set the Tx enable state for the associated channel

    property tx_gain

      Get/Set the Tx Gain for the associated channel

    property tx_phase

      Get/Set the Tx Phase for the associated channel

  property array_device_number

    Device number in the array

  property beam_mem_enable

    Get/Set enable bit for RAM control vs. SPI control of the beam state

  property bias_dac_enable

    Get/Set enable for bias DACs

  property bias_dac_mode

    Get/Set BIAS_CTRL bit (Register 0x30[6]) which controls whether the bias DACs stay at “ON” value, or toggle with respect to T/R state.

  property bias_mem_enable

    Get/Set enable bit for RAM control vs. SPI control of the bias state

  property channel1

    Handle for the ADAR1000’s channel 1 object

  property channel2

    Handle for the ADAR1000’s channel 2 object

  property channel3

    Handle for the ADAR1000’s channel 3 object

  property channel4

    Handle for the ADAR1000’s channel 4 object

  property channels

    List of the ADAR1000’s channels, in order from 1 to 4

  property chip_id

    Chip ID including CSB and hardware address. Of the form “csbX_chipX” where csbX indicates the CSB line for the IC and chipX indicating the hardware address of the chip, 1-4.

  property common_mem_enable

    Get/Set the CHX_RAM_BYPASS bits to use either a common beam state for all channels set by registers 0x39 and 0x3A, or individual beam states set by registers 0x3D to 0x44.

  property common_rx_beam_state

    Get/Set the Rx beam position used by RAM when all channels point to a common state. Valid states are 0-120.

  property common_tx_beam_state

    Get/Set the Tx beam position used by RAM when all channels point to a common state. Valid states are 0-120.

  property external_tr_pin

    Get/Set which external T/R switch driver is used (“positive” = TR_SW_POS, “negative” = TR_SW_NEG)

  property external_tr_polarity

    Get/Set polarity of the T/R switch driver compared to the T/R state of the ADAR1000. True outputs 0V in Rx mode, False outputs either 3.3V or -5V, depending on which T/R switch driver is enabled.

  generate_clocks()

    Generate CLK cycles before pulsing RX_LOAD or TX_LOAD

  initialize(pa_off=- 2.5, pa_on=- 2.5, lna_off=- 2, lna_on=- 2)

    Suggested initialization routine after powerup

    parameters:
      pa_off: float

        Voltage to set the PA_BIAS_OFF values to during initialization

      pa_on: float

        Voltage to set the PA_BIAS_ON values to during initialization

      lna_off: float

        Voltage to set the LNA_BIAS_OFF values to during initialization

      lna_on: float

        Voltage to set the LNA_BIAS_ON values to during initialization

  latch_rx_settings()

    Latch in new Gain/Phase settings for the Rx

  latch_tx_settings()

    Latch in new Gain/Phase settings for the Tx

  property lna_bias_off

    Get/Set LNA_BIAS_OFF in voltage

  property lna_bias_on

    Get/Set LNA_BIAS_ON in voltage

  property lna_bias_out_enable

    Get/Set enable for LNA bias DAC output. Disable to allow for always-on self-biased LNAs

  property mode

    Get/Set the mode of operation for the device. Valid options are “rx”, “tx”, and “disabled”

  property pol_state

    Get/Set polarity switch state. True outputs -5V, False outputs 0V

  property pol_switch_enable

    Get/Set polarity switch driver enable state

  reset()

    Reset ADAR1000 to default settings

  property rx_bias_state

    Get/Set the Rx bias memory position when loading from RAM. Valid states are 1-7.

  property rx_lna_bias_current

    Get/Set Rx LNA bias current setting

  property rx_lna_enable

    Get/Set Rx LNA enable status

  property rx_sequencer_start

    Get/Set the Rx Sequencer’s starting position

  property rx_sequencer_stop

    Get/Set the Rx Sequencer’s ending position

  property rx_to_tx_delay_1

    Get/Set Rx to Tx Delay 1

  property rx_to_tx_delay_2

    Get/Set Rx to Tx Delay 2

  property rx_vga_enable

    Get/Set Rx VGA enable status

  property rx_vga_vm_bias_current

    Get/Set Rx VGA/Vector Modulator bias current setting

  property rx_vm_enable

    Get/Set Rx Vector Modulator enable status

  save_rx_bias(state, lna_bias_off, lna_bias_on, rx_vga_vm_bias_current, rx_lna_bias_current)

    Save a bias setting to an Rx memory position

    parameters:
      state: int

        State number to save. Valid options are 1 to 7

      lna_bias_off: float

        LNA_BIAS_OFF voltage

      lna_bias_on: float

        LNA_BIAS_ON voltage

      rx_vga_vm_bias_current: int

        Bias current setting for the Rx VGA and Vector Modulator

      rx_lna_bias_current: int

        Bias current setting for the Rx LNA

  save_tx_bias(state, pa1_bias_off, pa2_bias_off, pa3_bias_off, pa4_bias_off, pa1_bias_on, pa2_bias_on, pa3_bias_on, pa4_bias_on, tx_vga_vm_bias_current, tx_pa_bias_current)

    Save a bias setting to a Tx memory position

    parameters:
      state: int

        State number to save. Valid options are 1 to 7

      pa1_bias_off: float

        PA1_BIAS_OFF voltage

      pa2_bias_off: float

        PA2_BIAS_OFF voltage

      pa3_bias_off: float

        PA3_BIAS_OFF voltage

      pa4_bias_off: float

        PA4_BIAS_OFF voltage

      pa1_bias_on: float

        PA1_BIAS_ON voltage

      pa2_bias_on: float

        PA2_BIAS_ON voltage

      pa3_bias_on: float

        PA3_BIAS_ON voltage

      pa4_bias_on: float

        PA4_BIAS_ON voltage

      tx_vga_vm_bias_current: int

        Bias current setting for the Tx VGA and Vector Modulator

      tx_lna_bias_current: int

        Bias current setting for the Tx PA

  property sequencer_enable

    Get/Set sequencer enable status

  property temperature

    Get the temperature reading from the device

  property tr_source

    Get/Set TR source for the chip. Valid options are “external” or “spi”

  property tr_spi

    Get/Set T/R state using the SPI bit. Valid options are “tx” or “rx”

  property tr_switch_enable

    Get/Set T/R switch driver enable state

  property tx_bias_state

    Get/Set the Tx bias memory position when loading from RAM. Valid states are 1-7.

  property tx_pa_bias_current

    Get/Set Tx PA bias current setting

  property tx_pa_enable

    Get/Set Tx PA enable status

  property tx_sequencer_start

    Get/Set the Tx Sequencer’s starting position

  property tx_sequencer_stop

    Get/Set the Tx Sequencer’s ending position

  property tx_to_rx_delay_1

    Get/Set Tx to Rx Delay 1

  property tx_to_rx_delay_2

    Get/Set Tx to Rx Delay 2

  property tx_vga_enable

    Get/Set Tx VGA enable status

  property tx_vga_vm_bias_current

    Get/Set Tx VGA/Vector Modulator bias current setting

  property tx_vm_enable

    Get/Set Tx Vector Modulator enable status

class adi.adar1000.adar1000_array(uri='', chip_ids=None, device_map=None, element_map=None, device_element_map=None)

  Bases: `adi.context_manager.context_manager`

  ADAR1000 Beamformer Array

  parameters:
    uri: type=string

      URI of IIO context with ADAR1000 array

    chip_ids: type=list[string]

      List of strings identifying desired chip select and hardware ID for the ADAR1000. These strings are the labels coinciding with each chip select and hardware address and are typically in the form csbX_chipX. The csb line can be any number depending on how many are used in the system. The chip number will typically be 1-4 because each CSB line can control up to four ADAR1000s. Note that the order of the devices listed will correspond to the device numbers in the array map directly.

    device_map: type=list[list[int]]

      List with the map of where the ADAR1000s are in the array. Each entry in the map represents a row of ADAR1000s referenced by device number. For example, a map:

      > [[1, 3, 5, 7],
      > [2, 4, 6, 8]]

      represents an array of 8 ADAR1000s 4 wide and 2 tall.

    element_map: type=list[list[int]]

      List of lists with the map of where the array elements are in the physical array. Each entry in the map represents a row of array channels referenced by element number. For example, a map:

      > [[1, 5, 9, 13],
      > [2, 6, 10, 14],
      > [3, 7, 11, 15],
      > [4, 8, 12, 16]]

      represents an array of 16 elements (4 ADAR1000s) in a square array.

    device_element_map: type=dict[int, list[int]]

      Dictionary with the map of ADAR1000 to array element references. Each key in the map is a device number. The corresponding list of integers represents the array element numbers connected to that ADAR1000, in order of the ADAR1000’s channels. For example, an entry of {3: [10, 14, 13, 9]} connects ADAR1000 #3 to array elements 10, 14, 13, and 9. Element #10 is on the ADAR1000’s channel 1 while element #13 is on the ADAR1000’s channel 3.

  property all_rx_attenuators

    Get/Set all Rx Attenuator settings in the array. The format is a list of lists where each row in the array is a list entry in the larger list.

  property all_rx_gains

    Get/Set all Rx Gain settings in the array. The format is a list of lists where each row in the array is a list entry in the larger list.

  property all_rx_phases

    Get/Set all Rx Phase settings in the array. The format is a list of lists where each row in the array is a list entry in the larger list.

  property all_tx_attenuators

    Get/Set all Tx Attenuator settings in the array. The format is a list of lists where each row in the array is a list entry in the larger list.

  property all_tx_gains

    Get/Set all Tx Gain settings in the array. The format is a list of lists where each row in the array is a list entry in the larger list.

  property all_tx_phases

    Get/Set all Tx Phase settings in the array. The format is a list of lists where each row in the array is a list entry in the larger list.

  property device_map

    Get the map of ADAR1000s in the array

  property devices

    Dictionary representing all of the connected ADAR1000s. The dictionary key is the chip_id for each device.

  property element_map

    Get the map of elements in the array

  property element_spacing

    Get/Set the element spacing for the array in meters

  property elements

    Dictionary representing all of the connected ADAR1000 elements sorted by element number. The dictionary key is the element number for each device.

  property frequency

    Get/Set the board frequency in Hz

  initialize_devices()

    Initialize the ADAR1000s in the array

  latch_rx_settings()

    Latch in new Gain/Phase settings for the Rx

  latch_tx_settings()

    Latch in new Gain/Phase settings for the Tx

  property rx_azimuth

    Get the Rx azimuth angle for the array in degrees

  property rx_azimuth_phi

    Get the Rx azimuth phi angle for the array in degrees

  property rx_elevation

    Get the Rx elevation angle for the array in degrees

  property rx_elevation_phi

    Get the Rx elevation phi angle for the array in degrees

  steer_rx(azimuth, elevation)

    Steer the Rx array in a particular direction. This method assumes that the entire array is one analog beam.

    parameters:
      azimuth: float

        Desired beam angle in degrees for the horizontal direction.

      elevation: float

        Desired beam angle in degrees for the vertical direction.

  steer_tx(azimuth, elevation)

    Steer the Tx array in a particular direction. This method assumes that the entire array is one analog beam.

    parameters:
      azimuth: float

        Desired beam angle in degrees for the horizontal direction.

      elevation: float

        Desired beam angle in degrees for the vertical direction.

  property temperatures

    Get the temperature readings of the ADAR1000s in a dictionary

  property tx_azimuth

    Get the Tx azimuth angle for the array in degrees

  property tx_azimuth_phi

    Get the Tx azimuth phi angle for the array in degrees

  property tx_elevation

    Get the Tx elevation angle for the array in degrees

  property tx_elevation_phi

    Get the Tx elevation phi angle for the array in degrees