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 # 10Channel 2: Element # 14Channel 3: Element # 13Channel 4: Element # 9If 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 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.
- 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 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 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.
- 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
- 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 rx_bias_state
Get/Set the Rx bias memory position when loading from RAM. Valid states are 1-7.
- 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
- 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 devices
Dictionary representing all of the connected ADAR1000s. The dictionary key is the chip_id for each device.
- property elements
Dictionary representing all of the connected ADAR1000 elements sorted by element number. The dictionary key is the element number for each device.
- 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
- 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.