Ad9361 config proxy (ad9361_config_proxy)
Design
The AD9361 Config Proxy device worker proxy is a software wrapper for Analog Device’s No-OS software library. No-OS provides command and control of the AD9361 IC via a high-level API which ultimately controls SPI writes to the AD9361 register set. In order to provide functionality analogous to the No-OS API, this worker provides a one-to-one mapping between the No-OS function calls and worker properties.
A block diagram representation of the implementation is given in Figure 175:
Figure 175: ad9361_config_proxy block diagram.
Interface
<!-- OCS for AD9361 device control (ad9361_config.hdl) via ADI's no-OS software
(see ad9361/sw/ad9361_api.h from
https://github.com/analogdevicesinc/no-os.git). This OCS essentially provides
a one-to-one mapping between component properties and the no-OS API function
calls. Everything herein is specific to the no-os.git commit ID
e99393f2ba7f244c8328393e5d13d20e54a24419 (which was the latest commit from
the 2016_R2 branch at the time of writing this OWD) -->
<componentspec>
<!--******** WORKER-SPECIFIC PARAMETERS (independent of libad9361) ********-->
<property name='rx_nchannels' parameter='1' type='uchar' default='2'/>
<property name='tx_nchannels' parameter='1' type='uchar' default='2'/>
<!--******** PARAMETERS MATCHING MACROS/ENUMS IN LIBAD9361 HEADER FILES ********-->
<!-- macros in ad9361_api.h - applies to the ..._en_dis property values -->
<property name='ENABLE' parameter='1' type='uchar' default='1'/>
<property name='DISABLE' parameter='1' type='uchar' default='0'/>
<!-- macros in ad9361_api.h - used for rf_port_input -->
<property name='A_BALANCED' parameter='1' type='ulong' default='0'/>
<property name='B_BALANCED' parameter='1' type='ulong' default='1'/>
<property name='C_BALANCED' parameter='1' type='ulong' default='2'/>
<property name='A_N' parameter='1' type='ulong' default='3'/>
<property name='A_P' parameter='1' type='ulong' default='4'/>
<property name='B_N' parameter='1' type='ulong' default='5'/>
<property name='B_P' parameter='1' type='ulong' default='6'/>
<property name='C_N' parameter='1' type='ulong' default='7'/>
<property name='C_P' parameter='1' type='ulong' default='8'/>
<property name='TX_MON1' parameter='1' type='ulong' default='9'/>
<property name='TX_MON2' parameter='1' type='ulong' default='10'/>
<property name='TX_MON1_2' parameter='1' type='ulong' default='11'/>
<!-- macros in ad9361_api.h - used for tx_rf_port_output -->
<property name='TXA' parameter='1' type='ulong' default='0'/>
<property name='TXB' parameter='1' type='ulong' default='1'/>
<!-- en_state_machine_mode -->
<property name='ENSM_MODE_TX' parameter='1' type='long' default='0'/>
<property name='ENSM_MODE_RX' parameter='1' type='long' default='1'/>
<property name='ENSM_MODE_ALERT' parameter='1' type='long' default='2'/>
<property name='ENSM_MODE_FDD' parameter='1' type='long' default='3'/>
<property name='ENSM_MODE_WAIT' parameter='1' type='long' default='4'/>
<property name='ENSM_MODE_SLEEP' parameter='1' type='long' default='5'/>
<property name='ENSM_MODE_PINCTRL' parameter='1' type='long' default='6'/>
<property name='ENSM_MODE_PINCTRL_FDD_INDEP' parameter='1' type='long' default='7'/>
<!-- rx_lo_int_ext and tx_lo_int_ext -->
<property name='INT_LO' parameter='1' type='uchar' default='0'/>
<property name='EXT_LO' parameter='1' type='uchar' default='1'/>
<!-- rx_gain_control_mode -->
<property name='RF_GAIN_MGC' parameter='1' type='uchar' default='0'/>
<property name='RF_GAIN_FASTATTACK_AGC' parameter='1' type='uchar' default='1'/>
<property name='RF_GAIN_SLOWATTACK_AGC' parameter='1' type='uchar' default='2'/>
<property name='RF_GAIN_HYBRID_AGC' parameter='1' type='uchar' default='3'/>
<!-- ad9361.h's fir_dest enum (applies to set rx_fir_config.rx and set tx_fir_config.tx -->
<property name='FIR_TX1' parameter='1' type='uchar' default='0x01'/>
<property name='FIR_TX2' parameter='1' type='uchar' default='0x02'/>
<property name='FIR_TX1_TX2' parameter='1' type='uchar' default='0x03'/>
<property name='FIR_RX1' parameter='1' type='uchar' default='0x81'/>
<property name='FIR_RX2' parameter='1' type='uchar' default='0x82'/>
<property name='FIR_RX1_RX2' parameter='1' type='uchar' default='0x83'/>
<property name='FIR_IS_RX' parameter='1' type='uchar' default='0x80'/>
<!-- ad9361.h definitions (applies to one_rx_one_tx_mode_use_... values) -->
<property name='RX_1' parameter='1' type='uchar' default='1'/>
<property name='RX_2' parameter='1' type='uchar' default='2'/>
<property name='TX_1' parameter='1' type='uchar' default='1'/>
<property name='TX_2' parameter='1' type='uchar' default='2'/>
<!-- ad9361.h's ad9361_pdata_rx_freq enum (applies to ...trx_path_clks property's array indices) -->
<property name='BPLL_FREQ' parameter='1' type='uchar' default='0'/>
<property name='ADC_FREQ' parameter='1' type='uchar' default='1'/>
<property name='R2_FREQ' parameter='1' type='uchar' default='2'/>
<property name='R1_FREQ' parameter='1' type='uchar' default='3'/>
<property name='CLKRF_FREQ' parameter='1' type='uchar' default='4'/>
<property name='RX_SAMPL_FREQ' parameter='1' type='uchar' default='5'/>
<property name='NUM_RX_CLOCKS' parameter='1' type='uchar' default='6'/>
<!-- ad9361.h's ad9361_pdata_tx_freq enum (applies to ...trx_path_clks property's array indices) -->
<property name='IGNORE' parameter='1' type='uchar' default='0'/>
<property name='DAC_FREQ' parameter='1' type='uchar' default='1'/>
<property name='T2_FREQ' parameter='1' type='uchar' default='2'/>
<property name='T1_FREQ' parameter='1' type='uchar' default='3'/>
<property name='CLKTF_FREQ' parameter='1' type='uchar' default='4'/>
<property name='TX_SAMPL_FREQ' parameter='1' type='uchar' default='5'/>
<property name='NUM_TX_CLOCKS' parameter='1' type='uchar' default='6'/>
<!-- enums in ad9361.h (applies to bist_tone mode value and bist_prbs value) -->
<property name='BIST_DISABLE' parameter='1' type='ulong' default='0'/>
<property name='BIST_INJ_TX' parameter='1' type='ulong' default='1'/> <!-- not recommended for use with bist_prbs -->
<property name='BIST_INJ_RX' parameter='1' type='ulong' default='2'/>
<!-- macros in ad9361_api.h (applies to no_ch_mode property value) -->
<property name='MODE_1x1' parameter='1' type='uchar' default='1'/>
<property name='MODE_2x2' parameter='1' type='uchar' default='2'/>
<!-- macros in ad9361_api.h (applies to trx_fir_rate_gov property value -->
<property name='HIGHEST_OSR' parameter='1' type='ulong' default='0'/>
<property name='NOMINAL_OSR' parameter='1' type='ulong' default='1'/>
<!--**** PROPERTIES CORRESPONDING TO libad9361 "STANDARD" API (ad9361_api.h)****-->
<property name='ad9361_rf_phy' type='struct' volatile='1' description=''>
<member name='clk_refin' type='struct'>
<member name='rate' type='ulong'/>
</member>
<member name='pdata' type='struct'>
<member name='rx2tx2' type='bool' description='When this value is false, the read values from the second index of following properties should be ignored: rx_gain_control_mode, rx_fir_config_read, tx_fir_config_read, and tx_rssi. When this value is false, the written values to the second index of the following properties will not be applied: rx_rf_gain, rx_gain_control_mode, and tx_attenuation.'/>
<member name='fdd' type='bool'/>
<member name='use_extclk' type='bool'/>
<member name='dcxo_coarse' type='ulong'/>
<member name='dcxo_fine' type='ulong'/>
<member name='rx1tx1_mode_use_rx_num' type='ulong'/>
<member name='rx1tx1_mode_use_tx_num' type='ulong'/>
</member>
</property>
<property name='ad9361_init' type='struct' initial='1' default='reference_clk_rate 40e6,one_rx_one_tx_mode_use_rx_num 1,one_rx_one_tx_mode_use_tx_num 1,frequency_division_duplex_mode_enable 1,xo_disable_use_ext_refclk_enable 0,two_t_two_r_timing_enable 0,pp_tx_swap_enable 1,pp_rx_swap_enable 1,tx_channel_swap_enable 1,rx_channel_swap_enable 1,delay_rx_data 0,rx_data_clock_delay 0,rx_data_delay 4,tx_fb_clock_delay 7,tx_data_delay 0' description='Initialize the AD9361 part.'>
<member name='reference_clk_rate' type='ulong'/>
<member name='one_rx_one_tx_mode_use_rx_num' type='uchar' description='Set to RX_1 or RX_2 to set desired channel in 1x1 mode. For example, When set to RX_2 mode, the R1 and R2 data paths in the timing diagrams will be swapped.'/>
<member name='one_rx_one_tx_mode_use_tx_num' type='uchar' description='Set to TX_1 or TX_2 to set desired channel in 1x1 mode. For example, When set to TX_2 mode, the T1 and T2 data paths in the timing diagrams will be swapped.'/>
<member name='frequency_division_duplex_mode_enable' type='uchar' description='Acceptable values are 1 for true and 0 for false.'/>
<member name='xo_disable_use_ext_refclk_enable' type='uchar'/>
<member name='two_t_two_r_timing_enable' type='bool' description='Setting to true forces 2R2T timing regardless of number of enabled RX/TX channels. Recommended to set to false if only using at most one RX or one TX channel for the duration of an application (this will lower needed DATA_CLK_P rate). Setting to true has the advantage of ensuring that the timing diagram for each of the RX and TX data paths will not change when dynamically enabling/disabling any of the 4 possible channels (2 RX, 2 TX) at runtime - this comes at the cost of a higher required DATA_CLK_P rate).'/>
<member name='pp_tx_swap_enable' type='uchar' description='Setting to 1 swaps I and Q (performs spectral inversion). Setting to 0 does not swap.'/>
<member name='pp_rx_swap_enable' type='uchar' description='Setting to 1 swaps I and Q (performs spectral inversion). Setting to 0 does not swap.'/>
<member name='tx_channel_swap_enable' type='uchar' description='Setting to 1 swaps RX channels 0 and 1. Setting to 0 does not swap.'/>
<member name='rx_channel_swap_enable' type='uchar' description='Setting to 1 swaps RX channels 0 and 1. Setting to 0 does not swap.'/>
<member name='delay_rx_data' type='ulong' description="Sets the delay of the Rx data relative to Rx frame, measured in 1/2 DATA_CLK cycles for DDR and full DATA_CLK cycles for SDR. Valid values are 0, 1, 2, or 3."/>
<member name='rx_data_clock_delay' type='ulong'/>
<member name='rx_data_delay' type='ulong'/>
<member name='tx_fb_clock_delay' type='ulong' description="Delay in multiples of 0.3 ns to add to the FB_CLK_P pin inside the AD9361 in order to account for the setup/hold requirements of the FB_CLK_P and TX data bus pins. Valid range is [0 15]. This value should be calculated using the setup/hold requiremed values and the reported skews in the FPGA bitstream timing report for the FB_CLK_P, TX data bus, and TX_FRAME_P pins."/>
<member name='tx_data_delay' type='ulong' description="Delay in multiples of 0.3 ns to add to the TX data bus and TX_FRAME_P pins inside the AD9361 in order to account for their setup/hold requirements. Valid range is [0 15]. This value should be calculated using the setup/hold requiremed values and the reported skews in the FPGA bitstream timing report for the FB_CLK_P, TX data bus, and TX_FRAME_P pins."/>
</property>
<property name='en_state_machine_mode' type='ulong' volatile='1' writable='1' description='Get/set the Enable State Machine (ENSM) mode. Value should be set using one of the ENSM_MODE parameters.'/>
<property name='rx_rf_gain' arraylength='rx_nchannels' type='long' volatile='1' writable='1' description="Get/set the receive RF gain for the selected channel. The gain is in dB. Note that the written value to the second index of this property will not be applied when this worker's ad9361_rf_phy.pdata.rx2tx2 property member is false."/>
<property name='rx_rf_bandwidth' type='ulong' volatile='1' writable='1' default='18e6' description='Get/set the RX RF bandwidth. The bandwidth is in Hz.'/>
<property name='rx_sampling_freq' type='ulong' volatile='1' writable='1' description='Get/set the RX sampling frequency. The frequency is in Hz.'/>
<property name='rx_lo_freq' type='ulonglong' volatile='1' writable='1' default='2.4e9' description='Get/set the RX LO frequency. The frequency is in Hz.'/>
<property name='rx_lo_int_ext' type='uchar' writable='1' default='INT_LO' description='Switch between the internal and external LO. The RX LO is affected.'/>
<property name='rx_rssi' arraylength='rx_nchannels' type='struct' volatile='1' description='Get the RSSI for the selected channel.'>
<member name='ant' type='ulong' description='Antenna number for which RSSI is reported.'/>
<member name='symbol' type='ulong' description='Runtime RSSI.'/>
<member name='preamble' type='ulong' description='Initial RSSI.'/>
<member name='multiplier' type='long' description='Multiplier to convert reported RSSI.'/>
<member name='duration' type='uchar' description='Duration to be considered for measuring.'/>
</property>
<property name='rx_gain_control_mode' arraylength='rx_nchannels' type='uchar' volatile='1' writable='1' default='RF_GAIN_MGC,RF_GAIN_MGC' description="Get/set the gain control mode for the selected channel. Note that, when this worker's ad9361_rf_phy.pdata.rx2tx2 property member is false, the value read from the second index of this property should be ignored and the value written to the second index won't be applied."/>
<property name='rx_fir_config_write' type='struct' default='rx 0x83,rx_gain 0,rx_dec 1,rx_coef {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},rx_coef_size 128' writable='1' >
<member name='rx' type='ulong' />
<member name='rx_gain' type='long' />
<member name='rx_dec' type='ulong' />
<member name='rx_coef' arraylength='128' type='short' />
<member name='rx_coef_size' type='uchar' />
<!-- member name='rx_path_clks' arraylength='6' type='ulong' /--> <!-- rx_path_clks is a member of the struct but ad9361_set_rx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
<!-- member name='rx_bandwidth' type='ulong' /--> <!-- rx_bandwidth is a member of the struct but ad9361_set_rx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
</property>
<property name='rx_fir_config_read' arraylength='rx_nchannels' type='struct' volatile='1' description="Note that the readback value of the second index of this property should be ignored when this worker's ad9361_rf_phy.pdata.rx2tx2 property member is false." >
<!-- member name='rx' type='ulong' description=''/--> <!-- rx is a member of the struct but the information conveyed is redundant -->
<member name='rx_gain' type='long' />
<member name='rx_dec' type='ulong' />
<member name='rx_coef' arraylength='128' type='short' />
<member name='rx_coef_size' type='uchar' />
<!-- member name='rx_path_clks' arraylength='6' type='ulong' /--> <!-- rx_path_clks is a member of the struct but ad9361_set_rx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
<!-- member name='rx_bandwidth' type='ulong' /--> <!-- rx_bandwidth is a member of the struct but ad9361_set_rx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
</property>
<property name='rx_fir_en_dis' type='uchar' volatile='1' writable='1' default='DISABLE' description='Get/set the status of the RX FIR filter. The status is one of the parameter values ENABLE or DISABLE.'/>
<property name='rx_rfdc_track_en_dis' type='uchar' volatile='1' writable='1' default='DISABLE' description='Get/set the status of the RX RFDC Tracking. The status is one of the parameter values ENABLE or DISABLE.'/>
<property name='rx_bbdc_track_en_dis' type='uchar' volatile='1' writable='1' default='DISABLE' description='Get/set the status of the RX BasebandDC Tracking. The status is one of the parameter values ENABLE or DISABLE.'/>
<property name='rx_quad_track_en_dis' type='uchar' volatile='1' writable='1' default='DISABLE' description='Get/set the status of the RX Quadrate Tracking. The status is one of the parameter values ENABLE or DISABLE.'/>
<property name='rx_rf_port_input' type='ulong' volatile='1' writable='1' default='A_BALANCED' description='Get/set the RX RF input port. Accepted values: one of the parameter values A_BALANCED, B_BALANCED, C_BALANCED, A_N, A_P, B_N, B_P, C_N, C_P, TX_MON1, TX_MON_2, TX_MON1_2. '/>
<property name='rx_fastlock_store' type='ulong' writable='1' description='Store RX fastlock profile. Writing a value will initiate the process of creating an RX fast lock profile and store it in the AD9361 in the RX profile index indicated by the value written.'/>
<property name='rx_fastlock_recall' type='ulong' writable='1' description='Recall specified RX fastlock profile. Writing a value will initiate the process of applying an RX fast lock profile that was previously stored inside the AD9361. The written value indicates the index of the RX profile to be applied.'/>
<property name='rx_fastlock_load' type='struct' writable='1' >
<member name='ad9361_profile_id' type='ulong' description="Profile ID/index of the AD9361 profile which is to be overwritten by the indicated worker profile."/>
<member name='worker_profile_id' type='ulong' description="Profile ID of the worker profile which will be loaded into the AD9361."/>
</property>
<property name='rx_fastlock_save' type='struct' writable='1' >
<member name='ad9361_profile_id' type='ulong' description="Profile ID/index of the AD9361 profile which will be saved into a worker profile (i.e. in memory within this worker)."/>
<member name='worker_profile_id' type='ulong' description="Profile ID to assign to the profile saved in this worker's memory. This is for future record keeping of profiles saved within this worker."/>
</property>
<property name='tx_attenuation' arraylength='tx_nchannels' type='ulong' volatile='1' writable='1' default='1000,1000' description="Get/set the transmit attenuation for the selected channel. The attenuation is in millidB. Values written will be rounded down to the nearest 250 millidB. Note that the written value to the second index of this property will not be applied when this worker's ad9361_rf_phy.pdata.rx2tx2 property member is false."/>
<property name='tx_rf_bandwidth' type='ulong' volatile='1' writable='1' default='18e6' description='Get/set the TX RF bandwidth. The bandwidth is in Hz.'/>
<property name='tx_sampling_freq' type='ulong' volatile='1' writable='1' description='Get/set the TX sampling frequency. The frequency is in Hz.'/>
<property name='tx_lo_freq' type='ulonglong' volatile='1' writable='1' default='2.4e9' description='Get/set the TX LO frequency. The frequency is in Hz.'/>
<property name='tx_lo_int_ext' type='uchar' writable='1' default='INT_LO' description='Switch between the internal and external LO. The TX LO is affected.'/>
<property name='tx_fir_config_write' type='struct' default='tx 0x03,tx_gain 0,tx_int 1,tx_coef {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},tx_coef_size 128' writable='1' >
<member name='tx' type='ulong' />
<member name='tx_gain' type='long' />
<member name='tx_int' type='ulong' />
<member name='tx_coef' arraylength='128' type='short' />
<member name='tx_coef_size' type='uchar' />
<!-- member name='tx_path_clks' arraylength='6' type='ulong' /--> <!-- tx_path_clks is a member of the struct but ad9361_set_tx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
<!-- member name='tx_bandwidth' type='ulong' /--> <!-- tx_bandwidth is a member of the struct but ad9361_set_tx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
</property>
<property name='tx_fir_config_read' arraylength='tx_nchannels' type='struct' volatile='1' description="Note that the readback value of the second index of this property should be ignored when this worker's ad9361_rf_phy.pdata.rx2tx2 property member is false." >
<!-- member name='tx' type='ulong' description=''/--> <!-- tx is a member of the struct but the information conveyed is redundant -->
<member name='tx_gain' type='long' />
<member name='tx_int' type='ulong' />
<member name='tx_coef' arraylength='128' type='short' />
<member name='tx_coef_size' type='uchar' />
<!-- member name='tx_path_clks' arraylength='6' type='ulong' /--> <!-- tx_path_clks is a member of the struct but ad9361_set_tx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
<!-- member name='tx_bandwidth' type='ulong' /--> <!-- tx_bandwidth is a member of the struct but ad9361_set_tx_fir_config ignores this value, commented it out to avoid the scenario where end user thinks they are setting this value when they really aren't -->
</property>
<property name='tx_fir_en_dis' type='uchar' volatile='1' writable='1' default='DISABLE' description='Get/set the status of the TX FIR filter. The status is one of the parameter values ENABLE or DISABLE.'/>
<property name='tx_rssi' arraylength='tx_nchannels' type='ulong' volatile='1' description="Get the TX RSSI for the selected channel. The value read represents the RSSI in millidB. Note that the readback value of the second index of this property should be ignored when this worker's ad9361_rf_phy.pdata.rx2tx2 property member is false."/>
<property name='tx_rf_port_output' type='ulong' volatile='1' writable='1' default='TXA' description='Get/set the TX RF output port.'/>
<property name='tx_auto_cal_en_dis' type='uchar' volatile='1' writable='1' default='DISABLE' description='Get/set the status of the auto calibration flag. The value should be one of the parameter values ENABLE or DISABLE.'/>
<property name='tx_fastlock_store' type='ulong' writable='1' description='Store TX fastlock profile. Writing a value will initiate the process of creating a TX fast lock profile and store it in the AD9361 in the TX profile index indicated by the value written.'/>
<property name='tx_fastlock_recall' type='ulong' writable='1' description='Recall specified TX fastlock profile. Writing a value will initiate the process of applying an TX fast lock profile that was previously stored inside the AD9361. The written value indicates the index of the TX profile to be applied.'/>
<property name='tx_fastlock_load' type='struct' writable='1' >
<member name='ad9361_profile_id' type='ulong' description="Profile ID/index of the AD9361 profile which is to be overwritten by the indicated worker profile."/>
<member name='worker_profile_id' type='ulong' description="Profile ID of the worker profile which will be loaded into the AD9361."/>
</property>
<property name='tx_fastlock_save' type='struct' writable='1' >
<member name='ad9361_profile_id' type='ulong' description="Profile ID/index of the AD9361 profile which will be saved into a worker profile (i.e. in memory within this worker)."/>
<member name='worker_profile_id' type='ulong' description="Profile ID to assign to the profile saved in this worker's memory. This is for future record keeping of profiles saved within this worker."/>
</property>
<property name='trx_path_clks' type='struct' volatile='1' writable='1' description='Set the RX and TX path rates.'>
<member name='rx_path_clks' arraylength='NUM_RX_CLOCKS' type='ulong' description='RX path rates buffer. Indices are indicated bye one of the parameter values BPLL_FREQ, ADC_FREQ, R2_FREQ, R1_FREQ, CLKRF_FREQ, and RX_SAMPL_FREQ.'/>
<member name='tx_path_clks' arraylength='NUM_TX_CLOCKS' type='ulong' description='TX path rates buffer. Indices are indicated bye one of the parameter values IGNORE, DAC_FREQ, T2_FREQ, T1_FREQ, CLKTF_FREQ, and TX_SAMPL_FREQ.'/>
</property>
<property name='no_ch_mode' type='uchar' writable='1' description='Set the number of channels mode. Accepted values are one of the parameter values MODE_1x1 or MODE_2x2.'/>
<!--property name='do_mcs'/--> <!-- TODO / FIXME - fill in this functionality, which would require synchronization with another instance of this worker somehow... -->
<property name='trx_fir_en_dis' type='uchar' writable='1' description='Enable/disable the TRX FIR filters. Accepted values are one of the parameter values ENABLE or DISABLE.'/>
<property name='trx_rate_gov' type='ulong' volatile='1' writable='1' description='Get/set the OSR rate governor. Accepted values are one of the parameter values HIGHEST_OSR or NOMINAL_OSR.'/>
<property name='do_calib' type='struct' writable='1' description='Perform the selected calibration.'>
<member name='cal' type='ulong' description='The selected calibration. Accepted values are one of the parameter values TX_QUAD_CAL or RFDC_CAL.'/>
<member name='arg' type='long' description='For TX_QUAD_CAL - the optional RX phase value overwrite (set to zero).'/>
</property>
<property name='trx_load_enable_fir' type='struct' writable='1' description='Load and enable TRX FIR filters configurations.'>
<member name='rx' type='ulong'/>
<member name='rx_gain' type='long' />
<member name='rx_dec' type='ulong'/>
<member name='rx_coef' arraylength='128' type='short'/>
<member name='rx_coef_size' type='uchar'/>
<member name='rx_path_clks' arraylength='6' type='ulong'/>
<member name='rx_bandwidth' type='ulong'/>
<member name='tx' type='ulong'/>
<member name='tx_gain' type='long' />
<member name='tx_int' type='ulong'/>
<member name='tx_coef' arraylength='128' type='short'/>
<member name='tx_coef_size' type='uchar'/>
<member name='tx_path_clks' arraylength='6' type='ulong'/>
<member name='tx_bandwidth' type='ulong'/>
</property>
<property name='do_dcxo_tune_coarse' type='ulong' writable='1' description='Do DCXO coarse tuning.'/>
<property name='do_dcxo_tune_fine' type='ulong' writable='1' description='Do DCXO fine tuning.'/>
<property name='temperature' type='long' volatile='1' description='Get the temperature in millidegrees C .'/>
<!--****** PROPERTIES CORRESPONDING TO libad9361 "ADVANCED" API (ad9361.h) *****-->
<property name='bist_loopback' type='long' volatile='1' writable='1' description="BIST loopback mode. Valid values are 0 (disables loopback), 1 (loopback AD9361 internal TX-RX), or 2 (loopback (FPGA internal RX-.TX). While a value of 2 is handled by no-os, it is not expected to work with OpenCPI's AD9361 device workers"/>
<property name='bist_prbs' type='uchar' volatile='1' writable='1' description='BIST mode. Valid values are either BIST_DISABLE or BIST_INJ_RX.'/>
<property name='bist_tone' type='struct' volatile='1' writable='1' description='BIST tone. Valid values are either BIST_DISABLE, BIST_INJ_TX, or BIST_INJ_RX.'>
<member name='mode' type='uchar'/>
<member name='freq_Hz' type='ulong'/>
<member name='level_dB' type='ulong'/>
<member name='mask' type='ulong' description='Valid values are 0, 1, 2, 4, or 8 for no masking, chan 1 I, chan 1 Q, chan 2 I, chan 2 Q masking, respectively.'/>
</property>
<!-- PROPERTIES CORRESPONDING TO FUNCTIONALITY IMPLEMENTED OUTSIDE libad9361 -->
<property name='DATA_CLK_Delay' type='ushort'
volatile='1'
description='This value affects the DATA_CLK
data delay. The typical delay is
approximately 0.3ns/LSB. Minimum delay
setting is 0x0 and maximum delay is 0xF.'/>
<property name='Rx_Data_Delay' type='ushort'
volatile='1'
description='This value affects the DATA_CLK
data delay. The typical delay is
approximately 0.3ns/LSB. Rx Frame is delayed
the same amount as the data port bits.
Minimum delay setting is 0x0 and maximum
delay is 0xF.'/>
<property name='FB_CLK_Delay' type='ushort'
volatile='1'
description='This setting functions the same as
DATA_CLK_Delay but affects the FB_CLK.'/>
<property name='Tx_Data_Delay' type='ushort'
volatile='1'
description='This setting functions the same as
Rx_Data_Delay but affects the Tx_FRAME and TX
Data bits. Tx frame sync is delayed the same
amount as the data port bits.'/>
<property name='THB3_Enable_and_Interp' type='enum'
enums='Interpolate_by_1_no_filtering,
Interpolate_by_2_half_band_filter,
Interpolate_by_3_and_filter,
Invalid'
volatile='1'
description='Note that there are
several functions that calculate
digital filter settings. The
ad9361_calculate_rf_clock_chain
function calculates all Rx and Tx
rates. This sets interpolation of
the digital filter that feeds the
DAC. The purpose of this property is
to expose this value as it exists on
the AD9361 IC in order to precisely
calculate the current on-chip
(in-situ) nominal DAC clock rate
(No-OS does not provide a method for
high-precision calculation of the
nominal DAC rate).'/>
<property name='THB2_Enable' type='bool'
volatile='1'
description='Note that there are several
functions that calculate digital filter
settings. The ad9361_calculate_rf_clock_chain
function calculates all Rx and Tx rates.
Setting to true enables the interpolate-by-2
THB2 half-band filter. Setting to false
bypasses the filter. The purpose of this
property is to expose this value as it exists
on the AD9361 IC in order to precisely
calculate the current on-chip (in-situ) nominal
DAC clock rate (No-OS does not provide a method
for high-precision calculation of the nominal
DAC rate).'/>
<property name='THB1_Enable' type='bool'
volatile='1'
description='Note that there are several
functions that calculate digital filter
settings. The ad9361_calculate_rf_clock_chain
function calculates all Rx and Tx rates.
Setting to true enables the interpolate-by-2
THB1 half-band filter. Setting to false
bypasses the filter. The purpose of this
property is to expose this value as it exists
on the AD9361 IC in order to precisely
calculate the current on-chip (in-situ) nominal
DAC clock rate (No-OS does not provide a method
for high-precision calculation of the nominal
DAC rate).'/>
<property name='RHB3_Enable_and_Decimation' type='enum'
enums='Decimate_by_1_no_filtering,
Decimate_by_2_half_band_filter,
Decimate_by_3_and_filter,
Invalid'
volatile='1'
description='Note that there are
several functions that calculate
digital filter settings. The
ad9361_calculate_rf_clock_chain
function calculates all Rx and
Tx rates. This sets decimation
of the first filter stage after
the ADC. The purpose of this
property is to expose this value
as it exists on the AD9361 IC
in order to precisely calculate
the current on-chip (in-situ)
nominal ADC clock rate (No-OS
does not provide a method for
high-precision calculation of
the nominal ADC rate).'/>
<property name='RHB2_Enable' type='bool'
volatile='1'
description='Note that there are several
functions that calculate digital filter
settings. The ad9361_calculate_rf_clock_chain
function calculates all Rx and Tx rates.
Setting to true enables the decimate-by-2
RHB2 half-band filter. Setting to false
bypasses the filter. The purpose of this
property is to expose this value as it exists
on the AD9361 IC in order to precisely
calculate the current on-chip (in-situ) nominal
ADC clock rate (No-OS does not provide a method
for high-precision calculation of the nominal
ADC rate).'/>
<property name='RHB1_Enable' type='bool'
volatile='1'
description='Note that there are several
functions that calculate digital filter
settings. The ad9361_calculate_rf_clock_chain
function calculates all Rx and Tx rates.
Setting to true enables the decimate-by-2
RHB1 half-band filter. Setting to false
bypasses the filter. The purpose of this
property is to expose this value as it exists
on the AD9361 IC in order to precisely
calculate the current on-chip (in-situ) nominal
ADC clock rate (No-OS does not provide a method
for high-precision calculation of the nominal
ADC rate).'/>
<property name='DAC_Clk_div2' type='bool'
volatile='1'
description='The ad9361_calculate_rf_clock_chain
function configures this value. When false,
the DAC clock rate equals the ADC clock rate.
When true, the DAC clock equals 1/2 of the ADC
rate. The purpose of this property is to
expose this value as it exists on the AD9361
IC in order to precisely calculate the current
on-chip (in-situ) nominal DAC clock rate
(No-OS does not provide a method for
high-precision calculation of the nominal DAC
rate).'/>
<property name='BBPLL_Divider' type='enum'
enums='invalid,1,2,3,4,5,6'
volatile='1'
description='The ad9361_bbpll_set_rate function
controls this value. The ADC clock rate
equals the BBPLL divided by the factor which
is a function of this value, shown in the
following equation.
ADC Clock Rate=BBPLL Clock Rate /
[2^(BBPLL Divider)].
BBPLL Divider is valid from 1 through 6.'/>
<property name='Fractional_BB_Frequency_Word' type='ulong'
volatile='1'
description='Fractional BB
Frequency Word.'/>
<property name='Integer_BB_Frequency_Word' type='ushort'
volatile='1'
description='Integer BB Frequency
Word.'/>
<property name='BBPLL_Ref_Clock_Scaler' type='float'
volatile='1'
description='Ref Clock Scaler. The
reference clock frequency is scaled
before it enters the BBPLL. Only
possible scaler values are: x1;
x1/2; x1/4; x2.'/>
<property name='Tx_BBF_Tune_Divider' type='enum'
enums='invalid,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511'
volatile='1'
description='Tx BBF Tune Divider. The
baseband Tx analog filter calibration
sets the 3dB cutoff frequency of the
third-order Butterworth Tx anti-imaging
filter based on the Tx BBF Tune
Divider. The third-order Tx filter is
located just after the DAC in the Tx
signal path and is normally calibrated
to 1.6x the BBBW. Note that the BBBW is
half the complex bandwidth. To set the
cutoff frequency value, the BBPLL is
divided down using a divide by 1 to 511
divider dedicated to the Tx tuner
block.'/>
<property name='Tx_Secondary_Filter_Resistor' type='enum'
enums='invalid,800,400,200,100'
volatile='1'
description='Secondary Tx filter
resistor, which, along with
the secondary Tx Capacitor,
sets the 3 dB corner frequency
of the secondary single-pole
Tx RC filter via the equation
1/(2*pi*R*C). Value is
represented in ohms.'/>
<property name='Tx_Secondary_Filter_Capacitor' type='ushort'
volatile='1'
description='Secondary Tx
filter capacitor, which,
along with the secondary Tx
Resistor, sets the 3 dB
corner frequency of the
secondary single-pole Tx RC
filter via the equation
1/(2*pi*R*C). Resolution:
1pF/LSB. Total capacitance
(C in previous equation) is
12pF + (
Tx_Secondary_Filter_Capacitor
\*1pF)'/>
<property name='Rx_BBF_Tune_Divide' type='enum'
enums='invalid,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511'
volatile='1'
description='Rx BBF Tune Divide. The
tuning algorithm generates a tune clock
derived from the BBPLL frequency. This
divider outputs the tune clock, set per
for following equation. Rx BBF Tune
Divider[8:0] = ceil(BBPLL Frequency x
ln(2) / (BBBW x 1.4 x 2 x pi)). The
range of the divider is 1 to 511.'/>
<property name='bb_pll_is_locked' type='bool' volatile='1'/>
<property name='rx_pll_is_locked' type='enum' enums='false,true,unknown' volatile='1'/>
<property name='rx_fastlock_delete' type='ulong' writable='1' description="Performs a deletion of an RX fastlock profile saved in this worker's memory. The profile which is deleted is the one whose profile ID matches the value written to this property."/>
<property name='tx_pll_is_locked' type='enum' enums='false,true,unknown' volatile='1'/>
<property name='tx_fastlock_delete' type='ulong' writable='1' description="Performs a deletion of an RX fastlock profile saved in this worker's memory. The profile which is deleted is the one whose profile ID matches the value written to this property."/>
<property name='rx_vco_divider' type='enum' enums='2,4,8,16,32,64,128,external_2,invalid' volatile='1'/>
<property name='rx_vco_n_integer' type='ushort' volatile='1'/>
<property name='rx_vco_n_fractional' type='ulong' volatile='1'/>
<property name='Rx_Ref_Divider' type='float'
volatile='1'
description='Rx Ref Divider. This controls the
Rx path divider which scales the rate of the
analog clock which is input to the Rx PLL
Synthesizer (which generates the Rx LO
clock). Only possible ratios are: 1, 1/2,
1/4, 2. The purpose of this property is to
expose this value as it exists on the AD9361
IC in order to precisely calculate the
current on-chip (in-situ) nominal Rx LO
frequency value (No-OS does not provide a
method for high-precision calculation of the
nominal LO frequencies).'/>
<property name='tx_vco_divider' type='enum' enums='2,4,8,16,32,64,128,external_2,invalid' volatile='1'/>
<property name='tx_vco_n_integer' type='ushort' volatile='1'/>
<property name='tx_vco_n_fractional' type='ulong' volatile='1'/>
<property name='Tx_Ref_Divider' type='float'
volatile='1'
description='Tx Ref Divider. This controls the
Tx path divider which scales the rate of the
analog clock which is input to the Tx PLL
Synthesizer (which generates the Tx LO
clock). Only possible ratios are: 1, 1/2,
1/4, 2. The purpose of this property is to
expose this value as it exists on the AD9361
IC in order to precisely calculate the
current on-chip (in-situ) nominal Tx LO
frequency value (No-OS does not provide a
method for high-precision calculation of the
nominal LO frequencies).'/>
<property name='Tx_Channel_Swap' type='bool' volatile='1' description="Setting this to true swaps the positions of Tx1 and Tx2 samples."/>
<property name='Rx_Channel_Swap' type='bool' volatile='1' description="Setting this to true swaps the positions of Rx1 and Rx2 samples."/>
<property name='LVDS' type='bool' volatile='1' description="Value is true if bitstream monitored by instance of this worker was built to use LVDS mode for Data/clock/frame signals, and false if CMOS mode was used."/>
<property name='single_port' type='bool' volatile='1' description="Value is true if bitstream monitored by instance of this worker was built to use single port, and false if dual ports."/>
<property name='swap_ports' type='bool' volatile='1' description="Value is true if bitstream monitored by instance of this worker was built to swap Port 0 and Port 1, and false if there was no swap."/>
<property name='half_duplex' type='bool' volatile='1' description="Value is true if bitstream monitored by instance of this worker was built to use half duplex mode, and false if full duplex mode."/>
<property name='data_rate_config' type='enum' enums='SDR,DDR' volatile='1' description="Value indicates which data rate mode (SDR/DDR) the bitstream was built to use."/>
<property name='DATA_CLK_P_rate_Hz' type='double' volatile='1'/>
<property name='BIST_Mask_Channel_2_Q_data' type='bool' volatile='1' writable='1' description='Setting zeros out Channel 2 Q data.'/> <!-- BIST mode only? -->
<property name='BIST_Mask_Channel_2_I_data' type='bool' volatile='1' writable='1' description='Setting zeros out Channel 2 I data.'/> <!-- BIST mode only? -->
<property name='BIST_Mask_Channel_1_Q_data' type='bool' volatile='1' writable='1' description='Setting zeros out Channel 1 Q data.'/> <!-- BIST mode only? -->
<property name='BIST_Mask_Channel_1_I_data' type='bool' volatile='1' writable='1' description='Setting zeros out Channel 1 I data.'/> <!-- BIST mode only? -->
</componentspec>
Properties
rx_nchannelsType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
tx_nchannelsType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
ENABLEType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
DISABLEType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
A_BALANCEDType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
B_BALANCEDType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
C_BALANCEDType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
A_NType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
3
A_PType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
4
B_NType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
5
B_PType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
6
C_NType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
7
C_PType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
8
TX_MON1Type:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
9
TX_MON2Type:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
10
TX_MON1_2Type:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
11
TXAType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
TXBType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
ENSM_MODE_TXType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
ENSM_MODE_RXType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
ENSM_MODE_ALERTType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
ENSM_MODE_FDDType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
3
ENSM_MODE_WAITType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
4
ENSM_MODE_SLEEPType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
5
ENSM_MODE_PINCTRLType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
6
ENSM_MODE_PINCTRL_FDD_INDEPType:
longAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
7
INT_LOType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
EXT_LOType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
RF_GAIN_MGCType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
RF_GAIN_FASTATTACK_AGCType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
RF_GAIN_SLOWATTACK_AGCType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
RF_GAIN_HYBRID_AGCType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
3
FIR_TX1Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x01
FIR_TX2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x02
FIR_TX1_TX2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x03
FIR_RX1Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x81
FIR_RX2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x82
FIR_RX1_RX2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x83
FIR_IS_RXType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0x80
RX_1Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
RX_2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
TX_1Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
TX_2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
BPLL_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
ADC_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
R2_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
R1_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
3
CLKRF_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
4
RX_SAMPL_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
5
NUM_RX_CLOCKSType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
6
IGNOREType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
DAC_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
T2_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
T1_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
3
CLKTF_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
4
TX_SAMPL_FREQType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
5
NUM_TX_CLOCKSType:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
6
BIST_DISABLEType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
BIST_INJ_TXType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
BIST_INJ_RXType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
MODE_1x1Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
MODE_2x2Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
HIGHEST_OSRType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
0
NOMINAL_OSRType:
ulongAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
ad9361_rf_phy:.Type:
structMembers:
clk_refin:
rate:
data_type:
ulong
pdata:
rx2tx2:
data_type:
bool
fdd:
data_type:
bool
use_extclk:
data_type:
bool
dcxo_coarse:
data_type:
ulong
dcxo_fine:
data_type:
ulong
rx1tx1_mode_use_rx_num:
data_type:
ulong
rx1tx1_mode_use_tx_num:
data_type:
ulong
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
ad9361_init: Initialize the AD9361 part.Type:
structMembers:
reference_clk_rate:
data_type:
ulong
one_rx_one_tx_mode_use_rx_num:
data_type:
uchar
one_rx_one_tx_mode_use_tx_num:
data_type:
uchar
frequency_division_duplex_mode_enable:
data_type:
uchar
xo_disable_use_ext_refclk_enable:
data_type:
uchar
two_t_two_r_timing_enable:
data_type:
bool
pp_tx_swap_enable:
data_type:
uchar
pp_rx_swap_enable:
data_type:
uchar
tx_channel_swap_enable:
data_type:
uchar
rx_channel_swap_enable:
data_type:
uchar
delay_rx_data:
data_type:
ulong
rx_data_clock_delay:
data_type:
ulong
rx_data_delay:
data_type:
ulong
tx_fb_clock_delay:
data_type:
ulong
tx_data_delay:
data_type:
ulong
Access:
Parameter:
FalseWritable:
FalseInitial:
TrueVolatile:
False
Default value:
reference_clk_rate 40e6,one_rx_one_tx_mode_use_rx_num 1,one_rx_one_tx_mode_use_tx_num 1,frequency_division_duplex_mode_enable 1,xo_disable_use_ext_refclk_enable 0,two_t_two_r_timing_enable 0,pp_tx_swap_enable 1,pp_rx_swap_enable 1,tx_channel_swap_enable 1,rx_channel_swap_enable 1,delay_rx_data 0,rx_data_clock_delay 0,rx_data_delay 4,tx_fb_clock_delay 7,tx_data_delay 0
en_state_machine_mode: Get/set the Enable State Machine (ENSM) mode. Value should be set using one of the ENSM_MODE parameters.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
rx_rf_gain: Get/set the receive RF gain for the selected channel. The gain is in dB. Note that the written value to the second index of this property will not be applied when this worker’s ad9361_rf_phy.pdata.rx2tx2 property member is false.Type:
longArray dimensions:
['rx_nchannels']
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
rx_rf_bandwidth: Get/set the RX RF bandwidth. The bandwidth is in Hz.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
18e6
rx_sampling_freq: Get/set the RX sampling frequency. The frequency is in Hz.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
rx_lo_freq: Get/set the RX LO frequency. The frequency is in Hz.Type:
ulonglongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
2.4e9
rx_lo_int_ext: Switch between the internal and external LO. The RX LO is affected.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
INT_LO
rx_rssi: Get the RSSI for the selected channel.Type:
structArray dimensions:
['rx_nchannels']Members:
ant:
data_type:
ulong
symbol:
data_type:
ulong
preamble:
data_type:
ulong
multiplier:
data_type:
long
duration:
data_type:
uchar
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
rx_gain_control_mode: Get/set the gain control mode for the selected channel. Note that, when this worker’s ad9361_rf_phy.pdata.rx2tx2 property member is false, the value read from the second index of this property should be ignored and the value written to the second index won’t be applied.Type:
ucharArray dimensions:
['rx_nchannels']
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
RF_GAIN_MGC,RF_GAIN_MGC
rx_fir_config_writeType:
structMembers:
rx:
data_type:
ulong
rx_gain:
data_type:
long
rx_dec:
data_type:
ulong
rx_coef:
data_type:
shortarraydimensions:
['128']
rx_coef_size:
data_type:
uchar
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
rx 0x83,rx_gain 0,rx_dec 1,rx_coef {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},rx_coef_size 128
rx_fir_config_read: Note that the readback value of the second index of this property should be ignored when this worker’s ad9361_rf_phy.pdata.rx2tx2 property member is false.Type:
structArray dimensions:
['rx_nchannels']Members:
rx_gain:
data_type:
long
rx_dec:
data_type:
ulong
rx_coef:
data_type:
shortarraydimensions:
['128']
rx_coef_size:
data_type:
uchar
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
rx_fir_en_dis: Get/set the status of the RX FIR filter. The status is one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
DISABLE
rx_rfdc_track_en_dis: Get/set the status of the RX RFDC Tracking. The status is one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
DISABLE
rx_bbdc_track_en_dis: Get/set the status of the RX BasebandDC Tracking. The status is one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
DISABLE
rx_quad_track_en_dis: Get/set the status of the RX Quadrate Tracking. The status is one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
DISABLE
rx_rf_port_input: Get/set the RX RF input port. Accepted values: one of the parameter values A_BALANCED, B_BALANCED, C_BALANCED, A_N, A_P, B_N, B_P, C_N, C_P, TX_MON1, TX_MON_2, TX_MON1_2.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
A_BALANCED
rx_fastlock_store: Store RX fastlock profile. Writing a value will initiate the process of creating an RX fast lock profile and store it in the AD9361 in the RX profile index indicated by the value written.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
rx_fastlock_recall: Recall specified RX fastlock profile. Writing a value will initiate the process of applying an RX fast lock profile that was previously stored inside the AD9361. The written value indicates the index of the RX profile to be applied.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
rx_fastlock_loadType:
structMembers:
ad9361_profile_id:
data_type:
ulong
worker_profile_id:
data_type:
ulong
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
rx_fastlock_saveType:
structMembers:
ad9361_profile_id:
data_type:
ulong
worker_profile_id:
data_type:
ulong
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
tx_attenuation: Get/set the transmit attenuation for the selected channel. The attenuation is in millidB. Values written will be rounded down to the nearest 250 millidB. Note that the written value to the second index of this property will not be applied when this worker’s ad9361_rf_phy.pdata.rx2tx2 property member is false.Type:
ulongArray dimensions:
['tx_nchannels']
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
1000,1000
tx_rf_bandwidth: Get/set the TX RF bandwidth. The bandwidth is in Hz.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
18e6
tx_sampling_freq: Get/set the TX sampling frequency. The frequency is in Hz.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
tx_lo_freq: Get/set the TX LO frequency. The frequency is in Hz.Type:
ulonglongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
2.4e9
tx_lo_int_ext: Switch between the internal and external LO. The TX LO is affected.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
INT_LO
tx_fir_config_writeType:
structMembers:
tx:
data_type:
ulong
tx_gain:
data_type:
long
tx_int:
data_type:
ulong
tx_coef:
data_type:
shortarraydimensions:
['128']
tx_coef_size:
data_type:
uchar
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
tx 0x03,tx_gain 0,tx_int 1,tx_coef {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},tx_coef_size 128
tx_fir_config_read: Note that the readback value of the second index of this property should be ignored when this worker’s ad9361_rf_phy.pdata.rx2tx2 property member is false.Type:
structArray dimensions:
['tx_nchannels']Members:
tx_gain:
data_type:
long
tx_int:
data_type:
ulong
tx_coef:
data_type:
shortarraydimensions:
['128']
tx_coef_size:
data_type:
uchar
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
tx_fir_en_dis: Get/set the status of the TX FIR filter. The status is one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
DISABLE
tx_rssi: Get the TX RSSI for the selected channel. The value read represents the RSSI in millidB. Note that the readback value of the second index of this property should be ignored when this worker’s ad9361_rf_phy.pdata.rx2tx2 property member is false.Type:
ulongArray dimensions:
['tx_nchannels']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
tx_rf_port_output: Get/set the TX RF output port.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
TXA
tx_auto_cal_en_dis: Get/set the status of the auto calibration flag. The value should be one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
DISABLE
tx_fastlock_store: Store TX fastlock profile. Writing a value will initiate the process of creating a TX fast lock profile and store it in the AD9361 in the TX profile index indicated by the value written.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
tx_fastlock_recall: Recall specified TX fastlock profile. Writing a value will initiate the process of applying an TX fast lock profile that was previously stored inside the AD9361. The written value indicates the index of the TX profile to be applied.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
tx_fastlock_loadType:
structMembers:
ad9361_profile_id:
data_type:
ulong
worker_profile_id:
data_type:
ulong
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
tx_fastlock_saveType:
structMembers:
ad9361_profile_id:
data_type:
ulong
worker_profile_id:
data_type:
ulong
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
trx_path_clks: Set the RX and TX path rates.Type:
structMembers:
rx_path_clks:
data_type:
ulongarraydimensions:
['NUM_RX_CLOCKS']
tx_path_clks:
data_type:
ulongarraydimensions:
['NUM_TX_CLOCKS']
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
no_ch_mode: Set the number of channels mode. Accepted values are one of the parameter values MODE_1x1 or MODE_2x2.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
trx_fir_en_dis: Enable/disable the TRX FIR filters. Accepted values are one of the parameter values ENABLE or DISABLE.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
trx_rate_gov: Get/set the OSR rate governor. Accepted values are one of the parameter values HIGHEST_OSR or NOMINAL_OSR.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
do_calib: Perform the selected calibration.Type:
structMembers:
cal:
data_type:
ulong
arg:
data_type:
long
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
trx_load_enable_fir: Load and enable TRX FIR filters configurations.Type:
structMembers:
rx:
data_type:
ulong
rx_gain:
data_type:
long
rx_dec:
data_type:
ulong
rx_coef:
data_type:
shortarraydimensions:
['128']
rx_coef_size:
data_type:
uchar
rx_path_clks:
data_type:
ulongarraydimensions:
['6']
rx_bandwidth:
data_type:
ulong
tx:
data_type:
ulong
tx_gain:
data_type:
long
tx_int:
data_type:
ulong
tx_coef:
data_type:
shortarraydimensions:
['128']
tx_coef_size:
data_type:
uchar
tx_path_clks:
data_type:
ulongarraydimensions:
['6']
tx_bandwidth:
data_type:
ulong
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
do_dcxo_tune_coarse: Do DCXO coarse tuning.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
do_dcxo_tune_fine: Do DCXO fine tuning.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
temperature: Get the temperature in millidegrees C .Type:
longAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
bist_loopback: BIST loopback mode. Valid values are 0 (disables loopback), 1 (loopback AD9361 internal TX-RX), or 2 (loopback (FPGA internal RX-.TX). While a value of 2 is handled by no-os, it is not expected to work with OpenCPI’s AD9361 device workers.Type:
longAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
bist_prbs: BIST mode. Valid values are either BIST_DISABLE or BIST_INJ_RX.Type:
ucharAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
bist_tone: BIST tone. Valid values are either BIST_DISABLE, BIST_INJ_TX, or BIST_INJ_RX.Type:
structMembers:
mode:
data_type:
uchar
freq_Hz:
data_type:
ulong
level_dB:
data_type:
ulong
mask:
data_type:
ulong
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
DATA_CLK_Delay: This value affects the DATA_CLK data delay. The typical delay is approximately 0.3ns/LSB. Minimum delay setting is 0x0 and maximum delay is 0xF.Type:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Rx_Data_Delay: This value affects the DATA_CLK data delay. The typical delay is approximately 0.3ns/LSB. Rx Frame is delayed the same amount as the data port bits. Minimum delay setting is 0x0 and maximum delay is 0xF.Type:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
FB_CLK_Delay: This setting functions the same as DATA_CLK_Delay but affects the FB_CLK.Type:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Tx_Data_Delay: This setting functions the same as Rx_Data_Delay but affects the Tx_FRAME and TX Data bits. Tx frame sync is delayed the same amount as the data port bits.Type:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
THB3_Enable_and_Interp: Note that there are several functions that calculate digital filter settings. The ad9361_calculate_rf_clock_chain function calculates all Rx and Tx rates. This sets interpolation of the digital filter that feeds the DAC. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal DAC clock rate (No-OS does not provide a method for high-precision calculation of the nominal DAC rate).Type:
enumAllowed values:
['Interpolate_by_1_no_filtering', 'Interpolate_by_2_half_band_filter','Interpolate_by_3_and_filter', 'Invalid']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
THB2_Enable: Note that there are several functions that calculate digital filter settings. The ad9361_calculate_rf_clock_chain function calculates all Rx and Tx rates. Setting to true enables the interpolate-by-2 THB2 half-band filter. Setting to false bypasses the filter. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal DAC clock rate (No-OS does not provide a method for high-precision calculation of the nominal DAC rate).Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
THB1_Enable: Note that there are several functions that calculate digital filter settings. The ad9361_calculate_rf_clock_chain function calculates all Rx and Tx rates. Setting to true enables the interpolate-by-2 THB1 half-band filter. Setting to false bypasses the filter. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal DAC clock rate (No-OS does not provide a method for high-precision calculation of the nominal DAC rate).Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
RHB3_Enable_and_Decimation: Note that there are several functions that calculate digital filter settings. The ad9361_calculate_rf_clock_chain function calculates all Rx and Tx rates. This sets decimation of the first filter stage after the ADC. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal ADC clock rate (No-OS does not provide a method for high-precision calculation of the nominal ADC rate).Type:
enumAllowed values:
['Decimate_by_1_no_filtering', 'Decimate_by_2_half_band_filter','Decimate_by_3_and_filter', 'Invalid']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
RHB2_Enable: Note that there are several functions that calculate digital filter settings. The ad9361_calculate_rf_clock_chain function calculates all Rx and Tx rates. Setting to true enables the decimate-by-2 RHB2 half-band filter. Setting to false bypasses the filter. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal ADC clock rate (No-OS does not provide a method for high-precision calculation of the nominal ADC rate).Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
RHB1_Enable: Note that there are several functions that calculate digital filter settings. The ad9361_calculate_rf_clock_chain function calculates all Rx and Tx rates. Setting to true enables the decimate-by-2 RHB1 half-band filter. Setting to false bypasses the filter. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal ADC clock rate (No-OS does not provide a method for high-precision calculation of the nominal ADC rate).Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
DAC_Clk_div2: The ad9361_calculate_rf_clock_chain function configures this value. When false, the DAC clock rate equals the ADC clock rate. When true, the DAC clock equals 1/2 of the ADC rate. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal DAC clock rate (No-OS does not provide a method for high-precision calculation of the nominal DAC rate).Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
BBPLL_Divider: The ad9361_bbpll_set_rate function controls this value. The ADC clock rate equals the BBPLL divided by the factor which is a function of this value, shown in the following equation. ADC Clock Rate=BBPLL Clock Rate / [2^(BBPLL Divider)]. BBPLL Divider is valid from 1 through 6.Type:
enumAllowed values:
['invalid', '1', '2', '3', '4', '5', '6']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Fractional_BB_Frequency_Word: Fractional BB Frequency Word.Type:
ulongAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Integer_BB_Frequency_Word: Integer BB Frequency Word.Type:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
BBPLL_Ref_Clock_Scaler: Ref Clock Scaler. The reference clock frequency is scaled before it enters the BBPLL. Only possible scaler values are: x1; x1/2; x1/4; x2.Type:
floatAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Tx_BBF_Tune_Divider: Tx BBF Tune Divider. The baseband Tx analog filter calibration sets the 3dB cutoff frequency of the third-order Butterworth Tx anti-imaging filter based on the Tx BBF Tune Divider. The third-order Tx filter is located just after the DAC in the Tx signal path and is normally calibrated to 1.6x the BBBW. Note that the BBBW is half the complex bandwidth. To set the cutoff frequency value, the BBPLL is divided down using a divide by 1 to 511 divider dedicated to the Tx tuner block.Type:
enumAllowed values:
['invalid', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13','14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26','27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39','40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52','53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65','66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78','79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91','92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103','104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114','115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125','126', '127', '128', '129', '130', '131', '132', '133', '134', '135', '136','137', '138', '139', '140', '141', '142', '143', '144', '145', '146', '147','148', '149', '150', '151', '152', '153', '154', '155', '156', '157', '158','159', '160', '161', '162', '163', '164', '165', '166', '167', '168', '169','170', '171', '172', '173', '174', '175', '176', '177', '178', '179', '180','181', '182', '183', '184', '185', '186', '187', '188', '189', '190', '191','192', '193', '194', '195', '196', '197', '198', '199', '200', '201', '202','203', '204', '205', '206', '207', '208', '209', '210', '211', '212', '213','214', '215', '216', '217', '218', '219', '220', '221', '222', '223', '224','225', '226', '227', '228', '229', '230', '231', '232', '233', '234', '235','236', '237', '238', '239', '240', '241', '242', '243', '244', '245', '246','247', '248', '249', '250', '251', '252', '253', '254', '255', '256', '257','258', '259', '260', '261', '262', '263', '264', '265', '266', '267', '268','269', '270', '271', '272', '273', '274', '275', '276', '277', '278', '279','280', '281', '282', '283', '284', '285', '286', '287', '288', '289', '290','291', '292', '293', '294', '295', '296', '297', '298', '299', '300', '301','302', '303', '304', '305', '306', '307', '308', '309', '310', '311', '312','313', '314', '315', '316', '317', '318', '319', '320', '321', '322', '323','324', '325', '326', '327', '328', '329', '330', '331', '332', '333', '334','335', '336', '337', '338', '339', '340', '341', '342', '343', '344', '345','346', '347', '348', '349', '350', '351', '352', '353', '354', '355', '356','357', '358', '359', '360', '361', '362', '363', '364', '365', '366', '367','368', '369', '370', '371', '372', '373', '374', '375', '376', '377', '378','379', '380', '381', '382', '383', '384', '385', '386', '387', '388', '389','390', '391', '392', '393', '394', '395', '396', '397', '398', '399', '400','401', '402', '403', '404', '405', '406', '407', '408', '409', '410', '411','412', '413', '414', '415', '416', '417', '418', '419', '420', '421', '422','423', '424', '425', '426', '427', '428', '429', '430', '431', '432', '433','434', '435', '436', '437', '438', '439', '440', '441', '442', '443', '444','445', '446', '447', '448', '449', '450', '451', '452', '453', '454', '455','456', '457', '458', '459', '460', '461', '462', '463', '464', '465', '466','467', '468', '469', '470', '471', '472', '473', '474', '475', '476', '477','478', '479', '480', '481', '482', '483', '484', '485', '486', '487', '488','489', '490', '491', '492', '493', '494', '495', '496', '497', '498', '499','500', '501', '502', '503', '504', '505', '506', '507', '508', '509', '510','511']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Tx_Secondary_Filter_Resistor: Secondary Tx filter resistor, which, along with the secondary Tx Capacitor, sets the 3 dB corner frequency of the secondary single-pole Tx RC filter via the equation 1/(2*pi*R*C). Value is represented in ohms.Type:
enumAllowed values:
['invalid', '800', '400', '200', '100']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Tx_Secondary_Filter_Capacitor: Secondary Tx filter capacitor, which, along with the secondary Tx Resistor, sets the 3 dB corner frequency of the secondary single-pole Tx RC filter via the equation 1/(2*pi*R*C). Resolution: 1pF/LSB. Total capacitance (C in previous equation) is 12pF + ( Tx_Secondary_Filter_Capacitor *1pF).Type:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Rx_BBF_Tune_Divide: Rx BBF Tune Divide. The tuning algorithm generates a tune clock derived from the BBPLL frequency. This divider outputs the tune clock, set per for following equation. Rx BBF Tune Divider[8:0] = ceil(BBPLL Frequency x ln(2) / (BBBW x 1.4 x 2 x pi)). The range of the divider is 1 to 511.Type:
enumAllowed values:
['invalid', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13','14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26','27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39','40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52','53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65','66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78','79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91','92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103','104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114','115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125','126', '127', '128', '129', '130', '131', '132', '133', '134', '135', '136','137', '138', '139', '140', '141', '142', '143', '144', '145', '146', '147','148', '149', '150', '151', '152', '153', '154', '155', '156', '157', '158','159', '160', '161', '162', '163', '164', '165', '166', '167', '168', '169','170', '171', '172', '173', '174', '175', '176', '177', '178', '179', '180','181', '182', '183', '184', '185', '186', '187', '188', '189', '190', '191','192', '193', '194', '195', '196', '197', '198', '199', '200', '201', '202','203', '204', '205', '206', '207', '208', '209', '210', '211', '212', '213','214', '215', '216', '217', '218', '219', '220', '221', '222', '223', '224','225', '226', '227', '228', '229', '230', '231', '232', '233', '234', '235','236', '237', '238', '239', '240', '241', '242', '243', '244', '245', '246','247', '248', '249', '250', '251', '252', '253', '254', '255', '256', '257','258', '259', '260', '261', '262', '263', '264', '265', '266', '267', '268','269', '270', '271', '272', '273', '274', '275', '276', '277', '278', '279','280', '281', '282', '283', '284', '285', '286', '287', '288', '289', '290','291', '292', '293', '294', '295', '296', '297', '298', '299', '300', '301','302', '303', '304', '305', '306', '307', '308', '309', '310', '311', '312','313', '314', '315', '316', '317', '318', '319', '320', '321', '322', '323','324', '325', '326', '327', '328', '329', '330', '331', '332', '333', '334','335', '336', '337', '338', '339', '340', '341', '342', '343', '344', '345','346', '347', '348', '349', '350', '351', '352', '353', '354', '355', '356','357', '358', '359', '360', '361', '362', '363', '364', '365', '366', '367','368', '369', '370', '371', '372', '373', '374', '375', '376', '377', '378','379', '380', '381', '382', '383', '384', '385', '386', '387', '388', '389','390', '391', '392', '393', '394', '395', '396', '397', '398', '399', '400','401', '402', '403', '404', '405', '406', '407', '408', '409', '410', '411','412', '413', '414', '415', '416', '417', '418', '419', '420', '421', '422','423', '424', '425', '426', '427', '428', '429', '430', '431', '432', '433','434', '435', '436', '437', '438', '439', '440', '441', '442', '443', '444','445', '446', '447', '448', '449', '450', '451', '452', '453', '454', '455','456', '457', '458', '459', '460', '461', '462', '463', '464', '465', '466','467', '468', '469', '470', '471', '472', '473', '474', '475', '476', '477','478', '479', '480', '481', '482', '483', '484', '485', '486', '487', '488','489', '490', '491', '492', '493', '494', '495', '496', '497', '498', '499','500', '501', '502', '503', '504', '505', '506', '507', '508', '509', '510','511']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
bb_pll_is_lockedType:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
rx_pll_is_lockedType:
enumAllowed values:
['false', 'true', 'unknown']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
rx_fastlock_delete: Performs a deletion of an RX fastlock profile saved in this worker’s memory. The profile which is deleted is the one whose profile ID matches the value written to this property.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
tx_pll_is_lockedType:
enumAllowed values:
['false', 'true', 'unknown']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
tx_fastlock_delete: Performs a deletion of an RX fastlock profile saved in this worker’s memory. The profile which is deleted is the one whose profile ID matches the value written to this property.Type:
ulongAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
rx_vco_dividerType:
enumAllowed values:
['2', '4', '8', '16', '32', '64', '128', 'external_2', 'invalid']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
rx_vco_n_integerType:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
rx_vco_n_fractionalType:
ulongAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Rx_Ref_Divider: Rx Ref Divider. This controls the Rx path divider which scales the rate of the analog clock which is input to the Rx PLL Synthesizer (which generates the Rx LO clock). Only possible ratios are: 1, 1/2, 1/4, 2. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal Rx LO frequency value (No-OS does not provide a method for high-precision calculation of the nominal LO frequencies).Type:
floatAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
tx_vco_dividerType:
enumAllowed values:
['2', '4', '8', '16', '32', '64', '128', 'external_2', 'invalid']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
tx_vco_n_integerType:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
tx_vco_n_fractionalType:
ulongAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Tx_Ref_Divider: Tx Ref Divider. This controls the Tx path divider which scales the rate of the analog clock which is input to the Tx PLL Synthesizer (which generates the Tx LO clock). Only possible ratios are: 1, 1/2, 1/4, 2. The purpose of this property is to expose this value as it exists on the AD9361 IC in order to precisely calculate the current on-chip (in-situ) nominal Tx LO frequency value (No-OS does not provide a method for high-precision calculation of the nominal LO frequencies).Type:
floatAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Tx_Channel_Swap: Setting this to true swaps the positions of Tx1 and Tx2 samples.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
Rx_Channel_Swap: Setting this to true swaps the positions of Rx1 and Rx2 samples.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
LVDS: Value is true if bitstream monitored by instance of this worker was built to use LVDS mode for Data/clock/frame signals, and false if CMOS mode was used.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
single_port: Value is true if bitstream monitored by instance of this worker was built to use single port, and false if dual ports.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
swap_ports: Value is true if bitstream monitored by instance of this worker was built to swap Port 0 and Port 1, and false if there was no swap.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
half_duplex: Value is true if bitstream monitored by instance of this worker was built to use half duplex mode, and false if full duplex mode.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
data_rate_config: Value indicates which data rate mode (SDR/DDR) the bitstream was built to use.Type:
enumAllowed values:
['SDR', 'DDR']
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
DATA_CLK_P_rate_HzType:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
BIST_Mask_Channel_2_Q_data: Setting zeros out Channel 2 Q data.Type:
boolAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
BIST_Mask_Channel_2_I_data: Setting zeros out Channel 2 I data.Type:
boolAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
BIST_Mask_Channel_1_Q_data: Setting zeros out Channel 1 Q data.Type:
boolAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
BIST_Mask_Channel_1_I_data: Setting zeros out Channel 1 I data.Type:
boolAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
True
Default value:
None
Ports
Inputs:
None.
Outputs:
None.
Implementations
ad9361_config_proxy(RCC)
Dependencies
The dependencies to other elements in OpenCPI are:
assets/hdl/devices/ad9361_config_proxy.rcc/ad9361_config_proxy.cc
assets/hdl/devices/ad9361_config_proxy.rcc/ad9361_platform.cc
assets/hdl/devices/ad9361_config_proxy.rcc/parameters.h
assets/hdl/devices/ad9361_config_proxy.rcc/supporting/include/OCPIProjects/AD9361ConfigProxy.hh
assets/hdl/devices/ad9361_config_proxy.rcc/supporting/include/OCPIProjects/LogForwarder.hh
assets/hdl/devices/ad9361_config_proxy.rcc/supporting/src/OCPIProjects/AD9361ConfigProxy.cc
assets/hdl/devices/ad9361_config_proxy.rcc/supporting/src/OCPIProjects/LogForwarder.cc
Limitations
Limitations of ad9361_config_proxy are:
None.
Testing
Tested platforms include Agilent ZedBoard/Analog Devices FMCOMMS2 (xilinx24_1_aarch32 RCC platform), Ettus E310 (xilinx24_1_aarch32 RCC platform).
The test outlined in Ad9361 dac (ad9361_dac) includes validation of a subset of this worker’s functionality.
Troubleshooting
The following error message, which is produced by the Analog Device’s No-OS software library utilized by ad9361 config proxy.rcc, indicates a hardware communication error between the FPGA and the AD9361. This message would occur, for example, if the AD9361 existed on a card which was not plugged in to the PCB containing the FPGA.
ad9361_init : Unsupported PRODUCT_ID 0xC0ad9361_init : AD936x initialization error