adar1000#

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

Bases: attribute, 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: 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.

calculate_phi(azimuth, elevation)#
Calculate the Φ angles to steer the 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 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(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 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