Adrv9026 System Development User Guide Ug 1727-3471559
Adrv9026 System Development User Guide Ug 1727-3471559
Adrv9026 System Development User Guide Ug 1727-3471559
UG-1727
One Technology Way • P.O. Box 9106 • Norwood, MA 02062-9106, U.S.A. • Tel: 781.329.4700 • Fax: 781.461.3113 • www.analog.com
SCOPE
This user guide is the main source of information for system engineers and software developers using the Analog Devices, Inc., ADRV902x
family of software defined radio transceivers. This family consists of the ADRV9026 integrated quad RF transceiver and the ADRV9029
integrated quad RF transceiver with digital predistortion (DPD) and crest factor reduction (CFR) capability. The content of the user guide
covers all functions that are common to both devices and some that are unique to the ADRV9029 device. Throughout the user guide, the
term transceiver is used with functions that are common to both devices. Functions that are unique to the ADRV9029 device use
ADRV9029 in the description. This user guide must be used in conjunction with the product data sheets to incorporate all necessary
specifications and descriptions when designing these devices into new equipment.
TABLE OF CONTENTS
Scope .................................................................................................. 1 Synthesizer Configuration ............................................................ 69
Revision History ............................................................................... 4 Overview ..................................................................................... 69
System Overview .............................................................................. 5 Connections for External Reference Clock (DEVCLK)........ 69
System Architecture Description.................................................... 6 External Reference Clock (DEVCLK) Requirements............ 70
Software Architecture .................................................................. 6 Clock Synthesizer ....................................................................... 72
API Folder Structure .................................................................... 6 RF Synthesizer ............................................................................ 72
Private vs. Public API functions ................................................. 7 Auxiliary Synthesizer ................................................................. 73
Hardware Abstraction Layer ....................................................... 8 Setting the LO Frequencies ....................................................... 73
Software Integration ....................................................................... 10 RF PLL Phase Synchronization ................................................ 76
Software Integration Process Overview .................................. 10 ARM Processor and Device Calibrations .................................... 80
Software Package Folder Structure Overview ........................ 10 ARM State Machine Overview ................................................. 80
API Software Architecture ........................................................ 11 System Initialization................................................................... 80
Implementing Hardware Abstraction Interface ..................... 11 Pre-MCS initialization ............................................................... 80
Developing the Application ...................................................... 11 Post-MCS initialization ............................................................. 81
Serial Peripheral Interface (SPI) ................................................... 20 Device Calibrations .................................................................... 81
SPI Bus Signals ............................................................................ 20 Initial Calibrations ..................................................................... 82
SPI Data Transfer Protocol ........................................................ 20 System Considerations for Initial Calibrations ...................... 85
SPI Configuration Using API Function .................................. 21 Tracking Calibrations ................................................................ 89
Timing Diagrams........................................................................ 22 Calibration Guidelines after PLL Frequency Changes .......... 93
System Initialization ....................................................................... 24 Initialization Calibrations to Be Run after Device
Initialization Sequence............................................................... 24 Initialization .............................................................................. 103
JESD204B and JESD204C Standard ......................................... 25 ARM Memory Dump .............................................................. 103
Differences Between JESD204B and JESD204C .................... 26 Stream Processor and System Control ...................................... 105
Supported Deframer Link Parameters .................................... 38 Transmitter Overview and Path Control................................... 120
Implementation Recommendations ........................................ 48 DAC Full Scale Function (DAC Boost) ................................. 125
Link Initialization and Debugging ........................................... 49 adi_adrv9025_TxChannelCfg API Structure ....................... 127
First Time System Bring Up—Checking Link Integrity ........ 49 Transmitter Power Amplifier Protection .................................. 128
Sample Iron Python Code for PRBS Testing .......................... 49 PA Protection Description ...................................................... 128
PRBS Errors ................................................................................. 50 Receiver Gain Control and Gain Compensation ..................... 135
Static Phase Offset (SPO) TEST to Verify Eye Width ........... 51 Overview ................................................................................... 135
Selecting the Optimal LMFC and LEMC Offset for a Manual Gain Control (MGC) ................................................. 137
Deframer...................................................................................... 58 Automatic Gain Control .......................................................... 139
DPD STATUS............................................................................ 294 Case Study for Configuring CLGC Batch Sampling Period 328
Recommended Sequence for Enabling the DPD Tracking CLGC Recommendations ....................................................... 333
Calibration ................................................................................. 294
REVISION HISTORY
6/2022—Revision 0: Initial Version
SYSTEM OVERVIEW
The ADRV9026 and ADRV9029 are part of a family of highly integrated RF agile transceivers designed for use in small cell, massive
MIMO, and macro base station equipment used in advanced communications systems. The transceiver contains four independently
controlled transmitters, dedicated observation receiver inputs for monitoring transmitter channel outputs, four independently controlled
receivers, integrated synthesizers, and digital signal processing functions to provide a complete transceiver solution. The transceiver
provides the high radio performance and low power consumption demanded by cellular infrastructure applications, such as macro
2G/3G/4G/5G and massive MIMO base stations. This user guide is designed to encompass description of all functions available in the
these transceivers. Note that some variants may be developed for specific design targets that do not encompass all available functions,
therefore, refer to the data sheets for the specific transceiver to determine which features are included. To avoid confusion, the term
transceiver is used throughout this user guide to refer to any variant that employs a specific function. When a function that applies to a
specific device is described, the device part number is used to delineate which transceiver is being described.
These transceivers are designed to operate over the wide frequency ranges of 650 MHz to 6 GHz. The receiver channels support
bandwidth up to 200 MHz with data transfer across (up to) four JESD204B/JESD204C lanes at rates up to 24.33 Gbps (see data sheets for
specifications). The transmitter channels operate over the same frequency range as the receivers. Each transmitter channel supports up to
450 MHz synthesis bandwidth with data input across (up to) four JESD204B/JESD204C lanes. In addition, local oscillator (LO) routing
allows the transmitters to operate at different frequencies than the receivers for additional flexibility. Two observation receiver channels
are included to provide the capability to monitor feedback from the transmitter outputs. The feedback loops can be used to implement
error correction, calibration, and signal enhancing algorithms. These receivers operate in the same frequency range as the transmitter
channels, and they support up to 450 MHz channel bandwidth to match the output synthesis bandwidth of the transmitter channels.
These channels provide digital datapaths to the internal ARM processor for use in calibration and signal enhancement algorithms.
Multiple fully integrated PLLs are included in the transceiver to provide a high level of flexibility and performance. Two are high
performance, low power fractional-N RF synthesizers that can be configured to supply the transmitters and receivers in different
configurations. A third fractional-N PLL supports an independent frequency for the observation receiver channels. Other clock PLLs are
included to generate the converter and digital clocks for signal processing and communication interfaces.
The power supply for each block is distributed across four different voltage supplies, three analog voltage supplies and one digital voltage
supply. The analog supplies are 1.8 V, 1.3 V, and 1.0 V. These supplies are fed directly to the power inputs for some blocks and buffered by
internal low dropout (LDO) regulators for other functions for maximum performance. The digital processing blocks are supplied by a
1.0 V source. In addition, a 1.8 V supply supplies all GPIO and interface ports that connect with the baseband processor.
See the functional block diagram in the respective data sheets for a high level view of the functions in each transceiver. Descriptions of
each block with setup and control details are provided in subsequent sections of this document.
22770-002
KERNEL NANOSLEEP() FILE SYSTEM UIO KERNEL UIO KERNEL DRIVER
DRIVER DRIVER
adi_hal_SpiInit = ads9_SpiInit;
adi_hal_SpiWrite = ads9_SpiWrite_v2;
adi_hal_SpiRead = ads9_SpiRead_v2;
adi_hal_LogFileOpen = ads9_LogFileOpen;
adi_hal_LogLevelSet = ads9_LogLevelSet;
adi_hal_LogLevelGet = ads9_LogLevelGet;
adi_hal_LogWrite = ads9_LogWrite;
adi_hal_LogFileClose = ads9_LogFileClose;
adi_hal_Wait_us = ads9_TimerWait_us;
adi_hal_Wait_ms = ads9_TimerWait_ms;
SOFTWARE INTEGRATION
The ADRV9025 API package was developed on the Analog Devices ADS9 reference platform utilizing a Xilinx® MicroZed™ running a
Linux variant. This section describes how to use the provided API in a custom hardware/software environment. This is readily
accomplished because the API was developed abiding by ANSI C constructs while maintaining Linux system call transparency. The ANSI
C standard was followed to ensure agnostic processor and operating system integration with the API code.
SOFTWARE INTEGRATION PROCESS OVERVIEW
The following steps can be followed to integrated Analog Devices API into functioning system software:
• Transceiver Device API Integration: The API source code can be integrated into the radio system software deployed on the baseband
processor to control the Analog Devices transceiver operations.
• Integration of Transceiver Specific Files: Platform files which are necessary for the Analog Devices transceiver to function are added
to the system software.
• Integration of Drivers in Hardware Abstraction Layer: The API software provided by Analog Devices communicates with the
transceiver through an SPI interface, accessed via the HAL. The references to the SPI driver must be updated by the user in the HAL.
• Compilation and Programming: When the files required for software integration are available, the device API can be compiled, and
the transceiver specific platform files programmed into the transceiver.
INTEGRATION OF INTEGRATION OF
TRANSCEIVER DEVICE TRANSCEIVER SPECIFIC DRIVERS IN THE COMPILATION AND
22770-003
API INTEGRATION FILES (FW, STREAM, HARDWARE PROGRAMMING
GAIN TABLES, PROFILE) ABSTRACTION LAYER
ADRV902x CUSTOMER
CANNOT
MODIFY
COMMON
HAL LOGGING ERROR
PLATFORM LAYER
adi_platform
IS AN
ADI_PLATFORM INTERFACE
LAYER THAT
PLATFORM THE CUSTOMER
SPI LOGGING TIMER
adi_hal_HwOpen NEEDS TO MAP
adi_hal_HwClose adi_hal_SpiWrite adi_hal_LogFileOpen adi_hal_Wait_us TO THEIR HAL
adi_hal_HwReset adi_hal_SpiRead adi_hal_LogLevelSet adi_hal_Wait_ms THROUGH THE
adi_hal_DevHalCfgCreate adi_hal_LogLevelGet FUNCTIONS
adi_hal_DevHalCfgFree adi_hal_LogWrite POINTERS
HAL LAYER
HAL
PLATFORM SPI LOGGING TIMER CUSTOMER
22770-005
IMPLEMENTATION
#include <stdio.h>
#include "adi_platform.h"
#include "adi_adrv9025_utilities.h"
#include "adi_adrv9025.h"
#include "adi_adrv9025_radioctrl.h"
if (adrv9025Device == NULL)
{
printf("NULL ADRV9025 device pointer\n");
return -1
}
recoveryAction = adi_adrv9025_HwOpen(adrv9025Device);
if (recoveryAction != ADI_ADRV9025_ACT_NO_ACTION)
{
printf("Failed opening platform hardware drivers\n");
return -1;
}
/* Initialize ADRV9025 */
recoveryAction = adi_adrv9025_PreMcsInit_v2(adrv9025Device,
&adrv9025Init,
"/home/analog/adrv9025_server/resources/Tokelau_M4.bin",
"/home/analog/adrv9025_server/resources/stream_imag
e.bin",
"/home/analog/adrv9025_server/resources/RxGainTable.csv",
Rev. 0 | Page 13 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
"/home/analog/adrv9025_server/resources/TxAttenTable.csv");
recoveryAction = adi_adrv9025_PllFrequencySet(adrv9025Device,
ADI_ADRV9025_LO1_PLL, 3500000000);
return 0;
}
Include Files
For each major function block, there are generally three files: adi_feature.c, adi_feature.h, and adi_feature_types.h. For core API
functionality, Table 3 shows the mandatory .h header files that must be included in the application layer program. Optional add-on API
functions can be included if the application of the developer requires those features. Note that the API places typedef definitions in files
with _types.h suffixes, such as ADRV9025_types.h. These _types.h files are included within their corresponding .h files and do not need
to be manually included in the application layer code.
Note that the ADRV9025_user.h contains the #defines for API timeouts and SPI read intervals, which may be set as needed by the
customer platform. The user files are the only API files that the developer may change.
R/W, Bit 15 of the instruction word, determines whether a read or write data transfer occurs after the instruction byte write. Logic high
indicates a read operation, logic zero indicates a write operation.
D14:D0, Bits A[14:0], specify the starting byte address for the data transfer during Phase 2 of the IO operation.
All byte addresses, both starting and internally generated addresses, are assumed to be valid. That is, if an invalid address (undefined
register) is accessed, the IO operation continues as if the address space were valid. For write operations, the written bits are discarded, and
read operations result in logic zeros at the output.
Phase 2 data transfer is performed in 8 bit words. Both single byte and multibyte transfers can be configured using the API, as described
in the SPI Configuration Using API Function section.
SPI CONFIGURATION USING API FUNCTION
SPI operation is configured via calling adi_adrv9025_SpiCfgSet(). This function is called by the adi_adrv9025_Initialize(), which is called
by adi_adrv9025_PreMcsInit_v2().
The input parameters for adi_adrv9025_PreMcsInit_v2() include the init structure, which is of type adi_adrv9025_Init_t. The
adi_ADRV9025InitExample() function shows an example of configuring a hard coded init function, which includes the SPI related parameters.
Users can configure SPI settings for the transceiver with different SPI controller configurations by configuring member values of the
adi_adrv9025_SpiSettings_t data structure. The adi_adrv9025_SpiSettings_t data structure parameters are listed in Table 8. Any value
that is not listed in Table 8 is invalid.
typedef struct adi_adrv9025_SpiSettings
{
uint8_t msbFirst;
uint8_t enSpiStreaming;
uint8_t autoIncAddrUp;
uint8_t fourWireMode;
adi_adrv9025_CmosPadDrvStr_e cmosPadDrvStrength;
} adi_adrv9025_SpiSettings_t;
Table 8. SPI Bus Setup Parameters
Structure Member Value Function Default
MSBFirst 0x00 Least significant bit first 0x01
0x01 Most significant bit first
enSpiStreaming 0x00 Enable single-byte data transfer mode. All communication between the baseband processor and the 0x00
device uses this mode. Note that this parameter is not implemented in the Analog Devices platform
layer.
0x01 Enable streaming to improve SPI throughput for indirect data transfer using an internal DMA
controller. Note that this parameter is not implemented in the Analog Devices platform layer.
autoIncAddrUp 0x00 Autoincrement. Functionality intended to be used with SPI streaming. Sets address 0x01
autoincrement -> next addr = addr − 4. Note that this parameter is not implemented in the
Analog Devices platform layer.
0x01 Autodecrement. Functionality intended to be used with SPI streaming. Sets address
autodecrement -> next addr = addr + 4. Note that this parameter is not implemented in the
Analog Devices platform layer.
fourWireMode 0x00 SPI hardware implementation. Use 3-wire SPI (SDIO pin is bidirectional). Figure 8 shows example of 0x01
SPI 3-wire mode of operation. Note that Analog Devices FPGA platform always uses 4-wire mode.
0x01 SPI hardware implementation. Use 4-wire SPI. Figure 6 and Figure 7 show examples of SPI 4-wire
mode of operation. The default mode for Analog Devices FPGA platform is 4-wire mode.
Rev. 0 | Page 21 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Structure Member Value Function Default
cmosPadDrvStrength 0x00 5 pF load at 75 MHz. 0x01
0x01 100 pF load at 100 MHz.
Single Byte Data Transfer
When enSpiStreaming = 0, a single byte data transfer is chosen. In this mode, CS goes active low, the SCLK signal activates, and the
address is transferred from the baseband processor to the transceiver. This mode is always used in direct communication between the
baseband processor and the transceiver.
In LSB mode, the LSB of the address is the first bit transmitted from the baseband processor, followed by the next 14 bits in order from
next LSB to MSB. The next bit signifies if the operation is read (set) or write (clear). If the operation is a write, the baseband processor
transmits the next 8 bits LSB to MSB. If the operation is a read, the transceiver transmits the next 8 bits LSB to MSB.
In MSB mode, the first bit transmitted is the R/W bit that determines if the operation is a read (set) or write (clear). The MSB of the
address is the next bit transmitted from the baseband processor, followed by the remaining 14 bits in order from next MSB to LSB. If the
operation is a write, the baseband processor transmits the next 8 bits MSB to LSB. If the operation is a read, the transceiver transmits the
next 8 bits MSB to LSB.
Single byte data transfer can continue in either mode for multiple byte transfers using the transfer format of address followed by data (A
D A D …) until the CS signal is driven high. The address must be written for each data byte transfer when using this mode.
Multiple Byte Data Transfer (SPI Streaming)
Multiple byte data transfer (also called SPI streaming) is not utilized in standard communication between the baseband processor and the
transceiver. When enSpiStreaming = 1, data is transferred in multibyte packets, depending on the streaming mode that is enabled. This
mode is used to transfer data indirectly to internal ARM memory using a direct memory access (DMA) controller.
TIMING DIAGRAMS
The diagrams in Figure 6 and Figure 7 illustrate the SPI bus waveforms for a single register write operation and a single register read
operation, respectively. In Figure 6, the value 0x55 is written to Register 0x00A. In Figure 7, Register 0x00A is read and the value returned
by the transceiver is 0x55. If the same operations are performed with a 3-wire bus, the SDO line in Figure 6 is eliminated, and the SDIO
and SDO lines in Figure 7 are combined on the SDIO line. Note that both operations use MSB first mode and all data is latched on the
rising edge of the SCLK signal.
CS
SCLK
SDIO
SDO
22770-006
CS
SCLK
SDIO
SDO
22770-007
tS tHZM
tSC tMP tCP tHC
tCO
tH
CS
22770-009
SDIO DON’T CARE DON’T CARE
SYSTEM INITIALIZATION
This section provides information about the initialization process for the transceiver utilizing the API developed by Analog Devices. Each
subsection describes the developer preparation requirements and the initialization sequence. This section does not explain the API
library functions. Detailed information regarding the API functions can be found in the API doxygen document (adrv9025.chm) located
at /src/doc. Details about API integration and the hardware abstraction interface can be found in the Software Integration section and the
Hardware Abstraction Layer section.
INITIALIZATION SEQUENCE
The initialization sequence is comprised of API calls intermixed with user defined function calls specific to the hardware platform. The
API functions perform all of the necessary tasks for transceiver configuration, calibration, and control. The user is required to insert the
code into the initialization sequence specific to the hardware platform requirements. These platform requirements include but are not
limited to user clock device, user FPGA\ASIC\baseband processor JESD204B and JESD204C interface, data path control, and various
system checks governed by the application.
The initialization process consists of the following steps. Some of the steps are done by the ARM. All functions before loading the stream
must be write only (use SPI write or bit field write, no SPI read).
The following steps are the pre-multichip synchronization (MCS) initialization sequence:
1. adi_adrv9025_Initialize
a. Set SPI controller settings
b. Set master bias
c. Enable pin pads
d. Set device clock hsdig divider
e. Load PFIRs per channel
f. Load gain tables
g. Load transmitter attenuation tables
h. Load stream binary
i. Load ARM binary
j. Write initialization structure/receiver/transmitter profile info into ARM memory
k. ARM run = 1
l. Wait for ARM boot to complete
m. Verify ARM checksum
2. ARM configuration
a. Receiver/transmitter channel configuration (all half-band filter enables, clock dividers)
b. Clock PLL and SERDES PLL configuration
c. JESD204B and JESD204C configuration
d. ARM switches to clock PLL output after PLL locked
The following steps are the post MCS initialization sequence:
1. MCS:
a. Set ARM run = 0
b. Enable MCS state machine to listen for new SYSREF pulses
c. Customer sends SYSREF pulses
d. When MCS state machine complete, ARM run = 1
2. Run ARM init calibrations
3. Enable tracking cals
a. Enable radio control pin mode or not
b. Setup any GPIO for ARM/streams
The system is now ready.
TRANSPORT TRANSPORT
LAYER LAYER
SCRAMBLING SCRAMBLING
LAYER LAYER
Figure 10 and Figure 11 illustrate how the JESD204B and JESD204C transmit and receive protocols are implemented.
The data interface blocks in the transceiver can operate in either JESD204B or JESD204C modes. Fewer number of lanes may be needed
when operating in JESD204C, which results in simpler PCB layout and less power consumption.
TRANSPORT LAYER LINK LAYER PHYSICAL LAYER
FRAMER 0
ADC
LANE
SAMPLES TO 8B10B/64B66B XBAR
LANES ENCODE
ADC
FRAMER 2
LANE
SAMPLES TO 8B10B/64B66B XBAR
LANES ENCODE
CLOCK GENERATION
22770-012
AND SYSREF
RETIMING
Figure 12. High Level JESD204B/JESD204C Interface Block Diagram (Receiver Only)
The framers take care of all the encoding functions of the interface and is highly configurable with regard to interface rates and
combinations of RF receiver and observation receiver data streams, either separately or utilizing link sharing (receiver and observation
receiver data time multiplexed on the same lane according to the receiver and transmitter frame timing) for up to four lanes. To assist in
debugging, the framers contain an internal data generator allowing a number of test patterns and PBRS patterns to be sent across the link.
There are three framers in the transceiver to allow flexibility in configuring the output data streams. Data samples from the receivers and
observation receivers can be routed through a cross bar to put specific data on a particular lane. The framer supports separate lanes for
receiver and observation receiver, as well supporting link sharing in TDD mode that reduces the number of physical lanes needed by
putting receiver data on the lanes during the receiver slot and observation receiver data on the same lanes during the transmitter slot.
Figure 13 shows the configuration for use case 83C with link sharing (UC83C-LS) where all the signals are routed into Framer 0. Framer 1
and Framer 2 are not needed and are unused. This profile is a 25G 204C profile.
22770-013
UC83C-LS
Figure 13. Example Framer Configuration for UC83C-LS
UC26C-NLS
22770-014
Figure 14 shows a configuration for a non-link sharing use case UC26C-NLS. This profile has a unique configuration where the datalink
on the observation receiver must have the data in a specific format (IIQQ). Framer 0 has more flexibility than the other two framers. For
this case Framer 0 is used to format the observation receiver data as needed, and the other two framers are used to route the receiver data
on the lanes. This is a 16G JESD204C profile.
The transport and link layers for JESD204B/JESD204C are performed in the framers. This transceiver has three JESD204B/JESD204C
framers that get OR’ed together into four serial lanes. There are 20 logical converters to choose from, and samples from any of the logical
converters can be connected to any framer using the sample crossbar. Each framer has its own SYNC signal. This allows links to be
brought up or down for reconfiguration without interrupting the other links.
The three framers are capable of operating at different sample rates. The highest sample rate must be a power of two multiple of the lower
sample rates (2×, 4×, 8×). There are two options to make this work: oversample at the framer input or bit repeat at the framer output.
yk
b–1 b0 b1
ak + 1 ak ak – 1
D FF FF FF
CLK
22770-015
yk = b–1ak + 1 + b0ak + b1ak – 1
This serializer preemphasis circuit allows boosting the amplitude anytime the serial bit changes state. If no bit transition occurs, the
amplitude is left unchanged. Preemphasis helps open the eye for longer PCB traces or when the parasitic loading of connectors has a
noticeable effect. In most cases, to find the best setting, a simulation or measurement of the eye diagram with a high-speed scope at the
receiver is recommended, or as mentioned above an internal eye monitor after the equalizer is the optimum solution. The serializer
preemphasis is controlled by setting a precursor and a postcursor setting, which are listed in Table 12 and Table 13, respectively.
Table 12. Precursor Amplitude Settings
Emphasis (Decimal) Emphasis (dB)
0 0
1 3
2 6
Table 13. Postcursor Amplitude Settings
Emphasis (Decimal) Emphasis (dB)
0 0
1 3
2 6
3 9
4 12
The adi_adrv9025_SerCfg_t data structure contains the information required to properly configure the serializer. Details of each member
can be found in API documentation (/c_src/doc). The transceiver evaluation software has the option to output example data structures
with values chosen from the configuration tab of the software.
typedef struct adi_adrv9025_SerCfg
{
uint8_t serAmplitude;
uint8_t serPreEmphasis;
uint8_t serPostEmphasis;
uint8_t serInvertLanePolarity;
} adi_adrv9025_SerCfg_t;
Framer
Each framer receives logical converter samples and maps them to high speed serial lanes. The mapping changes depending on the
JESD204B/JESD204C configuration chosen, specifically the number of lanes, the number of converters, and the number of samples per
converter. Figure 16 provides one valid framer configuration for this device.
The converter samples are passed into the framer through a sample crossbar. The sample crossbar allows any of the 20 logical converters
to be mapped to any input of any framer. For example, this can be used to swap I and Q samples or to mix and match different receivers’
data across different logical lanes. The framer lane data outputs also pass through a lane crossbar. This allows mapping of any framer
CONVERTER 0 CONVERTER 1
SAMPLE 0 SAMPLE 0
WORD 0 WORD 1
NG 0 NG 1
LANE 0
CONFIGURATION
F = 4 OCTETS
DATA:
CF = 0
Cr0 S0 [15:8]
Cr1 S0 [15:8]
Cr0 S0 [7:0]
Cr1 S0 [7:0]
CS = 0
F=4 LANE 0
L=1
M=2
N = 16
N’ = 16
22770-016
S=1 TIME
DEFRAMER 0
DAC
LANE
LANES TO 8B10B/64B66B XBAR
SAMPLES ENCODE
DAC
SERDOUTA
SAMPLE SERDOUTB
XBAR DESERIALIZERS SERDOUTC
DAC DEFRAMER 1 SERDOUTD
LANE
SAMPLES TO 8B10B/64B66B XBAR
LANES ENCODE
DAC
CLOCK GENERATION
22770-017
AND SYSREF
RETIMING
Figure 17. High Level JESD204B/JESD204C Interface Block Diagram (Transmitter Only)
22770-018
UC26C-NLS
Figure 19 shows the configuration for UC83C-LS that uses Deframer 0. Only two lanes are needed to realize the maximum chip RF
bandwidth (450 MHz) across all four transmitters. This device has two JESD204B/JESD204C deframers that share four physical lanes.
The two deframers feed a sample crossbar that connects to eight DACs. All converters must run at the same sample rate. Likewise, all
lanes must run at the same data rate. Each deframer is capable of receiving a PRBS sequence and accumulating error counts. The
deserializers have adjustable equalization circuits to counteract the insertion loss due to various PCB trace lengths and material.
22770-019
UC83C-LS
Figure 19. Example Deframer Configuration for UC83C-LS
NG 0 NG 1 NG 2 NG 3
LANE 0 LANE 1
CONFIGURATION
F = 4 OCTETS
DATA:
CF = 0
Cr0 S0 [15:8]
Cr1 S0 [15:8]
Cr0 S0 [7:0]
Cr1 S0 [7:0]
CS = 0
F=4 LANE 0
L=2
M=4
N = 16
N’ = 16
S=1
Cr2 S0 [15:8]
Cr3 S0 [15:8]
Cr2 S0 [7:0]
Cr3 S0 [7:0]
LANE 1
22770-020
TIME
} adi_adrv9025_DfrmCfg_t;
Precondition
The transmitter JESD204B/JESD204C link(s) must be configured and running to use this function.
Dependencies
device->devHalInfo
Parameters
Table 36. adi_adrv9025_DeframerStatusGet(…) Parameters
Parameter Description
*device A pointer to the device settings structure
deframerSel Select the deframer to read back the status of ADI_ADRV9025_DEFRAMER_0, ADI_ADRV9025_DEFRAMER_1, or
ADI_ADRV9025_DEFRAMER_0_AND_1
deframerStatus 8 bit deframer status word return value
Return Values
See Table 19.
adi_adrv9025_DfrmPrbsCheckerStateSet(…)
adi_adrv9025_DfrmPrbsCheckerStateSet(adi_adrv9025_Device_t *device, adi_adrv9025_DfrmPrbsCfg_t
*dfrmPrbsCfg)
This function configures and enables or disables the transceiver lane or sample PRBS checker. This is a debug function to be used for
debug of the transmitter JESD204B/JESD204C lanes.
If the checkerLocation parameter is ADI_ADRV9025_PRBSCHECK_LANEDATA, the PRBS is checked at the output of the deserializer.
If the checkerLocation parameter is ADI_ADRV9025_PRBSCHECK_SAMPLEDATA, the PRBS data is expected to be framed
Rev. 0 | Page 46 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
JESD204B/JESD204C data and the PRBS is checked after the JESD204B/JESD204C data is deframed. For the sample data, there is only a
PRBS checker on DAC 0 input. The lane PRBS has a checker on each deserializer lane.
Precondition
This function can be called any time after device initialization.
Dependencies
device->devHalInfo
Parameters
JESD204C
For the deframer side in JESD204C mode, follow these steps:
1. Initialize and bring up the baseband processor framer side.
2. Send the JESD204C initialization calibration command. This brings the link up because it is now protocol based (no SYNC signal
needed).
3. Enable the JESD204C tracking calibrations. This maintains the link parameters on a 60 second schedule.
For the framer side, link establishment follows the same procedure. First the framer is enabled and then the baseband processor deframer
synchronizes to the signal.
The adi_board_adrv9025_JesdBringup API function is used to configure and establish the data links. The overall detailed sequence,
including the MCS, is in the adi_adrv9025_daughter_board.c file.
FIRST TIME SYSTEM BRING UP—CHECKING LINK INTEGRITY
The following is a list of suggested actions when checking the link integrity during first time system bring up:
1. For ease of debug during bring up, it is recommended to start with a single lane on both sides and with the minimum possible link speed.
2. Check that the parameters are configured the same at both ends of the transceiver and FPGA. The adi_adrv9025_DfrmCfg_t data
structure contains the information required to properly configure each deframer.
3. There is a PRBS checker available that can be used to check signal integrity related issues. Initialize the transceiver as outlined in the
Link Initialization and Debugging section. Enable the PRBS generator on the baseband processor with the desired PRBS sequence.
4. Confirm that the lanes baseband processor is transmitting PRBS on are the actually configured in the transceiver. Start with the
PRBS errors. Ensure baseband processor and the transceiver are both using the same PRBS signal and the transceiver expects the
same PRBS 7 from baseband processor.
5. Call the API adi_adrv9025_DfrmPrbsCheckerStateSet(…) passing the actual device being evaluated, the PRBS sequence to check,
and the location at which to check the PRBS sequence.
6. After some amount of time, call the API function to check the PRBS errors. This can be done by calling the API function
adi_adrv9025_DfrmPrbsErrCountGet(…) passing the actual device being evaluated, the counter selection lane to be read, and the
error count is returned in the third parameter passed.
7. The user can use adi_adrv9025_DeframerSysrefCtrlSet(…) API so that the external SYSREF signal at the pin can be gated off
internally so the deframer does not see a potential invalid SYSREF pulse before it is configured correctly.
8. After bringing up of the JESD204B link or for debugging the deframer, the baseband processor can check the status of the deframer
using adi_adrv9025_DeframerStatusGet(…).
FrmTestDataCfg=Types.adi_adrv9025_FrmTestDataCfg_t()
FrmTestDataCfg.framerSelMask=int(Types.adi_adrv9025_FramerSel_e.ADI_ADRV9025_FRAMER_0)
print FrmTestDataCfg.framerSelMask
FrmTestDataCfg.testDataSource=Types.adi_adrv9025_FramerDataSource_e.ADI_ADRV9025_FTD_PRBS7
FrmTestDataCfg.injectPoint=Types.adi_adrv9025_FramerDataInjectPoint_e.ADI_ADRV9025_FTD_SERIALIZE
R
adrv9025.DataInterface.FramerTestDataSet(FrmTestDataCfg)
#Enable Deserializer
link.platform.board.Fpga.Prbs.PrbsDeserializerEnable(0xF,0x1) #1:PRBS7;2:PRBS9;3:PRBS15;5:PRBS31
link.platform.board.Fpga.Prbs.PrbsDeserializerEnable(0xF,0x1) #1:PRBS7;2:PRBS9;3:PRBS15;5:PRBS31
#clear PRBS error
link.platform.board.Fpga.Prbs.PrbsErrorClear(0xF)
#Read PRBS error
#adrv9025.DataInterface.FramerTestDataInjectError(Types.adi_adrv9025_FramerSel_e.ADI_ADRV9025_FR
AMER_0,0x0)
time.sleep(1)
errCounts=Array[System.UInt32]([0,0,0,0,0,0,0,0])
errCounts=link.platform.board.Fpga.Prbs.PrbsErrorCountsRead(errCounts)[1]
errCounts=[int(data) for data in errCounts]
print errCounts #[0,0,0,0,0,0,0,0]
When this script is run, it results in the number of errors per enabled lane. Note that only the first four positions are valid and the last
four positions are always 0. To create errors as a test, change the 0x1 in the line immediately below the Enable Deserializer comment to
one of the other values indicated. The enabled lanes show errors by enabled lane position.
PRBS ERRORS
When the baseband processor is transmitting PRBS, confirm that the active lanes are also configured properly in the transceiver. Start
with the PRBS errors. Ensure that the baseband processor and the transceiver are both using the same PRBS signal and the transceiver
expects the same PRBS 7 from baseband processor.
If stuck in CGS mode, or if SYNC stays at the logic low level or pulses high for less than four multiframes, take the following steps:
1. Power down the system and check the following:
a. SYSREF and SYNC signaling is dc-coupled.
b. Check that the pull-down or pull-up resistors are not dominating the signaling. For example, if values are too small or shorted
and therefore cannot be driven correctly.
c. Verify that the differential pairs traces are length matched.
d. Verify that differential impedance of the traces is 100 Ω.
2. Power up the system and check the following:
a. If there is a buffer/translator in the SYNC path, make sure it is functioning properly.
b. Check that the SYNC source is properly configured to produce compliant logic levels.
3. Check SYNC signaling using the following actions:
a. If SYNC is static and logic low, the link is not progressing beyond the CGS phase. There is either an issue with the data being
sent or the JESD204B receiver is not decoding the samples properly. Verify /K/ characters are being sent, verify receive
configuration settings, and verify the SYNC source. Consider overdriving the SYNC signal and attempt to force link into ILAS
mode to isolate link receiver vs. transmitter issues.
Rev. 0 | Page 50 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
b. If SYNC is static and logic high, verify that the SYNC logic level is configured correctly in the source device. Check pull-up and
pull-down resistors.
c. If SYNC pulses high and returns to a logic low state for less than six multiframe periods, the JESD204 Link is progressing
beyond the CGS phase but not beyond ILAS phase. This suggests that the /K/ characters are okay and the basic function of the
CDR is working. Proceed to ILAS troubleshooting.
d. If SYNC pulses high for a duration of more than six multiframe periods, the link is progressing beyond the ILAS phase and is
malfunctioning in the data phase. See the Link Initialization and Debugging for troubleshooting tips.
4. Check serial data using the following actions:
a. Verify that the transmitter data rate and the receiver expected rate are the same.
b. Measure lanes with a high impedance probe (a differential probe, if possible). If characters appear incorrect, ensure lane
differential traces are matched, the return path on the PCB is not interrupted, and devices are properly soldered on the PCB.
CGS characters are easily recognizable on a high speed scope.
c. Verify /K/ characters with a high impedance probe. If /K/ characters are correct, the transmitter side of the link is working
properly. If /K/ characters are not correct, the transmitter device or the board lane signals have an issue.
d. Verify the transmitter CML differential voltage on the data lanes.
e. Verify the receiver CML differential voltage on the data lanes.
f. Verify that the M and L configuration parameters values match between the baseband processor and the transceiver. Otherwise,
the data rates may not match. For example, for M = 2 and L = 2, expect ½ the data rate over the serial interface as compared to
the M = 2 and L = 1 case.
g. Ensure that the device clock is phase locked and at the correct frequency.
If the user is stuck in ILAS mode, or if SYNC pulses high for approximately four multiframes, take the following steps:
1. Link parameter conflicts
a. Verify that ILAS multiframes are transmitting properly and verify the link parameters on the transmitter device, the receiver
device, and those parameters transmitted in the ILAS second multiframe are all valid.
b. Calculate expected ILAS length tFRAME, tMULTIFRAME, and 4 × tMULTIFRAME and verify that ILAS is attempted for approximately four
multiframes.
2. Verify that all lanes are functioning properly. Ensure that there are no multilane/multilink conflicts.
If the interface enters data phase but occasionally the link resets (returns to CGS and ILAS before returning to data phase), look for the
following issues and make adjustments to the link parameter to remove the condition:
• Invalid setup and hold time of periodic or gapped periodic SYSREF or SYNC signal.
• Link parameter conflicts
• Character replacement conflicts
• Scrambling problem, if enabled
• Lane data corruption, noisy or jitter can force the eye diagram to close
• Spurious clocking or excessive jitter on device clock
def FpgaRead(address):
data = link.platform.board.Fpga.Hal.RegisterRead(address, 0)
print "FPGA Read Address " + hex(address) + ": " + hex(data[1])
def FPGAPRBSSetup(mode_is_204c=0):
enablePRBS_ch1 = link.platform.board.Fpga.Hal.RegisterRead(0x43400220,0)
#Read the value in PRBS control register (FPGA ch1 testmodes register)
disablePRBS = enablePRBS_ch1[1] & 0xF0ffFFFF
#Zero bits 27-24 without affecting the other bits
in the register.
enablePRBS7 = disablePRBS | 0x01000000
#Set the enablePRBS variable bits 27-24 to 0001
to enable PRBS7
enablePRBS23 = disablePRBS | 0x05000000
#Set the enablePRBS variable bits 27-24 to 0101 to
enable PRBS23
ErrorCount = Types.adi_adrv9025_DfrmPrbsErrCounters_t()
dfrmPrbsCfg = Types.adi_adrv9025_DfrmPrbsCfg_t()
dfrmPrbsCfg.deframerSel = dfrm_sel
dfrmPrbsCfg.polyOrder = Types.adi_adrv9025_DeframerPrbsOrder_e.ADI_ADRV9025_PRBS7
adrv9025.DataInterface.DfrmPrbsCountReset()
adrv9025.DataInterface.DfrmPrbsErrCountGet(ErrorCount) #api method to read error
counters + flags
if ErrorCount.laneErrors[0] == 0:
print "No Errors detected as expected in PRBS7 mode. Will switch to PRBS23 now"
else:
print "Errors detected!! Link not good, please check link"
adrv9025.DataInterface.DfrmPrbsCountReset()
adrv9025.DataInterface.DfrmPrbsErrCountGet(ErrorCount)
if ErrorCount.laneErrors[0] != 0:
print "Errors detected as expected with PRBS mismatch. Will switch back to PRBS7 now"
else:
print "Errors not detected with PRBS mismatch !! Please verify PRBS generator in FPGA"
Insert the following in the Iron Python tab after the line: ##### YOUR CODE GOES HERE ##### (approximately Line 40). See Figure 21 for
the SPO test measurement result.
mode_is_204c = 0 # need to setup FPGA differently for 204c vs. 204b mode, so
set this bit appropriately.
foldername = "C:\\tmp"
dfrmPrbsCfg = Types.adi_adrv9025_DfrmPrbsCfg_t()
ErrorCount = Types.adi_adrv9025_DfrmPrbsErrCounters_t()
dfrm_sel = Types.adi_adrv9025_DeframerSel_e.ADI_ADRV9025_DEFRAMER_0
dfrmPrbsCfg.deframerSel = dfrm_sel
dfrmPrbsCfg.polyOrder = Types.adi_adrv9025_DeframerPrbsOrder_e.ADI_ADRV9025_PRBS7 #can
configure PRBS mode on Madura
dfrmPrbsCfg.checkerLocation =
Types.adi_adrv9025_DeframerPrbsCheckLoc_e.ADI_ADRV9025_PRBSCHECK_LANEDATA
adrv9025.DataInterface.DfrmPrbsCheckerStateSet(dfrmPrbsCfg)
adrv9025.DataInterface.DfrmPrbsCountReset()
adrv9025.DataInterface.DfrmPrbsErrCountGet(ErrorCount) #Run initial PRBS error check -
should have zero errors initially
22770-021
The test reported in Figure 21 was run on UC14C-LS on the evaluation board platform with the result indicating that initially there are no
PRBS errors. Then errors are injected with the resulting error counts, and the eye sweep is run with no errors being reported. In this case,
only two deframer lanes are in use, Lane A and Lane C. Data for the unused lanes are 0.
Rev. 0 | Page 55 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Two files are also generated by the script: cntrdata_lane.txt and eyedata_lane.txt.
The cntrdata_lane.txt indicates the number of errors counted as the phase is adjusted, and the count goes to 0 in the center of the eye.
In the eyedata_lane.txt file, errors are represented by 1 and the eye indicated by 0. Similarly, the 0s occur toward the center of the
waveform, indicating an acceptable eye width. Figure 22 and Figure 23 show excerpts from the center of the files.
22770-022
Figure 22. cntrdata_lane.txt Showing PRBS Error Counts About the Eye Center
22770-023
DESKEWED AND
DEFRAMER ELASTIC LMFC/LEMC
LANE INPUT 0 BUFFER ALIGNED DEFRAMER
LANE 0
DESKEWED AND
DEFRAMER ELASTIC LMFC/LEMC
LANE INPUT 1 BUFFER ALIGNED DEFRAMER
LANE 1
DESKEWED AND
ELASTIC
22770-024
DEFRAMER LMFC/LEMC
LANE INPUT L-1 BUFFER ALIGNED DEFRAMER
LANE L-1
SYSREF
MULTIFRAME
SYNC~
DETERMINISTIC DELAY FROM SYSREF SAMPLED HIGH TO LMFC ZERO-CROSSING FOR LMFC OFFSET = N
LMFC
(LMFC OFFSET = N)
DETERMINISTIC DELAY FROM SYSREF SAMPLED HIGH TO LMFC ZERO-CROSSING FOR LMFC OFFSET = N + 1
LMFC
(LMFC OFFSET = N + 1)
EARLIEST
Rx LANE K KKK KKK KKK KK KKK KKK KK K KK KR DD DD ARQC CD D DAR DD DD A
DEVICE ARRIVAL
LATEST
LANE K KKK KKK KKK KK KKK KKK KK KKK KK KKK RDD D DA RQC CD DDA RDD D DA
ARRIVAL
DATA STORED IN ELASTIC BUFFER FOR
EARLIEST LANE WHEN LMFC OFFSET = N
DATA STORED IN ELASTIC BUFFER FOR
EARLIEST LANE WHEN LMFC OFFSET = N + 1
DATA STORED IN ELASTIC BUFFER FOR
LATEST LANE WHEN LMFC OFFSET = N
DATA STORED IN ELASTIC BUFFER FOR
LATEST LANE WHEN LMFC OFFSET = N + 1
ELASTIC BUFFER
OUTPUT ON K KKK KKK KKK KK KKK KKK KK KKK KKK KKK KK KKK KKK KK KRD D DD ARQC CD DD ARD D DDA
ALL LANES
(LMFC OFFSET = N) DETERMINISTIC DELAY FROM Tx ILA OUTPUT
TO Rx ILA OUTPUT WHEN LMFC OFFSET = N
ELASTIC BUFFER
OUTPUT ON K KKK KK KKK KKK KKK KKK KK KKK KKK KK KKK KKK KKK KK KKR DD D DARQC C D D DA RDD DD A
ALL LANES
(LMFC OFFSET = N + 1)
22770-025
DETERMINISTIC DELAY FROM Tx ILA OUTPUT
TO Rx ILA OUTPUT WHEN LMFC OFFSET = N + 1
Figure 25. Impact of LMFC Offset on Elastic Buffer Depth in JESD204B Mode
SYSREF
DETERMINISTIC DELAY FROM SYSREF SAMPLED HIGH TO LEMC ZERO-CROSSING
FOR LMFC OFFSET = N
LEMC
(LEMC OFFSET = N)
DETERMINISTIC DELAY FROM SYSREF SAMPLED HIGH TO LEMC ZERO-CROSSING
FOR LMFC OFFSET = N + 1
LEMC
(LEMC OFFSET = N + 1)
EARLIEST LANE 0 1 31 0 1 31 0 1 31
ARRIVAL
MB 0 MB E-1 MB 0
EARLIEST LANE 0 1 31 0 1 31 0 1 31
ARRIVAL
MB 0 MB E-1 MB 0
Figure 26. Impact of LEMC Offset on Elastic Buffer Depth in JESD204C Mode
22770-027
Figure 27. Deframer 0 lmfcOffset Field for the ADRV9025Init_StdUseCase26C_nonLinkSharing.profile File
Note that the device must be reprogrammed after changing an LMFC/LEMC offset in the profile file and loading it into ARM memory
for the change to take effect. Also note that if the goal is to sweep the LMFC/LEMC offset values for test purposes without any need for
RF performance (for example, to determine the optimal LMFC/LEMC value), it is not necessary to run the initialization calibrations
when programming the transceiver. Not running the init calibrations makes the programming process quicker.
Setting the LMFC/LEMC Offset in the adi_adrv9025_DfrmCfg Data Structure
An alternative way of programming the LMFC/LEMC offset consists of using the lmfcOffset field of the adi_adrv9025_DfrmCfg data
structure for the relevant deframer (see Figure 28). Note that the device must be reprogrammed after changing the LMFC/LEMC offset
for a given deframer in the adi_adrv9025_DfrmCfg data structure for the change to take effect. Also note that if the goal is to sweep the
LMFC/LEMC offset values for test purposes without any need for RF performance (for example, to determine the optimal LMFC/LEMC
value), it is not necessary to run the init cals when programming the transceiver. Not running the init cals makes the programming
process quicker.
22770-028
Deframer 1:
• Register 0x6C8E, Bits[7:0]: jrx_tpl_phase_adjust[7:0]. Bits[7:0] of the global LMFC/LEMC phase adjustment 16-bit word for
Deframer 1. The valid range of phase adjustment values is 0 to (K × S) − 1 (where K is the number of frames per
multiframe/extended multiblock, and S is the number of samples per converter per frame cycle).
• Register 0x6C8F, Bits[7:0]: jrx_tpl_phase_adjust[15:8]. Bits[15:8] of the global LMFC/LEMC phase adjustment 16-bit word for
Deframer 1. The valid range of phase adjustment values is 0 to (K × S) − 1 (where K is the number of frames per
multiframe/extended multiblock, and S is the number of samples per converter per frame cycle).
Note that a SYSREF pulse must be applied and then the link between the JESD204B and JESD204C framer and JESD204B and JESD204C
deframer of the transceiver must be reestablished after changing the LMFC/LEMC offset through SPI writes for a given deframer for the
change to take effect.
It is also possible to set the LMFC/LEMC offset value by writing to the following SPI registers:
Deframer 0:
• Register 0x6A50, Bits[7:0]: jrx_tpl_phase_adjust[7:0]. Bits[7:0] of the LMFC/LEMC phase adjustment 16-bit word for deframer 0.
The valid range of phase adjustment values is 0 to (K × S) − 1 (where K is the number of frames per multiframe/extended multiblock,
and S is the number of samples per converter per frame cycle).
• Register 0x6A51, Bits[7:0]: jrx_tpl_phase_adjust[15:8]. Bits[15:8] of the LMFC/LEMC phase adjustment 16-bit word for deframer 0.
The valid range of phase adjustment values is 0 to (K × S) − 1 (where K is the number of frames per multiframe/extended multiblock,
and S is the number of samples per converter per frame cycle).
Deframer 1:
• Register 0x6C50, Bits[7:0]: jrx_tpl_phase_adjust[7:0]. Bits[7:0] of the global LMFC/LEMC phase adjustment 16-bit word for
deframer 1. The valid range of phase adjustment values is 0 to (K × S) − 1 (where K is the number of frames per
multiframe/extended multiblock, and S is the number of samples per converter per frame cycle).
• Register 0x6C51, Bits[7:0]: jrx_tpl_phase_adjust[15:8]. Bits[15:8] of the global LMFC/LEMC phase adjustment 16-bit word for
deframer 1. The valid range of phase adjustment values is 0 to (K × S) − 1 (where K is the number of frames per
multiframe/extended multiblock, and S is the number of samples per converter per frame cycle).
Reading Back the Buffer Depths for Each Deframer Lanes
It is possible to read back the depths of the elastic buffers for each deframer lane in the Deframer 0 and Deframer 1 SPI registers of the
device. The corresponding registers for Deframer 0 and Deframer 1 are:
Deframer 0:
• Register 0x6A8A, Bits[7:0]: buffer depth for Lane 0 of Deframer 0
• Register 0x6A8B, Bits[7:0]: buffer depth for Lane 1 of Deframer 0
• Register 0x6A8C, Bits[7:0]: buffer depth for Lane 2 of Deframer 0
• Register 0x6A8D, Bits[7:0]: buffer depth for Lane 3 of Deframer 0
Deframer 1:
• Register 0x6C8A, Bits[7:0]: buffer depth for Lane 0 of Deframer 1
• Register 0x6C8B, Bits[7:0]: buffer depth for Lane 1 of Deframer 1
• Register 0x6C8C, Bits[7:0]: buffer depth for Lane 2 of Deframer 1
• Register 0x6C8D, Bits[7:0]: buffer depth for Lane 3 of Deframer 1
Rev. 0 | Page 62 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
In JESD204B mode, the unit of the values read back in those registers is 4 octets. In other words, an increment of the buffer depth value
read back by 1 unit corresponds to an actual increment by 4 octets. The values read back range from 0 to (K × F)/4 (where K is the
number of frames per multiframe, and F is the number of octets per lane in a frame cycle).
In JESD204C mode, the unit of the values read back in those registers is 8 octets. In other words, an increment of the buffer depth value
read back by 1 unit corresponds to an actual increment by 8 octets. The values read back range from 0 to E × 32 (where E is the number of
multiblocks in an extended multiblock). Note that the size of the elastic buffer is 512 octets. When E > 2, the maximum buffer depth
values read back are therefore limited to 64, which corresponds to 512 octets.
Note that the values reported in each of those registers correspond to a value based on the positions of the elastic buffer read and write
pointers. The value has a fixed offset and does not represent the exact number of octets in the elastic buffer.
Buffer Protection
By default, an automatic buffer protection is enabled for the elastic buffers. This automatic buffer protection prevents the read and write
pointers from being too close, which can lead to corrupted data being read out of the elastic buffers, because data can be read at the same
time it is being written. When the automatic buffer protection detects that the read and write pointers are too close to each other for any
of the elastic buffers, a predetermined buffer depth is used, the data out of the elastic buffer no longer aligns to the LMFC/LEMC output
signal, and deterministic latency is lost.
Checking if the Buffer Protection is Active
It is possible to read back the elastic buffers if the buffer protection is active in the Deframer 0 and Deframer 1 SPI registers.
38
36
34
32
30
28
26
24
22
20
18
16
14
12
10
8
6
4
2
0
–2
–4 0
22770-029
0 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
LMFC OFFSET
Figure 29. Buffer Depths for Lane 0 and Lane 1 vs. LMFC Offset on the Customer Evaluation Board with the ADRV9025Init_StdUseCase50_nonLinkSharing Profile and
Buffer Protection Enabled
Selecting the Optimal LMFC/LEMC Offset for a System
The buffer depths are expected to be slightly different after power cycling the system or from one link establishment to another due to the
variance in parameters such as synchronization delays and physical lane skews. Buffer depths are also expected to slightly change from
system to system due to process, voltage, and temperature (PVT) variations.
Therefore, it is recommended to select an LMFC/LEMC offset value resulting in optimal buffer depths to account for those variations and
maintain deterministic latency on all boards for a given system. The LMFC/LEMC offset to be selected depends on whether buffer
protection is enabled or not.
Selecting the Optimal LMFC Offset for a System in JESD204B Mode with Buffer Protection Enabled
To ensure deterministic latency when buffer protection is enabled, it is recommended to select an LMFC offset value that gives buffer
depth values as close as possible to the center of the linear part of the buffer depth vs. LMFC offset plot for all the lanes used. To find the
LMFC offset corresponding to those optimal buffer depths, read back the buffer depth values for all the used lanes for all LMFC offset
values with buffer protection enabled on a sample board for a given system. Measuring the buffer depths per LMFC offset for 10 power
cycles or link establishments (with application of a new SYSREF pulse each time) provides a good indication of the buffer depths spread
for each LMFC offset value. Select an LMFC offset value that results in buffer depths as close as possible to the center of the linear part of
the buffer depth vs. the LMFC offset plot the user creates for all the used lanes.
Figure 29 shows this process using the customer evaluation board programmed with the ADRV9025Init_StdUseCase50_nonLinkSharing
profile, with automatic buffer protection enabled. In that example, an LMFC offset value of 9 is optimal because it results in a buffer depth
around 37 or 38 for each lane, which is in the middle of the linear part of the plot and, therefore, guarantees deterministic latency.
If the goal for the system is to achieve deterministic latency with a latency as short as possible, it may be desirable to select an LMFC
offset value that results in buffer depths as small as possible. In that case, an LMFC offset value above the highest LMFC offset resulting in
the automatic buffer protection being active with some additional headroom to account for PVT variations can be selected. In that
situation, carry out thorough system testing over all possible temperature, supply, and board variations to ensure that the automatic buffer
protection never gets activated and that deterministic latency is maintained in all possible operating conditions for the system.
Avoid LMFC offset values with large buffer depths (that is, near a value of (K × F)/4) because, for some combinations of JESD204B
parameters, it can lead to the write and read pointers being too close and, therefore, can result in data corruption.
Selecting the Optimal LMFC Offset for a System in a JESD204B Mode with Buffer Protection Disabled
When buffer protection is disabled, it is recommended to select an LMFC offset value that has buffer depths as close as possible to (K ×
F)/8 to account for variations and maintain deterministic latency on all boards for a given system.
40
38
36
34
32
30
28
26
24
22
20
18
16
14
12
10
8
6
4
2
0
22770-030
0 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
LMFC OFFSET
Figure 30. Buffer Depths Read Back for Lane 0 and Lane 1 vs. LMFC Offset on the Customer Evaluation Board with ADRV9025Init_StdUseCase50_nonLinkSharing
Profile and Buffer Protection Disabled
In this example, an LMFC offset value of 6 or 7 is an optimal choice because the result is buffer depths around 31 and 34 for all the used
lanes, guaranteeing deterministic latency with no chance of data corruption due to the read and write pointers being too close.
If the goal for the system is to achieve deterministic latency with a latency as short as possible, it may be desirable to select an LMFC
offset value that results in buffer depths as small as possible but still above a small number (for example, 10 or 12) to avoid data corruption
due to the read and write pointers being too close. Note that in that situation, carry out thorough system testing over all possible
temperature, supply, and board variations to ensure that data corruption never occurs in all possible operating conditions for the system.
Avoid LMFC offset values that results in a large buffer depth (that is, near a value of (K × F)/4) because, for some combinations of
JESD204B parameters, it can lead to the write and read pointers being too close and, therefore, can result in data corruption.
Selecting the Optimal LEMC Offset for a System in JESD204C Mode When E ≤ 2 with Buffer Protection Enabled
In JESD204C mode, when E ≤ 2, it is also recommended to select an LEMC offset that results in buffer depth values as close as possible to
the center of the linear part of the buffer depth vs. LEMC offset plot for all the lanes used. To find that LEMC offset, read back the buffer
depth values for all the used lanes for all LEMC offset values with buffer protection enabled on a sample board for a given system.
Measuring the buffer depths per LEMC offset for 10 power cycles or JESD204C link establishments (with application of a new SYSREF
pulse each time) provides an optimal indication of the buffer depths spread for each LEMC offset.
Figure 31 illustrates this process using the customer evaluation board programmed with the ADRV9025Init_StdUseCase26C_nonLinkSharing
profile, with automatic buffer protection enabled.
In this example, LEMC offset values between 36 and 40 are optimal choices because the result is a buffer depth around 24 for each lane,
which is in the middle of the linear part of the plot and, therefore, guarantees deterministic latency.
If the goal for the system is to achieve deterministic latency with a latency as short as possible, it may be desirable to select an LEMC offset
value that results in buffer depths as small as possible. In that case, an LEMC offset value above the highest LEMC offset resulting in the
automatic buffer protection being active with some additional headroom to account for PVT variations can be selected. In that situation,
Rev. 0 | Page 65 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
carry out thorough system testing over all possible temperature, supply, and board variations to ensure that the automatic buffer
protection never gets activated and that deterministic latency is maintained in all possible operating conditions for the system.
Avoid LEMC offset values that result in large buffer depths (near a value of E × 32) because, for some combinations of JESD204C
parameters, it can lead to the write and read pointers being too close and, therefore, can result in data corruption.
MADURA - UC26C-NLS - DEV CLOCK = 245.76MHz
S = 1, M = 8, N’ = 16, K = 64, L = 4, F = 4, E = 1, Tx IQRATE = 491.52MHz
BUFFER PROTECTION ENABLED
38 1
36
34 LANE 0 LANE 3
BUFFER DEPTH BUFFER DEPTH
32 (REGISTER 0x6a8a) (REGISTER 0×6a8d)
30
LANE 1 BUFFER
28 BUFFER DEPTH PROTECTION
(REGISTER 0×6a8b) BIT
20
18
16
14
12
10
8
6
4
2
0
–2
22770-031
–4 0
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62
LEFC OFFSET
Figure 31. Buffer Depths for Lane 0, Lane 1, Lane 2, and Lane 3 vs. LEMC Offset on the Customer Evaluation Board with the
ADRV9025Init_StdUseCase26C_nonLinkSharing Profile and Buffer Protection Enabled
Selecting the Optimal LEMC Offset for a System in JESD204C Mode When E ≤ 2 with Buffer Protection Disabled
When buffer protection is disabled, it is recommended to select an LEMC offset value that results in buffer depths as close as possible to
(E × 32)/2 to account for variations and maintain deterministic latency on all boards for a given system. To find the LEMC offset
corresponding to that optimal buffer depth, read back the buffer depth values for all LEMC offset values for all the used lanes with buffer
protection disabled on a sample board for a given system. Measuring the buffer depths per LEMC offset for 10 power cycles or JESD204C
link establishments (with application of a new SYSREF pulse each time) provides an accurate indication of the buffer depth spread for
each LEMC offset value. Select an LEMC offset value that results in buffer depths as close as possible to (E × 32)/2 for all lanes.
Figure 32 shows this process using the same customer evaluation board with the ADRV9025Init_StdUseCase26C_nonLinkSharing profile
and automatic buffer protection disabled.
In this example, an LEMC offset value between 21 and 24 is an optimal choice because it results in buffer depths around 16 for all the
used lanes, guaranteeing deterministic latency with no chance of data corruption due to the read and write pointers being too close.
If the goal for the system is to achieve deterministic latency with a latency as short as possible, it may be desirable to select an LEMC
offset value that results in buffer depths as small as possible but still above a small number (for example, 10 or 12) to avoid data
corruption due to the read and write pointers being too close. Note that in that situation, carry out thorough system testing over all
possible temperature, supply, and board variations to ensure that data corruption never occurs in all possible operating conditions for the
system.
Avoid LEMC offset values giving a large buffer depth (near a value of E × 32) because, for some combinations of JESD204C parameters, it
can lead to the write and read pointers being too close and, therefore, can result in data corruption.
22
20
18
16
14
12
10
8
6
4
2
22770-032
0 0
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62
LEFC OFFSET
Figure 32. Buffer Depths for Lane 0, Lane 1, Lane 2, and Lane 3 vs. LEMC Offset on the Customer Evaluation Board with the
ADRV9025Init_StdUseCase26C_nonLinkSharing Profile and Buffer Protection Disabled
Selecting the Optimal LEMC Offset for a System in JESD204C Mode When E > 2
The size of each elastic buffer is 512 octets. When E is bigger than 2, there are some LEMC offset values for which more than 512 octets
are required to be stored in the elastic buffer to be able to release the data on the next LEMC edge. Because this is not possible due to the
elastic buffer size, buffer protection gets activated for such LEMC offset values when it is enabled. Therefore, it is recommended to have
buffer protection enabled when E > 2.
In JESD204C mode, when E > 2, it is recommended to select an LEMC offset that results in buffer depth values as close as possible to the
center of the linear part of the buffer depths vs. LEMC offset plot in Figure 33 for all the lanes used.
To find that LEMC offset, read back the buffer depths values for all the used lanes for all LEMC offset values with buffer protection enabled
on a sample board for a given system. Measuring the buffer depths per LEMC offset for 10 power cycles or JESD204C link establishments
(with application of a new SYSREF pulse each time) provides an accurate indication of the buffer depths spread for each LEMC offset.
Select an LEMC offset value that results in buffer depths as close as possible to the center of the linear part of the buffer depth vs. LEMC
offset plot for all the used lanes.
Figure 33 illustrates this process using a customer evaluation board programmed with the ADRV9025Init_StdUseCase14C_LinkSharing
profile, with automatic buffer protection enabled.
In this example, LEMC offset values between 87 and 89 are optimal choices because they result in a buffer depth around 41 for each lane,
which is in the middle of the linear part of the Figure 33 and, therefore, guarantees deterministic latency.
If the goal for the system is to achieve deterministic latency with a latency as short as possible, it may be desirable to select an LEMC
offset value giving buffer depths as small as possible. In that case, an LEMC offset value above the highest LEMC offset resulting in the
automatic buffer protection being active with some additional headroom to account for PVT variations can be selected. In that situation,
carry out thorough system testing over all possible temperature, supply, and board variations to ensure that the automatic buffer
protection never gets activated and that deterministic latency is maintained in all possible operating conditions for the system.
Avoid LEMC offset values giving large buffer depths (near a value of 64) because, for some combinations of JESD204C parameters, it can
lead to the write and read pointers being too close and, therefore, can result in data corruption.
38
36
34
32
30
28
26
24
22
20
18
16
14
12
10
8
6
4
2
0
22770-033
–2
–4 0
0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128
LEMC OFFSET
Figure 33. Buffer Depths for Lane 0 and Lane 1 vs. LEMC Offset on the Customer Evaluation Board with the ADRV9025Init_StdUseCase14C_LinkSharing Profile and
Buffer Protection Enabled
SYNTHESIZER CONFIGURATION
OVERVIEW
The transceiver employs four phase-locked loop (PLL) synthesizers, clock, RF (×2), and auxiliary. Each PLL is based on a fractional-N
architecture and consists of a common block made up of a reference clock divider, phase frequency detector, charge pump, loop filter,
feedback divider, digital control block, and either a 1 or 4 core voltage-controlled oscillator (VCO). The auxiliary PLL and clock PLL VCO
have a tuning range of 6.5 GHz to 13 GHz. The RFPLL1 and RFPLL2 VCO have a tuning range of 6.4 GHz to 12.8 GHz. Each PLL drives
its own local oscillator (LO) generator, RF LO generator, auxiliary LO generator, and clock generator The output of the LOGEN block is a
divided version of the VCO frequency. No external components are required to cover the entire frequency range of the transceiver. This
configuration allows the use of any convenient reference frequency for operation on any channel with any sample rate. The reference
frequency for the PLL is scaled from the reference clock applied to the device. Figure 35 illustrates the common PLL block used in the
transceiver.
CONNECTIONS FOR EXTERNAL REFERENCE CLOCK (DEVCLK)
The external clock is used as a reference clock for the clock synthesizer, two RF synthesizers, and auxiliary synthesizer in the transceiver
and, therefore, must be a very clean clock source with respect to noise. Connect the external clock inputs to the DEVCLK+ pin (C8) and
DEVCLK− pin (C9) via ac coupling capacitors and terminate them with 100 Ω close to the device, as shown in Figure 34. The device
clock receiver is a noise sensitive differential RF receiver. The frequency range of the DEVCLK signal must be between 10 MHz and
1 GHz. Ensure that the external clock peak to peak amplitude is not less than 50 mV or greater than 1 V.
C8 DEVCLK+
100nf
100Ω
100nf
C9 DEVCLK– 22770-034
LOGIC,ADCs,
DACs, ETC...
Tx1, Tx2
RF PLL1 RF RF LO1
REF SYNTHESIZER2 GENERATOR Rx1, Rx2
REF CLK
REF CLK IN± DISTRIBUTION
RF PLL2 RF RF LO2
REF SYNTHESIZER2 GENERATOR Rx3, Rx4
ORx3, ORx4
–90
LOPHASENOISE (dBc/Hz)
–100
–110
–120
–130
–140
22770-036
–150
100 1k 10k 100k 1M 10M
Figure 36. LO Phase Noise vs. Frequency Offset, FLO =2600 MHz, Loop Bandwidth = 500 kHz, Phase Margin = 60°, DEVCLK Supplied by a Wenzel VCXO
0
NORMALIZED LOOP GAIN (dB)
–10
–20
–30
–40
–50
–80
–90
CARRIER POWER (dBm)
–100
–110
–120
–130
–140
–150
–160 RAW
SMOOTHED
–170
22770-038
100 1k 10k 100k 1M
FREQUENCY OFFSET (Hz)
Figure 38. Phase Noise Plot for a Noisy 245.76 MHz Reference Clock
LEVEL (dBc)
DATA SHEET
MEASURED NOISE
CALCULATED NOISE
22770-039
Figure 39. Measured and Calculated Phase Noise vs. Offset Frequency
LEVEL (dBc)
–110
–120
–130
–140
–150
–160
–170
–180
22770-340
100 1k 10k 100k 1M 10M
OFFSET FREQUENCY (Hz)
Figure 40. AD9528 Phase Noise Using a High Phase Noise Reference Clock
CLOCK SYNTHESIZER
The clock synthesizer is used to generate all the clocking signals necessary to run the transceiver. The synthesizer uses a single core VCO block.
The reference frequency for the clock PLL is scaled from the device clock by the reference clock generator. Although the clock PLL is a fractional-
N architecture, the signal sampling relationships to the JESD204B and JESD204C interface rates typically require that the synthesizer operates in
integer mode. Profiles that are included in the Transceiver Evaluation Software configure the clock synthesizer appropriately. Reconfiguration of
the clock synthesizer is typically not necessary after initialization. The most direct approach to configuration is to follow the recommended
programming sequence and utilize provided API functions to set the clock synthesizer to the desired mode of operation. The clock generation
block of the clock synthesizer provides clock signals for the high speed digital clock, receiver ADC sample and interface clocks, observation
receiver ADC sample and interface clocks, and the transmitter DAC sample and interface clocks.
RF SYNTHESIZER
The transceiver contains two RF PLLs. Each RF PLL uses the PLL block common to all synthesizers in the transceiver and employs a 4 core VCO
block, which provides a 6 dB phase noise improvement over the single core VCO. As with the other synthesizers in the transceiver, the reference
for RF PLL 1 and RF PLL 2 are sourced from the reference generation block of the transceiver. The RF PLLs are also fractional-N architectures
with a programmable modulus. The default modulus of 8386560 is programmed to provide an exact frequency on at least a 2 kHz raster using
reference clocks that are integer multiples of 122.88 MHz. More details of the divider options are given in Table 47.
The RF LO frequency is derived by dividing down the VCO output in the LOGEN block. The tunable range of the RF LO is 400 MHz to 6400 MHz. The
LO divider boundaries are given in Table 48. Note that it is recommend rerunning the initialization calibrations when crossing a divide by 2 boundary or
when changing the LO frequency by ±100 MHz or more from the frequency at which the initialization calibrations were performed.
AUX LO
I Q
REFCLK CAPTURE CAPTURE
÷N
N
Σ (LOI × NCOI + LOQ × NCOQ)
SDM NCO APD
Σ (LOI × NCOI – LOQ × NCOQ)
22770-041
CONTROL
LO GEN
÷2k
PLL
LO GEN
÷2k
CLOCK PLL
CHIP
LO GEN
÷2k
PLL
22770-042
122.88MHz
22770-043
REFERENCE
OSCILLATOR
Users can edit specific use case files (also referred to as JSON files or profiles) to set the RF PLL phase synchronization using the
parameters shown here under rfPllPhaseSyncMode Options and Clock Options. When using the evaluation board system, the
Transceiver Evaluation Software must be restarted for these changes to take effect.
rfPllPhaseSyncMode Options (parameter in use case block below is bold):
0: Disable RFPLL phase synchronization
Rev. 0 | Page 78 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
1: Enable RFPLL phase sync init only
2: Enable RFPLL phase sync init and track continuously
Clock Options:
"deviceClock_kHz": 245760,
"clkPllVcoFreq_kHz": 9830400,
"serdesPllVcoFreq_kHz": 9830400,
"ldoSelect": 0,
"extLoFreq1_kHz": 0,
"extLoFreq2_kHz": 0,
"rfPll1LoMode": 0,
"rfPll2LoMode": 0,
"rfPll1LoOutDivider": 0,
"rfPll2LoOutDivider": 0,
"rfPllPhaseSyncMode": 2,
Figure 45 shows five power cycles of the same device with the phase synchronization function beginning in the disabled state. At each
power up, the phase difference between the two LOs is a random value. This diagram also shows initialization and tracking results, which
brings initial random phase to a repeatable value.
RF PLL PHASE SYNC
200
150
100 INIT+TRACKING
DISABLED INIT ONLY CONTINUOUSLY
50
0
SERIES 1
50 SERIES 2
SERIES 3
–100 SERIES 4
SERIES 5
–150
22770-044
–200
0 500 1000 1500 2000 2500 3000 3500 4000 4500
Figure 45. RF PLL Phase Sync Transitions from Disabled through Inititialization and into Tracking Mode (5 Independent Power Up Sequences Shown)
Figure 46 shows a close up view of the transition from initialization to continuosly tracking.
RF PLL PHASE SYNC
–152.0
–152.5
INIT+TRACKING
INIT ONLY CONTINUOUSLY
–153.0
–153.5
–154.0 SERIES 1
SERIES 2
SERIES 3
–154.5 SERIES 4
SERIES 5
22770-045
–155.0
1603 2103 2603 3103 3603 4103 4603
BOOT SEQUENCE
SYSTEM INITIALIZATION
STATE 1:
READY/IDLE
22770-046
INITIAL CALIBRATRIONS CAN BE RUN.
TRACKING CALIBRATIONS CAN BE RUN.
When the arm core is powered up, the ARM moves into its power-up/reset state, shown as State 0 in Figure 47. The ARM firmware image
is loaded at this point. When the ARM image has been loaded, the ARM is enabled and begins its boot sequence.
After the arm has been booted, it enters its ready/idle state, shown as State 1 in Figure 47. In this state, it can receive configuration settings
or commands (instructions), such as performing the initial calibrations or enabling tracking calibrations.
SYSTEM INITIALIZATION
This section provides a detailed description of the initialization procedure. There are three main sections to the initialization procedure.
Pre-MCS initialization initializes the device up to the multichip synchronization procedure. The pre-MCS initalization is split into two
commands that the application layer function calls. These commands are adi_adrv9025_PreMcsInit_v2(…) and
adi_adrv9025_PreMcsInit_NonBroadCast(…). The adi_adrv9025_PreMcsInit_v2(…) command is a broadcastable command that can
simultaneously issue commands to multiple transceivers to save time during system initialization for systems with multiple transceivers.
ARM and stream binaries are programmed to the chip during this step. The broadcast functionality is realized by issuing SPI write
commands only. The adi_adrv9025_PreMcsInit_NonBroadCast(…) command verifies that the ARM is programmed properly by
verifying the ARM checksum and that the ARM is in the ready/idle state.
The multichip synchronization (MCS) step uses SYSREF pulses to synchronize internal clocks within the transceiver, which is required
for deterministic latency.
Post-MCS initalization continues initialization following MCS. The application layer command that performs the post-MCS initialization
is adi_adrv9025_PostMcsInit(…). This command programs the PLLs, configures the radio control initialization structure, and instructs
the ARM to perform initialization calibrations.
PRE-MCS INITIALIZATION
This section explains the ARM related function calls in adi_adrv9025_PreMcsInit_v2( ). Run adi_adrv9025_PreMcsInit_v2(…) as part of
the initialization sequence.
adi_adrv9025_PreMcsInit_v2(adi_adrv9025_Device_t *device,
adi_adrv9025_Init_t *init,
const char *armImagePath,
const char *streamImagePath,
adi_adrv9025_RxGainTableFile_t rxGainTableFileArr[],
uint8_t rxGainTableFileArrSize,
adi_adrv9025_TxAttenTableFile_t txAttenTableFileArr[],
uint8_t txAttenTableFileArrSize);
An important system from the perspective of the ARM is the armImagePath, a file system location where the ARM binary is stored,
which is required for the ARM to be loaded.
Rev. 0 | Page 80 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
The adi_adrv9025_PreMcsInit_v2(…) function is in the adi_adrv9025_utilities.c/h file. This function performs a sizeable part of the full chip
initialization. From the point of view of the ARM, it performs a number of tasks. The first step is to load the ARM image,
adi_adrv9025_ArmImageLoad(device, armImagePath), where device is the transceiver device structure. The armImagePath is the path to the
ARM image binary passed as a parameter to adi_adrv9025_PreMcsInit_v2( ). The ARM image is provided in the Resources/ArmFiles folder of
the GUI installation folder.
Following the ARM firmware image being loaded, the next step is to load the device configuration into data memory using
adi_adrv9025_ArmProfileWrite(adi_adrv9025_Device_t *device, const adi_adrv9025_Init_t *init).
*init is the initialization settings data structure.
The ARM is then started and begins its boot sequence. This process is initiated by adi_adrv9025_ArmStart(adi_adrv9025_Device_t
*device, const adi_adrv9025_Init_t *init).
As part of the boot sequence, the ARM configures the device for the required profile (transmitter/receiver/observation receiver path
configuration as determined by the use case), configures and enables the clock PLL (the device starts initialization on the device clock),
and configures the JESD204B and JESD204C framers and deframers. The ARM also computes a checksum for the ARM firmware image
loaded, for each of the streams loaded, and the profiles loaded (determining if they are valid profiles). The following API function waits for
the ARM boot to complete and compares the computed checksums during booth to precomputed checksums. For example, comparing
the ARM firmware checksum vs. the ARM checksum that is calculated after compilation of the ARM firmware and stored within the
ARM firmware image adi_adrv9025_ArmStartStatusCheck(adi_adrv9025_Device_t *device, uint32_t, timeout_us), where timeout_us is
a timing parameter that dictates the longest time that the function waits for arm booting to complete.
If a checksum is found to be not valid, this function returns an error.
POST-MCS INITIALIZATION
After the MCS sequence has been completed, the ARM is ready to configure the radio, perform its initialization calibrations, and bring up
the JESD204B and JESD204C link. When complete, the tracking calibrations can be enabled. The RF data paths can then be enabled using
either the SPI or pin modes.
Note that there is no absolute requirement to follow this sequence. The initialization calibrations and tracking calibrations do not have to be run
for the paths to be enabled in the device. It is ultimately up to the user to ensure that the paths have been correctly configured prior to operation.
DEVICE CALIBRATIONS
The ARM is tasked with performing calibrations for the transceiver to achieve its performance specifications. These calibrations are split
into two categories: initial calibrations, which are run either before the transceiver is operational or after LO frequency change, and
tracking calibrations, which are used to maintain performance during runtime.
A number of transmitter calibrations use an observation path to observe the signal at the output of the transmitter. For the most part,
these calibrations use an internal loopback path from transmitter to observation receiver. The exception is the external LOL initialization
and tracking algorithms that require the use of an external path connection between the transmitter output and an observation input.
A requirement for this device is that the observation receiver channel used to calibrate a transmitter channel must be on the same side of
the chip as that transmitter channel. Table 60 provides the possible feedback combinations. For example, it is not possible for LO leakage
tracking to calibrate Tx4 by providing its output to ORx1 or ORx2.
Table 60. External Feedback Path Possibilities
Channel Available Feedback Channels
Tx1 ORx1 or ORx2
Tx2 ORx1 or ORx2
Tx3 ORx3 or ORx4
Tx4 ORx3 or ORx4
Figure 48 shows an example of four feedback paths, each transmitter going back to an observation receiver, obeying the principle of each
transmitter being fed back to an observation receiver on the same side of the device. It is also possible to have both Tx1 and Tx2 going
back to a single observation receiver input (either ORx1 or ORx2) through a switch. Similarly, Tx3 and Tx4 can go back to a single
observation receiver input (either ORx3 or ORx4).
Note that for the diagrams outlining the operation of individual calibrations, the transmitter and observation receiver inputs are not numbered.
Instead, it is assumed that the principle of a transmitter being fed back to an observation receiver on the same side of the device is being obeyed.
Rev. 0 | Page 81 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
ANTENNA 3 ANTENNA 2
PA BALUN BALUN PA
Tx3 Tx2
BALUN BALUN
ORx3/ORx4 ORx1/ORx2
BALUN BALUN
SERDES
22770-047
Figure 48. External Feedback for Transmitter Tracking Calibrations
INITIAL CALIBRATIONS
The ARM processor in the transceiver is tasked with scheduling/performing initial calibrations to optimize the performance of the signal
paths prior to device operation. These calibrations are run as part of the utility API function adi_adrv9025_PostMcsInit( ). To correctly
perform the initial calibrations, this utility function must be called. This section also provides details of the procedure invoked in
adi_adrv9025_PostMcsInit( ) to perform the initial calibrations, principally for further information, but also in case there is a need to run
initial calibrations outside of the post-MCS initialization procedure. The API function definition for the post-MCS initialization is:
adi_adrv9025_PostMcsInit(adi_adrv9025_Device_t *device, adi_adrv9025_PostMcsInit_t *utilityInit)
*utilityInit is a structure containing a structure determining the initial calibrations to be run as part of the post-MCS initialization routine.
In some cases, it is required to run an initial calibration outside of adi_adrv9025_PostMcsInit(…). This following command instructs the
ARM to perform the requested calibrations:
adi_adrv9025_InitCalsRun(adi_adrv9025_Device_t *device, adi_adrv9025_InitCals_t *initCals)
*initCals is the initial calibration structure, passed to adi_adrv9025_PostMcsInit as part of utilityInit, that informs the ARM processor
which calibrations to run on which enabled path. initCals is composed of a uint32_t calMask and a uint8_t channelMask. calMask
indicates which calibrations are to run in this call of adi_adrv9025_InitCalsRun( ).
Table 61 shows the bit assignments of the calibration mask. Note that Table 61 provides a full list of initialization calibrations for the
device. Some initial calibrations are not available for certain transceivers and applications.
The channelMask parameter, a member of the adi_adrv9025_InitCals_t structure, advises which channels the selected calibrations run. Each bit
of the bitmask refers to an individual channel, as shown in Table 62. The mask is universally applied to all calibrations selected in the current call
of adi_adrv9025_initCalsRun( ), regardless of the paths for which the calibrations are being run. For example, if 0xF is chosen as a mask and both
receiver and transmitter calibrations are selected in the calMask, when the ARM runs a receiver calibration it then does so on all four receiver
channels. Likewise, when the ARM runs a transmitter calibration, the calibration is run on all four transmitter channels.
Table 61. calMask Bit Assignments
Bits Corresponding Enumerator Calibration Description
D0 ADI_ADRV9025_TX_BB_FILTER Transmitter This is used to tune the corner frequency of the transmitter
baseband filter baseband filter.
calibration
D1 ADI_ADRV9025_ADC_TUNER ADC tuner This is used to configure the ADC for the required profile
calibration bandwidth.
D2 ADI_ADRV9025_RX_TIA Receiver TIA filter This is used to tune the corner frequency of the receiver TIA
calibration filter.
D3 ADI_ADRV9025_ORX_TIA Observation This is used to tune the corner frequency of the observation
receiver TIA filter receiver TIA filter.
calibration
D4 ADI_ADRV9025_LBRX_TIA Loopback receiver This is used to tune the corner frequency of the loopback
TIA filter calibration receiver TIA filter.
D5 ADI_ADRV9025_RX_DC_OFFSET Receiver dc offset This is used to correct for dc offset within the receiver chain.
calibration
Rev. 0 | Page 82 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
Bits Corresponding Enumerator Calibration Description
D6 ADI_ADRV9025_ORX_DC_OFFSET Observation This is used to correct for dc offset within the observation
receiver dc offset receiver chain.
calibration
D7 ADI_ADRV9025_LBRX_DC_OFFSET Loopback receiver This is used to correct for dc offset within the loopback
dc offset calibration receiver chain.
D8 ADI_ADRV9025_FLASH_CAL ADC flash calibration This is used to optimally configure the ADC flash converters.
D9 ADI_ADRV9025_INTERNAL_PATH_DELAY Internal path delay This computes the transmitter to internal loopback path delay,
calibration which is required for the TxQEC initial calibration and tracking.
D10 ADI_ADRV9025_TX_LO_LEAKAGE_ INTERNAL Transmitter LO This performs an initial LO leakage calibration for the
leakage initial transmitter path. It utilizes the transmitter path and the
calibration internal loopback path (see Figure 51).
D11 ADI_ADRV9025_TX_LO_LEAKAGE_EXTERNAL Transmitter LO This performs an initial external LO leakage calibration for
leakage external the transmitter path. It utilizes the transmitter path, a
initial calibration required external loopback path, and the observation
receiver path (see Figure 52). The external loop must be
enabled such that the transmitter output is observable by
the observation receiver.
D12 ADI_ADRV9025_TX_QEC_INIT Transmitter QEC This performs an initial QEC calibration for the transmitter path.
initial calibration It utilizes the transmitter path and an internal loopback path
(see Figure 51).
D13 ADI_ADRV9025_LOOPBACK_RX_LO_DELAY Loopback receiver This is used to perform an LO delay calibration for the
LO delay loopback path.
calibration
D14 ADI_ADRV9025_LOOPBACK_RX_RX_QEC_INIT Loopback receiver This performs an initial QEC calibration for the receiver path.
QEC initial
calibration
D15 ADI_ADRV9025_RX_LO_DELAY Receiver LO delay This is used to perform an LO delay calibration for the
calibration receiver path.
D16 ADI_ADRV9025_RX_QEC_INIT Receiver QEC initial This performs an initial QEC calibration for the receiver path.
calibration
D17 ADI_ADRV9025_ORX_LO_DELAY Observation This is used to perform an LO delay calibration for the
receiver LO delay observation receiver path.
calibration
D18 ADI_ADRV9025_ORX_QEC_INIT Observation This performs an initial QEC calibration for the observation
receiver QEC initial receiver path.
calibration
D19 ADI_ADRV9025_TX_DAC Transmitter DAC This performs a calibration of the transmitter DAC.
initial calibration
D20 Reserved
D21 ADI_ADRV9025_EXTERNAL_PATH_DELAY External This acquires an estimation of the transmitter to observation
transmitter to receiver path delay (not required if CLGC tracking is not
observation used).
receiver path delay
initial calibration
D22 Reserved
D23 ADI_ADRV9025_HD2 HD2 initial This performs an initial calibration of the HD2 product in the
calibration receiver path (typically required only in GSM applications).
D24 ADI_ADRV9025_TX_ATTENUATION_DELAY Transmitter This is used to calculate the path delay between the transmitter
attenuation delay analog and digital attenuation blocks. This delay is then used to
calibration delay the onset of transmitter analog attenuation when the
transmitter attenuation changes. This synchronizes the
attenuation change at the transmitter output.
D25 ADI_ADRV9025_TX_ATTEN_TABLE Transmitter This is used to correct for phase changes between different
attenuation table attenuation indices in the transmitter attenuation table.
linearization
calibration
Rev. 0 | Page 83 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Bits Corresponding Enumerator Calibration Description
D26 ADI_ADRV9025_RX_GAIN_DELAY Receiver gain delay This is used to calculate the path delay between the receiver
calibration analog and digital attenuation blocks. This delay is then used
to delay the onset of receiver analog attenuation when the
receiver gain index is changed. This synchronizes the gain
change in the baseband data. This calibration does not check
the status of the DDC filter, so if the NCO is enabled it may
cause the calibration to fail with no warning if the calibration
tone is placed outside the pass band. The NCO must not be
used when doing this calibration.
D27 ADI_ADRV9025_RX_GAIN_PHASE Receiver gain This is used to correct for phase changes between different
phase calibration gain indices in the receiver gain table.
D28 Reserved
D29 ADI_ADRV9025_CFR_INIT CFR initialization This performs an initialization calibration for the transceiver
calibration CFR hardware (ADRV9029 only).
D30 ADI_ADRV9025_SERDES_INIT SERDES This performs an initialization calibration for the JESD204C
initialization cal data interface.
D31 Reserved
Table 62. channelMask Bit Assignments
Bits Channel
D0 Channel 1 (either Rx1/Tx1/ORx1 depending on calibration being performed)
D1 Channel 2 (either Rx2/Tx2/ORx2 depending on calibration being performed)
D2 Channel 3 (either Rx3/Tx3/ORx3 depending on calibration being performed)
D3 Channel 4 (either Rx4/Tx4/ORx4 depending on calibration being performed)
The ARM sequences the initial calibrations as required, not necessarily in the bit order presented in Table 61. It is mandatory that the user
wait for calibrations to complete before continuing with the initialization of the device. The following API command is used to verify that
the initial calibrations are complete:
adi_adrv9025_InitCalsWait(adi_adrv9025_Device_t *device, uint32_t timeoutMs, uint8_t *errorFlag)
timeoutMs is the time in milliseconds (ms) that the function must wait for the calibrations to complete before returning an error.
errorFlag indicates if there is an ARM error when running the initialization calibrations.
This function implements a blocking wait until the initial calibrations have been completed. An alternative function can be used instead,
which determines if the initial calibrations are still running using the following API command:
adi_adrv9025_InitCalsCheckCompleteGet(adi_adrv 9025_Device_t *device, uint8_t *areCalsRunning,
uint8_t *errorFlag);
*areCalsRunning is a value to indicate if calibrations are still running (0 = initial calibrations have completed, 1 = initial calibrations are
still running). errorFlag indicates if there is an ARM error when the running the initialization calibrations.
In the case when an initial calibration error occurs, information about the error can be obtained with the following command:
adi_adrv9025_InitCalsDetailedStatusGet(adi_adr v9025_Device_t *device,
adi_adrv9025_InitCalStatus_t *initStatus);
*initStatus is a pointer to a data structure that contains initial calibration status information. The adi_adrv9025_InitCalStatus_t data
structure details are described in Table 63.
Table 63. Definition of adi_adrv9025_InitCalStatus_t
Parameter Interpretation
initErrCode Returns the object ID and error code reported for the initialization calibration failure. The object ID is contained
within Bits[D15:D8] and error bits are contained within Bits[D7:D0].
initErrCal Returns the object ID of the calibration reporting an error.
calsDurationUsec Time duration in microseconds of the most recent InitCalsRun invocation.
calsSincePowerUp[4] A 4-element array indicating the bitmask of initial calibrations run after power up. Each element of the array
corresponds to calibrations performed on each channel.
calsLastRun[4] A 4-element array indicating the bitmask of initial calibrations run in the most recent invocation of InitCalsRun. Each
element of the array corresponds to calibrations performed on each channel.
Rev. 0 | Page 84 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
SYSTEM CONSIDERATIONS FOR INITIAL CALIBRATIONS
Figure 49 through Figure 52 show how the transceiver is configured for notable calibrations with external system requirements, such as
the QEC and LOL calibrations. In all diagrams, gray lines and blocks are not active in the calibration. Lines showing the path of the LOs
are shown in color to distinguish them from the signal paths. A brief explanation of the calibration is provided. Note that as the ARM
performs each of the calibrations, it is tasked with configuring the device as per Figure 49. For example, with respect to enabling/disabling
paths. No user input is required in this regard.
It is important that the user ensures that external conditions are met, such as having the PA off for all calibrations other than the external
LOL initialization calibration, or having the receiver input properly terminated for a receiver QEC initialization calibration.
Receiver QEC Initial Calibration
The receiver QEC initialization calibration algorithm is utilized to improve the receiver path QEC performance. The receiver QEC
calibration routine sweeps a number of internally generated test tones across the desired frequency band, measuring quadrature performance
and calculating correction coefficients. Tone generation is performed by the calibration PLL (CAL PLL), which is the auxiliary PLL.
When the receiver QEC initialization calibration runs, the ARM configures the receiver to the maximum gain index (255).
It is a system requirement that the input port must be isolated from incoming signals or the calibration may fail to complete. The calibration
tones appear on the receiver pins and, therefore, must be prevented from reaching the antenna through the receiver port being properly
terminated into a 50 Ω load. If an LNA is present at the receiver input, it is recommended to disable the LNA during the calibration.
JESD204B/C INTERFACE
50Ω
Rx
INPUT LPF ADC 1/2 BANDS
AND FIR
QEC
BLOCK
LPF ADC 1/2 BANDS
AND FIR
CAL Rx LO
PLL
22770-048
ADRV902x
JESD204B/C INTERFACE
50Ω
ORx
INPUT LPF ADC 1/2 BANDS
AND FIR
QEC
BLOCK
LPF ADC 1/2 BANDS
AND FIR
CAL Tx LO
PLL
22770-049
ADRV902x
ORx
INPUT
ADRV902x
FEEDBACK
PATH LPF ADC 1/2 BANDS
AND FIR
JESD204B/C INTERFACE
ATTENUATOR
CAL AUX LO
PLL
QEC
BLOCK
Tx LO
Tx 1/2 BANDS
OUTPUT LPF DAC
PA POWERED OFF AND FIR
SIGNAL
22770-050
GEN
Figure 51. Device Path Configuration for Transmitter LOL and QEC Initial Calibrations
ORx
INPUT
ADRV902x
FEEDBACK
PATH LPF ADC 1/2 BANDS
AND FIR
JESD204B/C INTERFACE
ATTENUATOR
CAL AUX LO
PLL
QEC
BLOCK
Tx LO
Tx 1/2 BANDS
OUTPUT LPF DAC
PA POWERED OFF AND FIR
SIGNAL
22770-050
GEN
Figure 52. External LOL System Configuration (Grayed Out Circuitry Not in Use)
50Ω
Rx
INPUT LPF ADC 1/2 BANDS
AND FIR
QEC
BLOCK
LPF ADC 1/2 BANDS
AND FIR
CAL Rx LO
PLL
22770-052
ADRV902x
Rx ENABLE
PERIODS WHERE
22770-053
Figure 54. Timing Diagram Showing When Receiver QEC can Run in TDD Mode
JESD204B/C INTERFACE
50Ω
Rx
INPUT LPF ADC 1/2 BANDS
AND FIR
QEC
BLOCK
LPF ADC 1/2 BANDS
AND FIR
CAL Rx LO
PLL
22770-052
ADRV902x
AIR TIME Tx Rx Tx Rx
ORx ENABLE
PERIODS WHERE
22770-053
RxQEC ORxQEC ORxQEC
COULD RUN
Figure 56. Timing Diagram Showing when Observation Receiver QEC can Run in TDD Mode (Observation Receiver Enable Refers to the Internal Enable Control of
ORx1 to ORx4)
ORx
INPUT
ADRV902x
FEEDBACK
PATH LPF ADC 1/2 BANDS
AND FIR
JESD204B/C INTERFACE
ATTENUATOR
AUX LO
CAL
PLL
QEC
BLOCK
Tx LO
Tx 1/2 BANDS
OUTPUT LPF DAC
PA POWERED OFF AND FIR
SIGNAL
22770-056
GEN
AIR TIME Tx Rx Tx Rx
Tx ENABLE
ORx ENABLE
PERIODS WHERE
22770-057
TxQEC TxQEC
COULD RUN
Figure 58. Timing Diagram Showing When Transmitter QEC can Run in TDD Mode
ORx
INPUT
ADRV902x
FEEDBACK
PATH LPF ADC 1/2 BANDS
AND FIR
JESD204B/C INTERFACE
ATTENUATOR
AUX LO
CAL
PLL
QEC
BLOCK
Tx LO
Tx 1/2 BANDS
OUTPUT LPF DAC
PA POWERED OFF AND FIR
SIGNAL
22770-058
GEN
ORX_DC_OFFSET
7%
LBRX_DC_OFFSET
LOOPBACK_RX_LO_DELAY
5%
TX_LO_LEAKAGE_INTERNAL
26%
RX_QEC_INIT
23%
INTERNAL_PATH_DELAY
22770-059
ORX_QEC_INIT
23%
Table 68 through Table 97 are measured calibration times of the transceiver for a number of different use cases using the standard
calibration mask of 0xD73FF. These results can be used as guidelines as to what the typical expected times are for a particular
configuration. Table 68 through Table 97 are listed in pairs. The first of each pair lists the relevant bandwidths and sample rates. The
second table of each pair lists the calibration timing results in milliseconds for 1, 2, 3, and 4 enabled receiver or transmitter channels. In
the case of observation receiver calibrations, because there are just two shared paths, the entries for ORX_DC_OFFSET are different for 1
and 2 channels enabled, but remain the same for 3 and 4 channels enabled. Other observation receiver calibrations show differences from
1 to 4 channels because the paths from each of the transmitters are calibrated individually.
Table 68. ADRV9025Init_StdUseCase13_nonLinkSharing
Observation Observation Observation Receiver
Transmitter Transmitter Transmitter Receiver Receiver Receiver Receiver Output Receiver
Use Case Bandwidth Input Rate DAC Rate Bandwidth Output Rate ADC Rate Bandwidth Rate ADC Rate
UC13_NLS 225 MHz 245.76 MHz 1.966 GHz 225 MHz 245.76 MHz 4.915 GHz 100 MHz 122.88 MHz 1.966 GHz
ORX_CTRL_A
ORX_CTRL_A
ORX_CTRL_B
22770-061
Figure 62. Single-Channel 2-Pin Mode
ORX_CTRL_A
ORX_CTRL_B
ORX_CTRL_C
22770-062
Figure 63. Single-Channel 3-Pin Mode
ORX_CTRL_A
ORX_CTRL_C
ORX_CTRL_A
ORX_CTRL_B
ORX_CTRL_C
ORX_CTRL_D
ORx3 AND ORx3 AND ORx3 AND ORx4 ORx3 ORx4 ORx3 ORx4
ORx4 ORx4 ORx4 ON ON ON ON ON
OFF OFF OFF
22770-064
Figure 65. Dual-Channel 4-Pin Mode
The user can set the channel control mode (API/pin) with the post multichip sequence API function.
adi_adrv9025_PostMcsInit(…)
adi_adrv9025_PostMcsInit(adi_adrv9025_Device_t *device, adi_adrv9025_PostMcsInit_t *utilityInit)
Description
This API sets the channel control mode (API or pin).
Parameters
22770-065
Figure 66. Stream Settings Window for Selecting ADC Xbar Control Mode
USE CASES
This section details example use cases for the transceiver that show how the device is typically operated to ensure that calibrations are run.
4 Transmitter/4 Receiver/2 Observation Receiver Input Use Case
In the 4 transmitter/4 receiver/2 observation receiver use case, the transceiver is configured in a way so that two transmitters feed back
into one observation receiver for each side of the device. The ORX_CTRL signals are configured in Single Channel 2 pin mode, with
ORX_CTRL_A and ORX_CTRL_B used to determine which observation receiver is enabled and selected for the observation purposes of
the user. ORX_CTRL_A is high at all times, because an observation receiver path is always being used. When ORX_CTRL_A goes low,
regardless of the state of ORX_CTRL_B, no observation receiver channel is enabled. ORX_CTRL_B determines which observation
receiver channel the user is observing. For this example, ORx2 and ORx3 are being used. Note that ORx1 can be used in place of ORx2, or
ORx4 can be used in place of ORx3. At least one observation receiver from each side of the device must be used. Therefore, either ORx1
or ORx2 must be used for calibrations on Tx1 and Tx2. The observation receiver from one side of the device cannot be used to calibrate
the transmitter on the other side of the device. That is, ORx1 or ORx2 cannot be used to calibrate Tx3 and Tx4.
LO1 LO1
LNA BALUN BALUN LNA
Rx3 Rx2
SWITCH SWITCH
LO1 LO1
BALUN ORx3/ORx4 ORx1/ORx2 BALUN
LO1 LO1
ANTENNA 4 Rx4 Rx1 ANTENNA 1
LNA BALUN BALUN LNA
LO1 LO1
PA BALUN Tx4 Tx1 BALUN PA
ORX_CTRL_A
ORX_CTRL_B
ORx2 ORx2 ORx3 ORx3 ORx2 ORx2 ORx3 ORx3 ORx2 ORx2 ORx3 ORx3
ORx2_Tx_EN 1
ORx3_Tx_EN DEFAULTED TO HIGH OVER SPI
ORx2 USAGE PA1 PA2 CALIBRATIONS PA1 PA2 CALIBRATIONS PA1 PA2 CALIBRATIONS
Tx1/Tx2 Tx1/Tx2 Tx1/Tx2
22770-067
ORx3 USAGE PA3 PA4 PA3 PA4 PA3 PA4
Tx3/Tx4 Tx3/Tx4 Tx3/Tx4
Figure 68. Observation Receiver Enable and Transmitter Select Signals: 4 Transmitter/4 Receiver/2 Observation Receiver Configuration
LO1 LO1
LNA BALUN BALUN LNA
Rx3 Rx2
LO1 LO1
PA BALUN Tx4 Tx1 BALUN PA
SERDES
22770-068
Figure 69. 4 Transmitter/4 Receiver/4 Observation Receiver Configuration
ORX_CTRL_A
ORx2_Tx_SEL
ORx1 ORx2 ORx3 ORx4 ORx1 ORx2 ORx3 ORx4 ORx1 ORx2 ORx3 ORx4
ORx2_Tx_EN
ORx4_Tx_EN 1
DEFAULTED TO HIGH OVER SPI
ORx1_Tx_EN
ORx3_Tx_EN 0
DEFAULTED TO LOW OVER SPI
ORx1_Tx_EN
ORx2_Tx_EN
ORx3_Tx_EN 1
ORx4_Tx_EN DEFAULTED TO HIGH OVER SPI
22770-069
ORx4 USAGE PA4 PA4 PA4
CALIBRATIONS Tx3/Tx4 CALIBRATIONS
Figure 70. Observation Receiver Enable and Transmitter Select Signals: 4 Transmitter/4 Receiver/4 Observation Receiver Configuration
4 Transmitter/4 Receiver/2 Observation Receiver Input – Single Point of Feedback from 4 Transmitter to Observation
Receiver Use Case
This use case shows an example where all the observation receiver paths are shared through one common feedback point. Because there
are two sides to the device from a calibration perspective, the user must route Tx1 and Tx2 to either ORx1 or ORx2, respectively.
Similarly, Tx3 and Tx4 need a path back to ORx3 or ORx4 for the purpose of calibrations. To allow calibrations to run in parallel with PA
observation captures, the opposite side of the device to that required for calibrations is used to capture observation data. Therefore, if Tx2
is being fed back through this single feedback point, ORx2 is used for transceiver calibrations and ORx3 can be used to capture
observation data. A resistive splitter is used to route the signal to both sides of the device.
For this use case, use Single Channel 2 pin mode. ORX_CTRL_A is set high all the time because an observation receiver path is always
being used. ORX_CTRL_B selects which observation receiver the user is observing in a given time slot. For this example, ORx2 and ORx3 are
used. ORx3 is selected for observation when ORX_CTRL_B is high and ORx2 is selected for observation when ORX_CTRL_B is low.
ORX2_TX_SEL and ORX2_TX_EN together tell the ARM which external path (either Tx1 or Tx2) is routed back to ORx2. When
ORX2_TX_SEL and ORX2_TX_EN are both high, the PA2 path is routed back to both ORx2 and ORx3. When ORX2_TX_SEL is low
and ORX2_TX_EN is high, the PA1 path is routed back to both ORx2 and ORx3. When ORX2_TX_EN is low, this tells the transceiver
Rev. 0 | Page 117 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
that there is no external feedback path between this observation receiver input and a transmitter on the same side of the device. In this
scenario, the external LOL calibration cannot be performed. Likewise, the ORX3_TX_SEL and ORX3_TX_EN perform the same
function for the Tx paths on the other side of the chip. If ORX3_TX_SEL is low and ORX3_TX_EN is high, the PA3 path is routed back
to both ORx2 and ORx3. If ORX3_TX_SEL and ORX3_TX_EN are both high, the PA4 path is routed back to both ORx2 and ORx3.
Finally, if ORX3_TX_EN is low, this tells the transceiver that there is no external feedback path between this observation receiver input
and a transmitter on the same side of the device. In this scenario, the external LOL calibration cannot be performed.
Unlike the other use cases previously described, the transceiver can perform both calculations on a given PA and calibrations with the
other observation receiver input for the same side of the chip. Though the transmitter calibrations must be performed with an
observation receiver from the same side of the chip, the PA calculations do not have that constraint. The first time slot in Figure 72 shows
that calculations are being performed on PA1 via ORx3 while calibrations are performed on Tx1/Tx2 via ORx2. Note at the first time slot
in Figure 72 that the external LOL calibration can be performed for Tx1 as the path is routed back to ORx2. In time slot two, the external
LOL calibration can be performed for Tx2, but not Tx1 because there is no external feedback path. QEC calibrations are performed
though an internal feedback path and do not require an external feedback path to run. It is up to the ARM scheduler to determine what
calibration is due to run in any given slot. The same JESD204B and JESD204C link can be used for ORx2 and ORx3 in this scenario
because only one observation receiver is used at any given time.
ADRV902x
Tx1 PA1
ORx2_Tx_EN
Tx2 PA2
ORx3_Tx_EN
ORx2
ORx_CTRL_A
ORx_CTRL_B
ORx3
ORx_CTRL_C
Tx3 PA3
ORx2_Tx_SEL
Tx4 PA4
ORx3_Tx_SEL
22770-070
Figure 71. Observation Receiver Channel Routing: 4 Transmitter to 2 Observation Receiver Channels
ORX_CTRL_A
ORX_CTRL_B
ORx3 ORx3 ORx2 ORx2 ORx3 ORx3 ORx2 ORx2 ORx3 ORx3 ORx2 ORx2
ORx2_Tx_EN PA1/PA2
ORx3_Tx_EN PA3/PA4
ORx2 USAGE CALIBRATIONS PA3 PA4 CALIBRATIONS PA3 PA4 CALIBRATIONS PA3 PA4
Tx1/Tx2 Tx1/Tx2 Tx1/Tx2
22770-071
ORx3 USAGE PA1 PA2 PA1 PA2 PA1 PA2
Tx3/Tx4 Tx3/Tx4 Tx3/Tx4
Figure 72. Observation Receiver Enable and Transmitter Select Signals: 4 Transmitter to 2 Observation Receiver Multiplexed Configuration
–83.0
Tx LOL (dBm/MHz)
–83.5
–84.0
–84.5
–85.0
–85.5
–86.0
22770-072
0 2 4 6 8 10
TX ATTENUATOR (dB)
LPF IDAC
3dB BIAS
INT5
dacFullScale
(DAC BOOST)
INT5
Table 120. dacFullScale Transmitter LOL and Transmitter Output Power Comparison 0 dB Mode and 3 dB Mode
Transmitter Tone
DAC Full Scale Attenuation Transmitter LOL Power Transmitter LOL Improvement (dB)
Setting (dB) (dBm/MHz) (dBm) 0 dBFS in dBm (dBFS) Relative to 0 dB Setting
dacFullScale 0 dB 0 −77.2 −6 6 −83.2
Mode 5 −81.6 −10.8 1.2 −82.8
10 −86.5 −16 −4 −82.5
dacFullScale 3 dB 0 −76.6 −2.8 9.2 −85.8 2.6
Mode 5 −81.5 −7.8 4.2 −85.7 2.9
10 −85.9 −13 −1 −84.9 2.4
L
tavgDuration
= × 2avgDuration + 5
txSampleRate
peakDuration uint8_t Sets the duration for which peaks are compared against peakThreshold.
At the end of this duration, the number of counted peaks resets to zero.
Range = 0 to 15. Duration in time is given by (sample rate in Hz, duration
in seconds):
1
t peakDuration
= × 2 peakDuration + 5
txSampleRate
powerThreshold uint16_t Sets the powerThreshold for average power measurements. If the
average power exceeds this threshold, the avgPowerErr signal is asserted.
powerThreshold
powerThreshold dBFS = 10log
8192
peakCount uint8_t Sets a limit for the number of peaks detected within a peakDuration.
When this limit is exceeded, the PA protection peakPowerErr signal is
asserted.
peakThreshold uint16_t Sets the peak threshold power limit for counting a peak. If a peak
exceeds this threshold, it is counted. When this counter value exceeds
peakCount, peakPowerErr signal is asserted.
peakThreshold
peakThreshold dBFS = 10log
8192
avgPowerEnable uint8_t When set = 1, the PA protection average power measurement block is
enabled. Allows avgPowerErr signal assertion.
When set = 0, the PA protection average power measurement block is
disabled.
peakPowerEnable uint8_t When set = 1, the PA protection peak power measurement block is
enabled. Allows peakPowerErr signal assertion.
When set = 0, the PA protection peak power measurement block is
disabled.
inputSel adi_adrv9025_PaProtectionInputSel_e Determines the data path location for peak and average power
measurement. Options are given by the enumeration described in
Table 127.
avgPeakRatioEnable uint8_t When set = 1, this enables the average to peak power ratio block.
avgPowerEnable and peakPowerEnable must be enabled.
When set = 0, average to peak power calculations are not performed.
Table 127 describes the adi_adrv9025_PaProtectionInputSel_e enumeration. These measurement locations are shown in Figure 75.
JESD204B/C INTERFACE
PA PROTECTION
INT 5
LPF QDAC
THB THB THB DPD COMPLEX DPD
22770-074
TFIR QEC SRL MULT CFR
3 2 1 ACT HB
ADRV901x
EXTERNAL FRONT DEC5
GAIN END
ELEMENT ATTENUATOR JESD
TIA APD ADC FIR2 FIR1 HB3 HB2 HB1 RFIR DC DDC DIGITAL GAIN/ SLICER FLOATING POINT
CORR. HB COMPENSATION FORMATTER
HB2 POWER
OVERLOAD MEASUREMENT
DETECTOR BLOCK
SPI GPIOs
Table 140. Sample Rows from the Default Receiver Gain Table
Front-End Attenuator, External Gain Control, Signed Digital
Gain Table Index 7 Bits 3 Bits TIA/ADC Gain Gain/Attenuation[10:0] Phase Offset
255 0 0 0 0 0
254 14 0 0 0 0
253 28 0 0 0 0
The gain table index is the reference for each unique combination of gain settings in the programmable gain table. It is possible to have
different gain tables for each receiver, but typically the same one is used. The possible range of the gain table is 255 to 0, but typically only
a subset of this range is used. The gain table must be assigned in order of decreasing gain, starting with the highest gain in the maximum
gain index, such as 255, and the lowest gain in the minimum gain index.
The front-end attenuator has an 8-bit control word. The amount of attenuation applied depends on the value set in the front-end
attenuator column of the selected gain table index. The following equation provides an approximate relationship between the internal
attenuator and the front-end attenuation value programmed in the gain table, N:
256 − N
Attenuation (dB) = 20 log10
256
The external gain control column controls two analog GPIOs for each receiver. Table 141 shows which analog GPIOs are used for which
receiver.
Rx1
GPIO_ANA_0
22770-076
GPIO_ANA_1
The signed digital gain/attenuation is used to apply gain or attenuation digitally. The range of the digital gain is 0 to 50 dB. The range of
the digital attenuation is 0 to 18 dB. The resolution of the steps is 0.05 dB. As an example, a value of 14 results in a 0.7 dB gain, and a value
of −14 results in 0.7 dB of attenuation. The combination of TIA and ADC gain must be zero in all rows because this functionality is not used.
Gain Control Modes
The gain control mode is selected with the adi_adrv9025_RxGainCtrlModeSet API function.
adi_adrv9025_RxGainCtrlModeSet(…)
adi_adrv9025_RxGainCtrlModeSet(adi_adrv9025_Device_t* device, adi_adrv9025_RxAgcMode_t
gainMode[], uint8_t arraySize)
Description
This command selects the gain control mode.
Rx1 Rx3
GPIO1.8V a GPIO1.8V e
Rx1 Rx3
GPIO1.8V b GPIO1.8V f
Rx2 Rx4
GPIO1.8V c GPIO1.8V g
Rx3 Rx4
GPIO1.8V d GPIO1.8V h
22770-077
Figure 78. MGC Pin Mode: GPIO1.8V (a through h) Represent Any of GPIO_0 to GPIO_15
adi_adrv9025_RxGainPinCtrlCfgSet(…)
adi_adrv9025_RxGainPinCtrlCfgSet(adi_adrv9025_Device_t* device, adi_adrv9025_RxGainPinCfg_t
*rxGainPinCtrlCfg, adi_adrv9025_RxChannels_e rxChannel)
Description
This command configures pin control MGC mode.
Parameters
Table 147. adi_adrv9025_RxGainPinCtrlCfgSet(…) Parameters
Parameter Description
*device Pointer to device structure.
rxChannel An enumerator indicating which receiver channel to configure, as shown in Table 146.
*rxGainPinCtrlCfg A configuration structure pointer for the pin control MGC mode containing the members shown in Table 148.
Table 148. Definition of ADRV9025_RxGainCtrlPin_t
Member Description
uint8_t incStep Increment in gain index applied when the increment gain is pulsed. Acceptable values for this
parameter are 0 to 7. However, 1 is added to what is programmed into this parameter, resulting in step
sizes of 1 to 8.
uint8_t decStep Decrement in gain index applied when the decrement gain is pulsed. Acceptable values for this
parameter are 0 to 7. However, 1 is added to what is programmed into this parameter, resulting in step
sizes of 1 to 8.
adi_adrv9025_GpioPinSel_e GPIO used to increment gain. Any of GPIO_0 to GPIO_15 can be used. Acceptable values are
rxGainIncPin ADI_ADRV_9025_GPIO_00 to ADI_ADRV9025_GPIO_15.
adi_adrv9025_GpioPinSel_e GPIO used to decrement gain. Any of GPIO_0 to GPIO_15 can be used. Acceptable values are
rxGainDecPin ADI_ADRV_9025_GPIO_00 to ADI_ADRV9025_GPIO_15.
GAIN UPDATE
PERIOD
GAIN DECREMENT
(apdGainStepAttack)
GAIN DECREMENT
(apdGainStepAttack)
apdHighThresh
INTERFERER
REMOVED
SIGNAL INTERFERER
LEVEL PRESENT
GAIN INCREMENT
(apdGainStepRecovery
apdLowThresh
GAIN INCREMENT
(apdGainStepRecovery
22770-076
Figure 79. APD Thresholds and Gain Changes Associated with Underrange and Overrange Conditions
GAIN UPDATE
PERIOD
GAIN DECREMENT
(hb2GainStepAttack)
GAIN DECREMENT
(hb2GainStepAttack)
hb2HighThresh
INTERFERER
REMOVED
SIGNAL INTERFERER
LEVEL PRESENT
GAIN INCREMENT
(hb2GainStepHighRecovery
hb2UnderRangeHighThresh
GAIN INCREMENT
(hb2GainStepHighRecovery
22770-079
Figure 80. HB2 Thresholds and Gain Changes Associated with Underrange and Overrange Conditions
It is possible to enable a fast attack mode whereby the AGC is instructed to reduce gain immediately when an overrange condition occurs,
instead of waiting until the next expiry of the gain update counter using agcGainChangeIfThreshHigh. This parameter has independent
controls for the APD and HB2 detectors. Values from 0 to 3 are valid, as shown in Table 152.
GAIN UPDATE
PERIOD
GAIN DECREMENT
(apdGainStepAttack)
GAIN DECREMENT
(apdGainStepAttack)
apdHighThresh
INTERFERER
REMOVED
SIGNAL
INTERFERER
LEVEL
PRESENT
GAIN INCREMENT
(apdGainStepRecovery)
apdLowThresh
GAIN INCREMENT
(apdGainStepRecovery)
22770-080
Figure 81. APD Gain Changes with Fast Attack Enabled
Figure 82 shows the same scenario but from the viewpoint of agcChangeGainIfThreshHigh being set for HB2.
GAIN UPDATE
PERIOD
GAIN DECREMENT
(hb2GainStepAttack)
GAIN DECREMENT
(hb2GainStepAttack)
hb2HighThresh
INTERFERER
REMOVED
SIGNAL INTERFERER
LEVEL PRESENT
GAIN INCREMENT
(hb2GainStepHighRecovery
hb2UnderRangeHighThresh
GAIN INCREMENT
(hb2GainStepHighRecovery
22770-081
It is also possible to enable a fast recovery mode whereby a gain recovery event occurs at the expiry of the gain update period, as shown in
Figure 83. This functionality is enabled with the ableFastRecoveryLoop parameter. This fast recovery mode enables the HB2 overload
detector. The operation is shown in Figure 84. When the signal level falls below hb2UnderRangeLowThresh, the gain is incremented by
hb2GainStepLowRecovery following the expiry of the gain update period. Note that in the fast recovery mode the agcUnderRangeLowInterval
is used instead of the gain update counter to set the gain update period. After sufficient gain increases are implemented to bring the signal
level above hb2UnderRangeLowThresh, the gain is incremented by hb2GainStepMidRecovery after the expiry of a number of gain update
periods, as set by hb2GainStepMidRecovery. Finally, when the signal level is increased above hb2UnderRangeMidThresh, the gain is
incremented by hb2GainStepHighRecovery following the expiry of a number of gain update periods, as set by agcUnderRangeHighInterval.
Rev. 0 | Page 142 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
The multiple threshold and interval parameters allow for a gain recovery whereas the wanted signal level is approached, the magnitude of
the gain adjustments is reduced and the time interval between gain changes is increased. However, recovery events remain periodic, as
shown in Figure 83 because all gain updates occur at the expiry of the gain update period.
GAIN UPDATE COUNTER 5 AGC GAIN UPDATE COUNTER 5 AGC
SLOW LOOP SLOW LOOP
OR CLOCK OR CLOCK
SETTLING DELAY SETTLING DELAY
LOW UNDER-RANGE INTERVAL CYCLES LOW UNDER-RANGE INTERVAL CYCLES
GAIN GAIN
RECOVERY RECOVERY
22770-082
EVENT EVENT
Figure 83. AGC Sequence with HB2 Detector in Fast Recovery Mode
hb2HighThresh
SIGNAL LEVEL
agcUnderRangeHighInterval hb2UnderRangeHighThresh
GAIN INCREMENT
(hb2GainStepHighRecovery)
hb2UnderRangeMidThresh
GAIN INCREMENT
(hb2GainStepMidRecovery)
agcUnderRangeMidInterval
hb2UnderRangeLowThresh
GAIN INCREMENT
(hb2GainStepLowRecovery)
22770-083
agcUnderRangeLowInterval
Figure 84. AGC Operation with HB2 Detector in Fast Recovery Mode
GAIN RECOVERY
N IF Y
apdLowThresh
under-range
IF
hb2UnderRange
N LowThresh Y
under-range AND
hb2GainStepLow
RECOVERY ≠ 0
IF
hb2UnderRange
N MidThresh Y RECOVER GAIN BY
under-range AND hb2GainStepLowRecovery
hb2GainStepMid
RECOVERY ≠ 0
IF
hb2UnderRange RECOVER GAIN BY
N HighThresh Y hb2GainStepLowRecovery
under-range AND
hb2GainStepHigh
RECOVERY ≠ 0
IF
N apdLowThresh Y
under-range AND RECOVER GAIN BY
apdGainStep hb2GainStepHighRecovery
RECOVERY ≠ 0
RECOVER GAIN BY
apdGainStepRecovery
22770-084
END
Figure 85. Flow Diagram for AGC Recovery in Peak Detect AGC Mode
NO GAIN CHANGE
SIGNAL RECEIVED SIGNAL
LEVEL LEVEL CHANGE
RECEIVED SIGNAL
LEVEL CHANGE
underRangeHighPowerThresh
GAIN INCREMENT INCREMENT GAIN BY
underRangeHighPowerGainStepRecovery
MEASUREMENT
MEASUREMENT
underRangeLowPowerGainStepRecovery
DURATION
DURATION
DURATION
POWER
POWER
POWER
22770-085
Figure 86. PMD Thresholds and Gain Changes for Underrange and Overrange Conditions
It is possible for the AGC to get contrasting requests from the power and peak detectors. An example is a blocker that is visible to the
analog peak detector but is quite significantly attenuated by the power measurement block. In this case, the APD can be requesting a gain
decrement while the power measurement block can be requesting a gain increment. The AGC has the following priority scheme in power
detect mode:
1. APD overrange (upper level)
2. HB2 overrange (upper level)
3. APD lower level peak exceeded
4. HB2 lower level peak exceeded
5. Power measurement
In this example, the gain is decremented because the APD overrange has a higher priority than the power measurement. It is important to
note the APD and HB2 lower level overloads. In peak detect mode, the lower level thresholds for these detectors are used to indicate an
underrange condition, which caused the AGC to increase the gain. In power detect mode, these detectors are not used for gain recovery,
but can be used to control gain recovery by setting the agcLowThreshPreventGain API parameter. If this parameter is set, and if the signal
level is exceeding a lower level threshold, the AGC is prevented from increasing the gain regardless of the power measurement.
This prevents an oscillation condition that may otherwise occur to a blocker visible to a peak detector but filtered before the power
measurement block. In such a case, the peak detector can cause the AGC to decrease gain. The peak detector does this until the blocker is
no longer exceeding the defined threshold. At this point, the power measurement block can request an increase in gain and does so until
the peak threshold of the detector is exceeded, which decreases gain. By using these lower level thresholds, the AGC is prevented from
increasing gain as the signal level approaches an overload condition, providing a stable gain level for the receiver chain under such a
condition.
Y AGC GAIN Y
ATTACK
AGC GAIN
ATTACK
DELAYED
GAIN ATTACK
EVENT
GAIN
CHANGE
COUNTER/SLS
GAIN GAIN
22770-086
RECOVERY RECOVERY
EVENT EVENT
Figure 87 outlines the operation of the AGC state machine. The diagram outlines possible gain change scenarios rather than a practical
example of AGC operation. The possible gain change scenarios are described as follows:
• AGC gain attack within gain update counter, but more than an SLS delay before the gain update counter expiry. Because SLS is
typically several orders of magnitude smaller than the gain update counter, this is the most common gain decrement scenario.
• AGC gain attack within the gain update counter, but within an SLS delay before the gain update counter expiry. This is a special case,
but rarely occurs in applications per the reasoning described in the previous scenario.
• AGC gain recovery at the end of the gain update counter. Note that when fast recovery is enabled, the gain update counter is
substituted with the low underrange interval, per Figure 83.
A gain attack may occur within the gain update counter period when fast attack is enabled. A gain recovery event may only occur at the
end of the gain update counter period. After a gain attack, a gain change counter with a value equal to the SLS delay is started. No further
gain attacks are possible while this counter is running. This allows the minimum time to be set between gain changes. However, the gain
change counter also prevents the AGC from moving from the gain update counter state to the SLS delay state. Therefore, if a gain attack
occurred very close to the end of the gain update counter state, the gain change counter delays the start of the SLS state and shifts the gain
recovery event. To prevent this happening and maintain a periodic gain recovery event, gain attacks are prevented from happening
towards the end of the gain update counter state, as shown in Figure 87. If a gain attack happens in this period, it is delayed until the start
of the next gain update counter state. This can cause gain attacks to be held off for up to 2 × SLS delay, therefore it is recommended to
keep SLS delay as short as possible to minimize the gain attack delay. Note that it is possible to disable this blocking feature, allowing gain
attacks to occur anywhere within the gain update counter state. However, the periodicity of the gain recovery event is no longer
guaranteed as gain attacks towards the end of the gain update counter state cause the gain recovery event to be delayed.
apdHighThresh (mV)
apdLowThresh (mV)
22770-087
TIME
There are two APD thresholds, as shown in Figure 88. These thresholds are contained in the agcPeak API structure, apdHighThresh and
apdLowThresh, respectively.
hb2OverloadThreshCnt hb2OverloadThreshCnt
Exceeded Not Exceeded
22770-088
agcGainUpdateCounter
The HB2 detector has a number of programmable thresholds. Some of these thresholds are only used in the fast recovery mode of the
peak detect AGC configuration, as summarized in Table 156.
hb 2UnderRangeHighdBFS
20
= 16,384 × 10
hb2UnderRangeHighThresh
hb 2UnderRangeMiddBFS
20
= 16,384 × 10
hb2UnderRangeMidThresh
hb 2UnderRangeLowdBFS
20
= 16,384 × 10
hb2UnderRangeLowThresh
Each threshold has an associated counter so that an overrange condition is not flagged until the threshold has been exceeded the amount
of times determined by the corresponding equation in a gain update period. Note that these equations only apply if
hb2OverladPowerMode = 0. If this parameter is set to 1, the denominator in the exponent of each equation changes from 20 to 10.
DEVICE INITIALISATION
UP TO AND INCLUDING
adi_adrv9025_PostMcsInit( )
RUN
adi_adrv9025_AgcCfgSet( )
RUN
adi_adrv9025_RxGainModeSet( )
CONFIGURE GAIN
CONTROL GPIOs
22770-089
22770-090
Figure 91. TES Stream Settings Control Window to Enable AGC Holdover
Figure 92. TES Stream Settings Control Window to Enable Receiver Gain Mode Switching using GPIO
link.platform.board.Adrv9025Device.RadioCtrl.StreamGpioConfigSet(streamGpioCfg)
+ agcPeak + agcPower
adi_adrv9025_AgcPeak_t adi_adrv9025_AgcPower_t
+ agcUnderRangeLowInterval + powerEnableMeasurement
+ agcUnderRangeMidInterval + powerInputSelect
+ agcUnderRangeHighInterval + underRangeHighPowerThresh
+ apdHighThresh + underRangeLowPowerThresh
+ apdLowGainModeHighThresh + underRangeHighPowerGainStepRecovery
+ apdLowThresh + underRangeLowPowerGainStepRecovery
+ apdLowGainModeLowThresh + powerMeasurementDuration
+ apdUpperThreshPeakExceededCnt + rxTddPowerMeasDuration
+ apdLowerThreshPeakExceededCnt + rxTddPowerMeasDelay
+ apdGainStepAttack + overRangeHighPowerThresh
+ apdGainStepRecovery + overRangeLowPowerThresh
+ enableHb2Overload + powerLogShift
+ hb2OverloadDurationCnt + overRangeHighPowerGainStepAttack
+ hb2OverloadThreshCnt + overRangeLowPowerGainStepAttack
+ hb2HighThresh
+ hb2UnderRangeLowThresh
+ hb2UnderRangeMidThresh
+ hb2UnderRangeHighThresh
+ hb2UpperThreshPeakExceededCnt
+ hb2UnderRangeHighThreshPeakExceededCnt
+ hb2GainStepHighRecovery
+ hb2GainStepLowRecovery
+ hb2GainStepMidRecovery
+ hb2GainStepAttack
+ hb2OverloadPowerMode
+ hb2ThreshConfig
22770-092
+ hb2UnderRangeMidThreshPeakExceededCnt
+ hb2UnderRangeLowThreshPeakExceededCnt
hb2UnderRangeLowThresh This sets the lower threshold of the HB2 underrange threshold 0 16383
detectors. Used only when the fast recovery option of the peak
detect AGC mode is being utilized.
hb 2UnderRangeLowdBFS
20
= 16,384 × 10
hb2UnderRangeLowThresh
hb2UnderRangeMidThresh This sets the middle threshold of the HB2 underrange threshold 0 16383
detectors. Used only when the fast recovery option of the peak
detect AGC mode is being utilized.
hb 2UnderRangeMiddBFS
20
= 16,384 × 10
hb2UnderRangeMidThresh
if (Link.IsConnected() == False):
connect = True
Link.Ads8.board.Client.Connect("192.168.1.10", 55556)
print "Connecting"
if (Link.IsConnected()):
adrv9025 = Link.Adrv9025Get(1)
#adi_adrv9025_AgcPeak_t agcPeak;
agcConfig.agcPeak.agcUnderRangeLowInterval = 205000 / 245;
agcConfig.agcPeak.agcUnderRangeMidInterval = 2;
agcConfig.agcPeak.agcUnderRangeHighInterval = 4;
agcConfig.agcPeak.apdHighThresh = 38;
agcConfig.agcPeak.apdLowThresh = 25;
agcConfig.agcPeak.apdUpperThreshPeakExceededCnt = 10;
agcConfig.agcPeak.apdLowerThreshPeakExceededCnt = 3;
agcConfig.agcPeak.enableHb2Overload = 1;
agcConfig.agcPeak.hb2OverloadDurationCnt = 1;
agcConfig.agcPeak.hb2OverloadThreshCnt = 1;
agcConfig.agcPeak.hb2HighThresh = 11598; #-3dBFS
agcConfig.agcPeak.hb2UnderRangeLowThresh = 8211;
Rev. 0 | Page 160 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
agcConfig.agcPeak.hb2UnderRangeMidThresh = 5813;
agcConfig.agcPeak.hb2UnderRangeHighThresh = 2913;
agcConfig.agcPeak.hb2UpperThreshPeakExceededCnt = 10;
agcConfig.agcPeak.hb2UnderRangeHighThreshExceededCnt = 3;
agcConfig.agcPeak.hb2UnderRangeMidThreshExceededCnt = 3;
agcConfig.agcPeak.hb2UnderRangeLowThreshExceededCnt = 3;
agcConfig.agcPeak.hb2OverloadPowerMode = 0;
agcConfig.agcPeak.hb2ThreshConfig = 3;
agcConfig.agcPeak.apdGainStepAttack = 4;
agcConfig.agcPeak.apdGainStepRecovery = 2;
agcConfig.agcPeak.hb2GainStepAttack = 4;
agcConfig.agcPeak.hb2GainStepHighRecovery =2;
agcConfig.agcPeak.hb2GainStepMidRecovery = 4;
agcConfig.agcPeak.hb2GainStepLowRecovery = 8;
#adi_adrv9025_AgcPower_t agcPower;
agcConfig.agcPower.powerEnableMeasurement = 0;
agcConfig.agcPower.powerInputSelect = 0;
agcConfig.agcPower.underRangeHighPowerThresh = 9;
agcConfig.agcPower.underRangeLowPowerThresh = 2;
agcConfig.agcPower.underRangeHighPowerGainStepRecovery = 0;
agcConfig.agcPower.underRangeLowPowerGainStepRecovery = 0;
agcConfig.agcPower.powerMeasurementDuration = 5;
agcConfig.agcPower.rxTddPowerMeasDuration = 5;
agcConfig.agcPower.rxTddPowerMeasDelay = 1;
agcConfig.agcPower.overRangeHighPowerThresh = 2;
agcConfig.agcPower.overRangeLowPowerThresh = 0;
agcConfig.agcPower.powerLogShift = 1; # Force to 1
agcConfig.agcPower.overRangeHighPowerGainStepAttack = 0;
agcConfig.agcPower.overRangeLowPowerGainStepAttack = 0;
# Make agcConfig and rxGainMode into array types (necessary for syntax reasons)
agcConfigArr = Array[Types.adi_adrv9025_AgcCfg_t]([agcConfig])
rxGainModeArr = Array[Types.adi_adrv9025_RxAgcMode_t]([rxGainMode])
if (connect == True):
Rev. 0 | Page 161 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Link.Ads8.board.Client.Disconnect()
print "Disconnecting"
GAIN COMPENSATION, FLOATING POINT FORMATTER AND SLICER
The user has the option of enabling gain compensation in the transceiver. In gain compensation mode, the digital gain block is utilized to
compensate for the analog front-end attenuation. The cumulative gain across the device is therefore 0 dB. For example, if 5 dB analog
attenuation is applied at the front end of the device then 5 dB of digital gain is applied. This ensures that the digital data is representative
of the rms power of the signal at the receiver input port. Any internal front-end attenuation changes made to prevent ADC overloading
are transparent to the baseband processor. In this way, the AGC can be used to react quickly to incoming blockers without the need for
the baseband processor to track the current gain index the level of the received signal at the input to the device for received signal
strength measurements.
The digital gain block is controlled by the gain table, and a compensated gain table is required to operate in this mode. Analog Devices
provides an example compensated gain table in the software package. Such a gain table has a unique front-end attenuator setting with a
corresponding amount of digital gain programmed at each index of the table.
Gain compensation can be used in either AGC mode or MGC mode. The maximum amount of gain compensation is 50 dB. This allows
for compensation of both the internal analog attenuator and an external gain component (such as a DSA or LNA).
Large amounts of digital gain increase the bit width of the path. There are a number of ways in which this expanded bit width data can be
sent to the baseband processor, which are described in the following mode option descriptions. Figure 94 is a block diagram of the gain
compensation portion of the receiver chain, showing the locations of the various blocks.
SLICER OUTPUTS
TO BBP
22770-093
Figure 94. Gain Compensation, Floating Point Formatter, and Slicer Section of the Receiver Datapath
22770-094
6dB ≤ GAIN
D22 D21 D20 D19 D18 D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
COMPENSATION < 12dB
Figure 95. Bit Width of Received Signal for Increasing Gain Compensation
The slicer is used to attenuate the data after the digital gain block in a way that it can fit into the resolution of the JESD204B and
JESD204C datapath. The slicer then advises the user how much attenuation is being applied in real time, so that the user can compensate
on the baseband processor side. In this mode, the current slicer setting (amount of attenuation) is provided in real time over GPIO pins.
Note that this slicer setting information is not necessarily time aligned to the data at the baseband processor side. As soon as the slicer
value changes, this information is provided on the GPIO pins. However, there is some latency between this and when the corresponding
data arrives across the JESD204B and JESD204C link. It is up to the user to determine an appropriate way of accounting for this latency.
This slicer can be configured for a number of attenuation resolutions, namely 1 dB, 2 dB, 3 dB, 4 dB, 6 dB, or 8 dB steps. Higher resolution
(smaller steps) allows the user to follow the actual signal amplitude with finer resolution, while lower resolution (larger steps) allows for
more compensation range.
The slicer can use up to 4 GPIOs per receiver. The GPIOs used to output the slicer position are shown in Table 165. These GPIOs require
their pins to be enabled as outputs and configured for slicer output mode (see the GPIO Configuration section).
0 0 0 0
0dB < GAIN
D22 D21 D20 D19 D18 D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
COMPENSATION < 6dB
0 0 0 0
6dB ≤ GAIN
22770-095
D22 D21 D20 D19 D18 D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
COMPENSATION < 12dB
MSB LSB
The baseband processor receives these 16-bits and uses the slicer output to scale the power of the received signal to determine the power
at the input to the device (or at the input to an external gain element if considered part of the digital gain compensation).
SIGN SLICER
BIT VALUE
I DATA S SL1 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
SIGN SLICER
22770-096
BIT VALUE
Q DATA S SL0 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
SIGN SLICER
22770-097
BIT VALUE
Q DATA S D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SL0
SIGN SLICER
22770-098
BIT VALUE
Q DATA S SL1 SL0 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
SIGN SLICER
BIT VALUE
I DATA S D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 P SL2
SIGN SLICER
22770-099
BIT VALUE
Q DATA S D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SL1 SL0
SIGN SLICER
BIT VALUE
I DATA S SL3 SL2 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
SIGN SLICER
22770-100
BIT VALUE
Q DATA S SL1 SL0 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
SIGN SLICER
BIT VALUE
I DATA S D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SL3 SL2
SIGN SLICER
22770-101
BIT VALUE
Q DATA S D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SL1 SL0
S E T
W t
22770-102
t W
EXP: +3
16.0
EXP: +2
8.0
EXP: +1
4.0
EXP: 0
2.0
–2.0 EXP: 0
–4.0
EXP: –1
–8.0
EXP: –2
–16.0
EXP: –3
–32.0
1.00
EXP: –1
–0.5
EXP: –2
0.25
EXP: –2
(Subnormal)
0
–0.25
EXP: –2
–0.50
EXP: –1
22770-103
–1.00
The floating-point formatter also supports non-IEEE754 modes, referred to as Analog Devices modes, where the largest exponent is not
used to express NaN in accordance with IEEE754. It is unnecessary for the device to encode NaN because none of the data values can be
NaN and, therefore, using this extra exponent value increases the largest value representable for a given exponent bit width.
Table 171. Exponent Bit Widths of IEEE754 and Analog Devices Modes
Exponent Bit Width IEEE754 Mode Exponent Range (After Unbiasing) Analog Devices Mode Exponent Range (After Unbiasing)
5 +15 to −14 +16 to −14
4 +7 to −6 +8 to −6
3 +3 to −2 +4 to −2
2 +1 to −1 +2 to −1
Rev. 0 | Page 167 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
In the default floating point format, the leading one is inferred and not encoded (for normal numbers). It is possible to enable a mode
where the leading one is encoded and stored in the MSB of the significand. However, this reduces the precision of the values.
If the user knows that the range of attenuation required for the worst case blocker (and therefore the digital gain required to compensate for it)
exceeds the correction range allowed by the exponent width chosen, it is also possible to enable a fixed digital attenuation (from 6 dB to 42 dB) prior
to the floating-point formatter to ensure that the signal never exceeds the maximum range encodable over the JESD204B and JESD204C link.
RECEIVER DATA FORMAT DATA STRUCTURE
The configuration parameters for the floating-point formatter and slicer are set up in a data structure of adi_adrv9025_RxDataFormat_t type.
Table 172. adi_adrv9025_RxDataFormat Definition
Parameter Comments
rxChannelMask This selects the channels upon which to enable this gain control mode. It is a bit mask with each bit
corresponding to a channel, [D0] = Rx1, [D1] = Rx2, [D2] = Rx3, [D3] = Rx4. Therefore, setting the
rxChannelMask = 15 means that all receivers are configured with the same agcMode. Data type: uint32.
formatSelect This selects the format of the data received from the receive path. Data type: adirx9025_RxDataFormatModes_e.
formatSelect Format
ADI_ADRV9025_GAIN_COMPENSATION_DISABLED No gain compensation (Mode 1)
ADI_ADRV9025_GAIN_WITH_FLOATING_POINT Gain compensation and floating-point formatter
enabled (Mode 5)
ADI_ADRV9025_GAIN_WITH_INTERNAL_SLICER_NOGPIO Gain compensation and slicer bits embedded on
JESD204B and JESD204C signal (Mode 3)
ADI_ADRV9025_GAIN_WITH_INTERNAL_SLICER Gain compensation and slicer bits output on
GPIOs (Mode 2)
ADI_ADRV9025_GAIN_WITH_EXTERNAL_SLICER Gain compensation and slicer position input from
GPIOs (Mode 4)
floatingPointConfig A configuration structure for floating point format (see Table 173). To be used when floating point formatter is
utilized. Data type: adi_adrv9025_FloatingPointConfigSettings_t.
integerConfigSettings A configuration structure for the data resolution across the JESD204B and JESD204C link (see Table 174). Data
type: adi_adrv9025_IntegerConfigSettings_t.
slicerConfigSettings A configuration structure for the slicer functionality (see Table 175). Data type: adi_adrv9025_SlicerConfigSettings_t.
externalLnaGain For use in dual band modes. Not currently supported.
tempCompensationEnable Not currently supported.
Table 173. adi_adrv9025_FloatingPointConfigSettings_t
Parameter Comments
fpDataFormat This parameter sets the format of the 16-bit output on the JESD204B interface. Data type:
adi_adrv9025_FpFloatDataFormat_e.
fpDataFormat Floating Point Data Format
ADI_ADRV9025_FP_FORMAT_SIGN_EXP_SIGNIFICAND Sign, Exponent, Significand
ADI_ADRV9025_FP_FORMAT_SIGN_SIGNIFICAND_EXP Sign, Significand, Exponent
fpRoundMode This parameter sets the round mode for the significand. The following settings are defined in the IEEE754
specification. For more information, consult Section 4.3 in IEEE 754-2008. Data type: adi_adrv9025_FpRoundModes_e.
fpRoundMode Floating Point Rounding Mode
ADI_ADRV9025_ROUND_TO_EVEN Floating point ties to an even value.
ADI_ADRV9025_ROUNDTOWARDS_POSITIVE Round floating point toward the positive direction.
ADI_ADRV9025_ROUNDTOWARDS_NEGATIVE Round floating point toward the negative direction.
ADI_ADRV9025_ROUNDTOWARDS_ZERO Round floating point toward the zero direction.
ADI_ADRV9025_ROUND_FROM_EVEN Round floating point away from the even value.
fpNumExpBits This parameter indicates the number of exponent bits in the floating-point number. Data type:
adi_adrv9025_FpExponentModes_e.
fpNumExpBits No. of Exponent Bits
ADI_ADRV9025_2_EXPONENTBITS 2
ADI_ADRV9025_3_EXPONENTBITS 3
ADI_ADRV9025_4_EXPONENTBITS 4
ADI_ADRV9025_5_EXPONENTBITS 5
JESD204B/C INTERFACE
RHB1 QEC DC
TIA IADC FIR2 FIR1 RHB3 RHB2
(HR)
PFIR
CORR CORR
IF
RHB1 CONVERSION
(LP) AND DIGITAL
GAIN
DEC5
RHB1 QEC DC
TIA QADC FIR2 FIR1 RHB3 RHB2 (HR) PFIR
CORR CORR
22770-104
RHB1
(LP)
BAND A CIRCUITRY
BAND A BAND A
NCO 1 NCO 2
HB FILTER
2 2
2 HB FILTER + DEC2 2 2
DIG GAIN
2 COMP 2
INT2 + HB FILTER 2
I, Q
2
I, Q
2 INT2 + HB FILTER 2
2 2
2
DIG GAIN
COMP
HB FILTER + DEC2
2 2
HB FILTER
BAND B BAND B
NCO 1 NCO 2
22770-107
BAND B CIRCUITRY
Figure 106. IF Conversion Stage Block Diagram (All Circuitry is Implemented in Quadrature, as Indicated)
ZERO IF TO REAL IF
In this use case, the received signal is centered around the LO. The signal is interpolated by 2 and half-band filtered. The Band A NCO2
upshifts or downshifts the data to generate a signal that is symmetrical to about 0 Hz. The result of this signal is that the spectrum no
longer requires a complex representation, only I data is sent across the link, and the Q data is dropped.
DUAL BAND MODE
In this use case, multiple signals are received (Signal 1 and Signal 2). Band A circuitry can be used to process Signal 1, and Band B
circuitry can be used to process Signal 2. Band A NCO1 shifts Signal 1 such that the signal is placed within the pass band of the half-band
filter and filters out Signal 2. The decimate by 2 stage can also be used if the final composite bandwidth allows a lower data rate across the
JESD link. The Band A NCO2 stage is then used to offset the signal to the required position in the spectrum. Likewise, the same
procedure is performed on Signal 2. The result of this procedure is that the two signals, originally located far apart in the spectrum and
requiring a high data rate, can be moved closer together with this IF conversion circuitry and represented by a lower IQ rate.
DUAL BAND MODE (REAL IF)
In this use case, the signals are processed separately using Band A and Band B. The NCO2 stages are used to shift both signals so that the
signals exist on the same side of the LO. At this point, the spectrum no longer needs a complex representation, only I data can be sent
across the link, and Q data is dropped. The interpolate by 2 stage can also be utilized for this scenario.
HB FILTER ONLY MODE
If there is a blocker to one side of the signal, the IF conversion stage can be used to obtain further rejection of the blocker. Band A NCO1
offsets the signal to position the signal close to the edge of the half-band filter pass band, and to position the blocker in the filter transition or
stopband. The Band A NCO2 can be used to position the desired signal to its previous position within the spectrum, if required.
0 52.5MHz f 0 f 0 f
BAND A CIRCUITRY
BAND A BAND A
NCO 1 NCO 2
HB FILTER
2 2
2 HB FILTER + DEC2 2 2
DIG GAIN
2 COMP 2
INT2 + HB FILTER 2
I, Q
2
I, Q
2 INT2 + HB FILTER 2
2 2
2
DIG GAIN
COMP
HB FILTER + DEC2
2 2
HB FILTER
BAND B BAND B
NCO 1 NCO 2
22770-108
BAND B CIRCUITRY
Figure 108. Filter Configuration for Receive 200 MHz, IQ Rate 245.76 MSPS
22770-110
Figure 109. Receive Signal Transfer Function
Range Checks
Rule 1: Input Center Frequency Setup
Use the following relationships to ensure the center frequency is setup properly.
• inputCenterFreq + bandWidthDiv2 > primaryBwHz/2
• inputCenterFreq − bandWidthDiv2 < −primaryBwHz/2
DIGITAL
THB3 THB2 THB1 TFIR QEC GAIN
LPF IDAC
JESD204B/C INTERFACE
INT5
DIGITAL
THB3 THB2 THB1 TFIR QEC GAIN
LPF QDAC
22770-109
INT5
Analog LPF
The LPF is a second-order, analog Butterworth LPF with an adjustable 3 dB corner. The transmit chains of the device can support pass-band
bandwidths up to 225 MHz (on I and Q). The LPF is calibrated during device initialization, which results in a consistent frequency corner
across all devices. The LPF bandwidth is set within the device data structure and is profile dependent. Roll-off within the analog LPF pass
band is compensated by the transmitter finite impulse response (TFIR) to ensure a maximally flat pass-band frequency response.
Interpolation By 5 Filter (INT5)
Either the INT5 filter or any combination of THB3 and THB2 are used in the transmit digital path. The INT5 filter interpolates by a
factor of 5.
The INT5 filter coefficients include the following: +0.002929688, +0.029052734, −0.029296875, +0.03125, −0.012207031, −0.005859375,
−0.056640625, +0.051513672, −0.055664063, +0.025390625, +0.020996094, 0.081298828, −0.057617188, +0.072509766, −0.045166016,
−0.047607422, −0.095947266, +0.030517578, −0.071289063, +0.068603516, +0.093994141, +0.113769531, +0.030761719, +0.055419922,
−0.103759766, −0.185791016, −0.185302734, −0.136962891, −0.037353516, +0.227050781, +0.518554688, +0.717285156, +0.928466797,
+1.019287109, +0.928466797, +0.717285156, +0.518554688, +0.227050781, −0.037353516, −0.136962891, −0.185302734, −0.185791016,
−0.103759766, +0.055419922, +0.030761719, +0.113769531, +0.093994141, +0.068603516, −0.071289063, +0.030517578, −0.095947266,
−0.047607422, −0.045166016, +0.072509766, −0.057617188, +0.081298828, +0.020996094, +0.025390625, −0.055664063, +0.051513672,
−0.056640625, −0.005859375, −0.012207031, +0.03125, −0.029296875, +0.029052734, and +0.002929688.
Transmit Half-Band 3 Filter (THB3)
The THB3 filter is a fixed coefficient, half-band, interpolating filter. The THB3 filter can interpolate by a factor of 2 or the filter can be
bypassed. The THB3 filter coefficients include the following: 0.125, 0.5, 0.75, 0.5, and 0.125.
Transmit Half-Band 2 Filter (THB2)
The THB2 filter is a fixed coefficient, half-band, interpolating filter. The THB2 filter can interpolate by a factor of 2 or the filter can be
bypassed. The THB2 filter coefficients include the following: −0.08203125, 0, +0.58203125, +1, +0.58203125, 0, −0.08203125.
Transmit Half Band 1 Filter (THB1)
The THB1 filter is a fixed coefficient, half-band, interpolating filter. The THB1 interpolates by a factor of 2 or the filter can be bypassed.
The THB1 filter coefficients include the following: −0.002319336, 0, +0.003601074, 0, −0.004058838, 0, +0.004119873, 0, −0.006439209,
0, +0.009613037, 0, −0.012023926, 0, +0.014404297, 0, −0.018737793, +0, 0.024291992, 0, −0.030059814, 0, +0.037353516, 0, −0.048156738, 0,
+0.062927246, 0, −0.084350586, +0, 0.122283936, 0, −0.209564209, 0, +0.635925293, +1, +0.635925293, 0, −0.209564209, 0, +0.122283936, 0,
−0.084350586, 0, +0.062927246, 0, −0.048156738, 0, +0.037353516, 0, −0.030059814, 0, +0.024291992, 0, −0.018737793, 0, +0.014404297,
0, −0.012023926, 0, +0.009613037, 0, −0.006439209, 0, +0.004119873, 0, −0.004058838, 0, +0.003601074, 0, −0.002319336
Programmable TFIR
The TFIR filter acts as an interpolating filter in the transmit path. The TFIR can interpolate by a factor of 1, 2, or 4, or the TFIR can be
bypassed. The TFIR is used to compensate for roll-off caused by the post DAC analog LPF. The TFIR has a configurable number of taps
that can be used including 20, 40, 60, or 80 taps. The TFIR also has a programmable gain setting of +6 dB, 0 dB, −6 dB, or −12 dB.
Rev. 0 | Page 179 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
The maximum number of taps is limited by the TFIR clock rate (data processing clock − DPCLK). The maximum DPCLK is 1 GHz. The
DPCLK is the high speed digital clock (HSDIG_CLK) divided by either 4 or 5 depending on the HSDIG_CLK divider setting. The
DPCLK affects the maximum number of TFIR filter taps that can be used according to the following relationship:
Tx PFIR Filter TapsMAX = (DPCLK/Tx_IQ_DATARATE) × 20
where:
Tx PFIR Filter Tapsmax is the maximum number of filter taps that can be used for the given clock rate
Tx_IQ_DATARATE is the input datarate of the filter
TRANSMIT SIGNAL PATH EXAMPLE
The TES provides an example that shows how the baseband filtering stages are used in profile configurations for a signal data path. In this
example, the ADRV9025Init_StdUseCase26_nonLinkSharing profile is selected for the transmit channels. This example is a 200 MHz/450
MHz profile with an IQ rate of 491.52 MSPS.
To explain the terminology of the 200 MHz/450 MHz profile, the 200 MHz refers to the transmit primary signal bandwidth, and the
450 MHz refers to the transmit RF bandwidth.
Figure 111 shows the filter configuration for this example profile. The signal rate after the TFIR block is equal to the profile IQ rate.
22770-112
Figure 111. Filter Configuration for the Transmit 200 MHz/450 MHz, 491.52 MSPS Profile
The combined transmit signal transfer function can be found in the Tx tab under the ChipConfig dropdown menu, as shown in Figure 112.
22770-113
DIGITAL
THB3 THB2 THB1 TFIR QEC GAIN
LPF IDAC
JESD204B/C INTERFACE
INT5
DIGITAL
THB3 THB2 THB1 TFIR QEC GAIN
LPF QDAC
22770-109
INT5
22770-115
Figure 114. Filter Configuration for Observation Receive 450 MHz, IQ Rate = 491.52 MSPS
The Observation receive signal transfer function of the signal chain is in the ORx tab within the ChipConfig dropdown menu, as shown
in Figure 115.
22770-116
Figure 115. Observation Receive Signal Transfer Function
22770-115
SERDES
Each half of the transceiver can operate as TDD, FDD, or a mix of both. The transceiver contains two independent Los, LO1 and LO2,
where LO1 is asigned to either Band A or Band B and LO2 is assigned to the other band. Reducing the number of LOs by sharing an LO
minimizes the risks of LO to LO coupling issues, which is a major contributor to spurious issues in highly integrated RF ICs. Figure 117
shows one LO shared between the receive and transmit FDD bands.
Rx BOTTOM Rx TOP
LOW IF MODE
FDD SHARE SAME
Rx BAND Tx BAND
22770-116
The frequency planning for the LO frequency selection is flexible. The receiver bandwidth remains at 200 MHz, as specified in the device data
sheet. The transmitter bandwidth has been extended beyond 200 MHz to accomodate 3GPP bands that require larger receiver and
transmitter bandwidths and duplex spacing. The transmitter channels have internal interpolation and NCOs to shift the input carriers beyond
the 200 MHz primary bandwidth. The device data sheet has transmitter QEC performance specifications for operation beyond the 200 MHz
primary bandwidth. Choose the LO frequency necessary to place the transmitter image out of the receiver band so that there is no impact to the
receiver sensitivity. Duplexer rejection of the transmitter image is required to meet transmit emissions specifications. The receiver and
transmitter channels both have NCOs, so the low IF configuration is transparent to the baseband.
The transceiver has three dual-band profiles to choose from that optimize power consumption versus required bandwidths based on user
application. These profiles include the following:
• UC51nonLinkSharing, TDD bands with transmit and receive bandwidths greater than 100 MHz and an I/Q data rate of 245.76 MSPS.
• UC54nonLinkSharing, FDD or TDD bands with transmit and receive bandwidths less than 100 MHz and I/Q data rates of 122.88
MSPS. Reduced transmit and receive IQ rates are included to save power consumption and lower cost FPGA solution.
• UC55nonLinkSharing, similar to UC54 except the receive bandwidth is reduced to 160 MHz if additional receive channel filtering
is desired.
LO Assignment
The firmware determines if the device is in dual-band mode when the TX1 and TX2 selected LO is the same as the RX1 and RX2 LO and
different than the LO selected for the TX3, TX4 and RX3, and RX4 channels. The following code is an example how this is setup. Receiver
channels 1 and 2 and transmitter channels 1 and 2 share LO1, and receiver channels 3 and 4 and transmitter channels 3 and 4 share LO2.
It is also acceptable to use the opposite LO in this assignment.
BAND 1: DL
LO = 2015MHz 2110-2170
UL
DL IMAGE 1920-1980 3×: 2050-2230
1860-1920 5×: 1990-2290
Rx BW 190M
Tx PRIMARY BW 310
22770-117
Tx DPD BW 450
LO = 1757.5MHz
DL
1805-1880
UL
DL IMAGE 1710-1785 3×: 1730-1955
1635-1710 5×: 1655-2030
Rx BW 95M
Tx PRIMARY BW 245
22770-118
Tx DPD BW 450
Band 4, Band 10, and Band 66 have the largest bandwidth from the bottom of the receive bands and the top of the transmit bands. Band 66
is the largest, and Band 4 and Band 10 are subsets of Bands 66. The span from the top of the transmit band to the bottom of receive band is
490 MHz. This range is too wide a bandwidth to share a single LO. Operators in the United States that have an AWS-1 band also have
Band 25. In this case, Band 25 can be paired with these AWS-1 bands (B66 or B4 or B10). Band 2 is also a subset of Band 25. These
frequency plans require less bandwidth than Band 1. Because transmitters and receivers do not share an LO, transmit images do not impact
the receive channel. Band 1 is the most stringent 2T2R use case. A combination of Band 66 and Band 25 can be accomodated using
LO1 (1812.5 MHz) for the Band 66 and Band 25 uplink and LO2 (2042.5 MHz) for the Band 66 and Band 25 downlink.
GPIO CONFIGURATION
The transceiver features 19 digital general purpose input/output (GPIO) pins that can be used for a variety of functions. The transceiver
also features eight analog GPIO (GPIO_ANA_x) pins. The GPIO pins and GPIO_ANA pins provide a real-time interface either for the
baseband processor to control the transceiver or for the transceiver to send information to the baseband processor. An example of baseband
processor control uses rising edges sent by the baseband processor over user assigned GPIO pins to increase or decrease the transmitter
attenuation. An example of the transceiver sending information to the baseband processor is the ability to send overload detection
information from peak detectors in the receiver datapath to advise that the input signal level is too high.
The GPIO_ANA pins serve as the output pins for eight auxiliary digital to analog converter (AUXDAC_x) signals. The AUXDAC can be
used to provide a control voltage to peripheral devices. The AUXDAC is not a precision converter device and is recommended to be used
in applications where high accuracy is not needed. It is recommended to use the AUXDAC in feedback systems rather than in open-loop
control systems.
The digital GPIO supply is the VIF supply voltage. The GPIO_ANA supply is the 1.8V analog supply connected through the VANAx_1p8
pins. IBIS models have been created to assist in the simulation of these interfaces.
DIGITAL GPIO OPERATION
Each digital GPIO pin can be set to either input or output mode. In this section, input and output mode are oriented with respect to the
transceiver device. Input mode allows the baseband processor to drive pins on the transceiver to execute specific tasks. Output mode
allows the device to output various signals.
The digital GPIO pin I/O direction can be set with the following API commands.
adi_adrv9025_GpioInputDirSet(…)
adi_adrv9025_GpioInputDirSet(adi_adrv9025_Device_t* device, uint32_t gpioInputMask)
Description
This command configures pins for input direction.
Parameters
ON-CHIP OFF-CHIP
50
GP_INT STATUS REGISTER: D49:D0
gpIntStatus[d49:d0] GP_INT2
gpInt1Mask[d49:d0]
x50 x50
INTERRUPT SOURCES
D49:D0 GP_INT1
gpInt0Mask[d49:d0]
x50 x50
22770-119
Figure 120. Block Diagram of GPINT Outputs
The GPINT1 and GPINT2 pins are a bitwise OR of all unmasked GPINT sources. The status register represents all possible interrupt sources that
can assert on the device. Any time the GPINTx pin asserts, the GPINT status indicates what interrupt source(s) asserted the GPINTx pin.
Note that the GPINT status and the GPINTx pins have different behaviors. The GPINTx pins are real-time indicators of error status. For
example, if a power amplifier protection error occurs when power amplifier protection is configured in the autoclear mode, the GPINTx pin
deasserts when the power returns to normal. The GPINT status bit fields are sticky and remain asserted until the user clears the register. If
the power amplifier protection error occurs and disappears in autoclear mode, the GPINT status still indicates that a power amplifier
protection error occurred until the user manually clears the GPINT status.
A description of the interrupt sources and their bit positions within the 50-bit general purpose interrupt mask is provided in Table 207.
Table 207. GP_INTERRUPT Bitmask Description
Bit Position Description Subsystem API Recovery Action
D49 Deframer IRQ 11: Deframer1 JESD204C CRC error ADI_ADRV9025_ACT_ERR_BBIC_LOG_ERROR
Deframer
D48 Deframer IRQ 10: Deframer1 JESD204C loss of sync
D47 LO1 PLL unlock ADI_COMMON_ACT_ERR_RESET_MODULE
D46 LO2 PLL unlock ADI_COMMON_ACT_ERR_RESET_MODULE
D45 Auxiliary PLL unlock ADI_COMMON_ACT_ERR_RESET_MODULE
D44 Clock PLL unlock ADI_COMMON_ACT_ERROR_RESET_FULL
D43 LO1 PLL charge pump overrange PLL
D42 LO2 PLL charge pump overrange
ADI_ADRV9025_ACT_ERR_BBIC_LOG_ERROR
D41 Auxiliary PLL charge pump overrange
D40 Clock PLL charge pump overrange
D39 SERDES PLL unlock ADI_COMMON_ACT_ERROR_RESET_FULL
D38 Deframer IRQ 9: Deframer1 JESD204B quad byte deframer
(QBD) IRQ
D37 Deframer IRQ 8: Deframer1 SYSREF out of phase
D36 Deframer IRQ 7: Deframer1 elastic buffer error Deframer ADI_ADRV9025_ACT_ERR_BBIC_LOG_ERROR
D35 Deframer IRQ 6: Deframer1 lane FIFO pointer error
D34 Deframer IRQ 5: Deframer0 JESD204C CRC error
D33 Deframer IRQ 4: Deframer0 JESD204C loss of sync
Rev. 0 | Page 197 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Bit Position Description Subsystem API Recovery Action
D32 Deframer IRQ 3: Deframer0 JESD204B QBD IRQ
D31 Deframer IRQ 2: Deframer0 SYSREF out of phase
D30 Deframer IRQ 1: Deframer0 elastic buffer error
D29 Deframer IRQ 0: Deframer0 lane FIFO pointer error
D28 Framer IRQ 8: Framer2 transport not sending data
D27 Framer IRQ 7: Framer2 SYSREF out of phase
D26 Framer IRQ 6: Framer2 lane FIFO pointer error
D25 Framer IRQ 5: Framer1 transport layer not sending data
D24 Framer IRQ 4: Framer1 SYSREF out of phase Framer
D23 Framer IRQ 3: Framer1 lane FIFO pointer error
D22 Framer IRQ 2: Framer0 Transport layer not sending data
D21 Framer IRQ 1: Framer0 SYSREF out of phase
D20 Framer IRQ 0: Framer0 lane FIFO pointer error
D19 Power Amplifier Protection Error Tx4 (threshold exceeded)
D18 Power Amplifier Protection Error Tx3 (threshold exceeded)
Transmitter ADI_ADRV9025_ACT_ERR_BBIC_LOG_ERROR
D17 Power Amplifier Protection Error Tx2 (threshold exceeded)
D16 Power Amplifier Protection Error Tx1 (threshold exceeded)
D15 ARM has forced interrupt ADI_COMMON_ACT_ERROR_RESET_FULL
D14 ARM watchdog timer timeout ADI_COMMON_ACT_ERROR_RESET_FULL
ARM
D13 Slew rate limiter IRQ ADI_ADRV9025_ACT_ERR_BBIC_LOG_ERROR
D12 ARM system error ADI_ADRV9025_ACT_ERR_BBIC_LOG_ERROR
D11 ORx3 or ORx4 stream processor error
D10 ORx1 or ORx2 stream processor error
D9 Tx4 stream processor error
D8 Tx3 stream processor error
D7 Tx2 stream processor error
Stream
D6 Tx1 stream processor error ADI_COMMON_ACT_ERROR_RESET_FULL
processor
D5 Rx4 stream processor error
D4 Rx3 stream processor error
D3 Rx2 stream processor error
D2 Rx1 stream processor error
D1 Core stream processor error r
D0 Memory ECC error ARM ADI_COMMON_ACT_ERROR_RESET_FULL
Table 207 can be used to form bitmasks for the GPINT2 and GPINT1 pins. Note that in the API, GPINT1 is linked to the GPINT2 pin
and GPINT0 is linked to the GPINT1 pin. Further descriptions of these event sources is provided in the following sections.
PLL GPINT SOURCES
The PLL GPINT sources include two types of interrupt for the PLLs, PLL unlock events and PLL charge pump overrange events. Note
that if initial calibrations are run, it is expected that some PLLs are used during this time and a PLL unlock event can appear in the
GPINT status register. PLL unlocks during successful runs of initialization calibrations are expected and are not a concern.
PLL Unlock Event Bits
The PLL unlock event bits, if asserted, indicate that a PLL has unlocked and is not operating properly. The PLLs are designed to maintain
lock over the full temperature range and operation of the device. In extremely rare cases, the PLL can unlock because of external or internal
factors. There are two recovery procedures for PLL unlocks depending on the PLL that unlocks. These procedures include the following:
• If the clock PLL unlocks, reset the device. The device is not expected to recover from the loss of the primary clock within the transceiver.
• If the LO2, LO1, or auxiliary PLL unlocks, call adi_adrv9025_PllFrequencySet(…) to see if the PLL relocks.
• If the unlocked PLL relocks, follow the procedures to rerun certain initialization calibrations as this is effectively a PLL
frequency change procedure. If the user has configured attenuation ramp down/up events to occur based on the PLL lock status,
the attenuation ramp down/up event must be cleared prior to running initial calibrations.
• If the unlocked PLL fails to achieve lock, reset the device.
The real time lock status of the PLL can be verified with the command adi_adrv9025_PllStatusGet(…).
1.0
0.8
0.6
0.4
0.2
22770-120
0 500 1000 1500 2000 2500 3000 3500 4000
AuxDAC CODE
Figure 121. AUXDAC Channel Comparison over Full Range Code Sweep
AUXDAC Configuration
The AUXDAC is configured and controlled using the commands listed in this section.
adi_adrv9025_AuxDacCfgSet(…)
adi_adrv9025_AuxDacCfgSet(adi_adrv9025_Device_t *device, adi_adrv9025_AuxDacCfg_t
auxDacConfig[],uint8_t numberOfCfg)
Description
This command configures the AUXDAC settings. This command must be called when device initialization is complete to use the AUXDACs.
Clears the GPINT status register.
Parameters
The following (ideal) equation describes the output code in relation to an input voltage, VIN. In practice, the AUXADC has slope and dc
offset variability.
DOUT = 4096(VIN – 0.5 V) + 2048
Where DOUT is the output of the AUXADC for the given input voltage VIN.
AUXADC Configuration
The following commands are used to configure and read the AUXADCs.
adi_adrv9025_AuxAdcCfgSet(…)
adi_adrv9025_AuxAdcCfgSet(adi_adrv9025_Device_t *device, adi_adrv9025_AuxAdcCfg_t *auxAdcConfig,
uint8_t arraySize)
Description
This command configures the AUXADC setup.
SPI2 DESCRIPTION
The transceiver uses the primary SPI port for nearly all SPI transactions needed during operation. The device also features a secondary
SPI port, SPI2, that can be used to control transmit, receive, and observation receive attenuation settings.
SPI2 CONFIGURATION
The SPI2 port can be enabled by calling the following API and setting spi2Enable to 1:
adi_adrv9025_Spi2CfgSet(adi_adrv9025_Device_t *device, uint8_t spi2Enable)
When this feature is enabled, the GPIO pins listed in Table 230 are configured automatically to the correct input/output port direction to
support the SPI Interface.
GPIO
2:1 MUX
tx_atten_upd_core_spi2_en
22770-122
There are two update modes selectable for updating the attenuation applied to the transmitters, selected by Bit D0 in the SPI2 Register 0x2A.
When this bit is 0, it updates to the attenuation state registers or the multiplexer select GPIO take immediate effect. When this bit is 1, a
retiming block is used to block updates to the transmit attenuation until a latch bit (one per transmitter channel) is set. The latch bits are
in the SPI2 Register 0x2A, Bits[D4:D1]. Note that these bits are not self-clearing and must be written to zero before being used to latch
new attenuation values.
0.5 2.0
m1 m4
FREQUENCY = 100.0MHz FREQUENCY = 3.500GHz
S(1,1) = 0.005/156.393 S(1,1) = 0.221/171.325
IMPEDANCE = 49.550 – j0.196 IMPEDANCE = Z0 × (0.640 + j0.045)
M6
m2 0.2 5.0 m5
FREQUENCY = 1.000GHz FREQUENCY = 4.500GHz
S(1,1) = 0.060/–127.659 M5 S(1,1) = 0.290/146.279
IMPEDANCE = Z0 × (0.926 – j0.088) IMPEDANCE = Z0 × (0.585 + j0.205)
m3 M4 M1 m6
FREQUENCY = 2.000GHz FREQUENCY = 6.000GHz
S(1,1)
–0.2 –5.0
–0.5 –2.0
–1.0
22770-123
0.5 2.0
m1 m4
FREQUENCY = 100.0MHz FREQUENCY = 3.500GHz
S(1,1) = 0.006/170.987 S(1,1) = 0.217/–178.721
IMPEDANCE = 49.416 + j0.092 IMPEDANCE = Z0 × (0.643 – j0.007)
m2 0.2 M6 5.0 m5
FREQUENCY = 1.000GHz FREQUENCY = 4.500GHz
S(1,1) = 0.060/–124.931 S(1,1) = 0.285/158.552
IMPEDANCE = Z0 × (0.929 – j0.091) IMPEDANCE = Z0 × (0.570 + j0.129)
m3 M5 m6
FREQUENCY = 2.000GHz M4 M1 FREQUENCY = 6.000GHz
S(1,1)
S(1,1) = 0.121/–144.639 0 M3 S(1,1) = 0.387/125.242
IMPEDANCE = Z0 × (0.813 – j0.115) M2 IMPEDANCE = Z0 × (0.533 + j0.396)
–0.2 –5.0
–0.5 –2.0
–1.0
22770-124
FREQUENCY (0.000Hz TO 6.000Hz)
1.0
0.5 2.0
m1 m4
FREQUENCY = 100.0MHz FREQUENCY = 3.500GHz
RC_SEDZ_Rref2 = 0.098/–58.372 RC_SEDZ_Rref2 = 0.118/167.935
IMPEDANCE = Z0 × (1.092 – j0.185) IMPEDANCE = Z0 × (0.792 + j0.040)
m2 0.2 5.0 m5
FREQUENCY = 1.000GHz FREQUENCY = 4.500GHz
RC_SEDZ_Rref2 = 0.083/–109.461 M6 RC_SEDZ_Rref2 = 0.139/130.357
IMPEDANCE = Z0 × (0.935 – j0.147)
RC_SEDZ_Rref2
–0.2 –5.0
–0.5 –2.0
–1.0
22770-125
0.5 2.0
m1 m4
FREQUENCY = 100.0MHz FREQUENCY = 3.500GHz
RC_SEDZ_Rref2 = 0.098/–58.288 RC_SEDZ_Rref2 = 0.115/166.645
IMPEDANCE = Z0 × (1.092 – j0.183) IMPEDANCE = Z0 × (0.797 + j0.043)
m2 0.2 5.0 m5
FREQUENCY = 1.000GHz FREQUENCY = 4.500GHz
RC_SEDZ_Rref2 = 0.082/–109.796 M6 RC_SEDZ_Rref2 = 0.136/128.770
IMPEDANCE = Z0 × (0.935 – j0.145) M5 IMPEDANCE = Z0 × (0.826 + j0.178)
RC_SEDZ_Rref
m3 m6
FREQUENCY = 2.000GHz M4 FREQUENCY = 6.000GHz
RC_SEDZ_Rref2 = 0.082/–143.472 0 M1 RC_SEDZ_Rref2 = 0.177/68.966
IMPEDANCE = Z0 × (0.873 – j0.085) M3 IMPEDANCE = Z0 × (1.071 + j0.365)
M2
–0.2 –5.0
–0.5 –2.0
–1.0
22770-126
FREQUENCY (100.0MHz TO 6.000GHz)
0.5 2.0
m1 m4
FREQUENCY = 100.0MHz FREQUENCY = 3.500GHz
RC_SEDZ_Rref2 = 0.124/–49.378 RC_SEDZ_Rref2 = 0.207/–133.176
IMPEDANCE = Z0 × (1.153 – j0.221) IMPEDANCE = Z0 × (0.722 + j0.227)
m2 0.2 5.0 m5
FREQUENCY = 1.000GHz FREQUENCY = 4.500GHz
RC_SEDZ_Rref2 = 0.109/–85.458 RC_SEDZ_Rref2 = 0.242/–149.161
IMPEDANCE = Z0 × (0.993 – j0.218) IMPEDANCE = Z0 × (0.638 – j0.169)
RC_SEDZ_Rref
m3 m6
FREQUENCY = 2.000GHz M6 FREQUENCY = 6.000GHz
RC_SEDZ_Rref2 = 0.140/–107.096 0 M1 RC_SEDZ_Rref2 = 0.277/–172.444
IMPEDANCE = Z0 × (0.890 – j0.243) M5M4 M2 IMPEDANCE = Z0 × (0.568 – j0.045)
M3
–0.2 –5.0
–0.5 –2.0
–1.0
22770-127
0.5 2.0
m1 m4
FREQUENCY = 100.0MHz FREQUENCY = 3.500GHz
RC_SEDZ_Rref2 = 0.127/–51.004 RC_SEDZ_Rref2 = 0.214/–138.082
IMPEDANCE = Z0 × (1.149 – j0.231) IMPEDANCE = Z0 × (0.700 – j0.209)
m2 0.2 5.0 m5
FREQUENCY = 1.000GHz FREQUENCY = 4.500GHz
RC_SEDZ_Rref2 = 0.113/–85.635 RC_SEDZ_Rref2 = 0.248/–156.131
IMPEDANCE = Z0 × (0.992 – j0.226) IMPEDANCE = Z0 × (0.619 – j0.132)
RC_SEDZ_Rref
m3 M6 m6
FREQUENCY = 2.000GHz FREQUENCY = 6.000GHz
RC_SEDZ_Rref2 = 0.146/–108.917 0 M5 M2 M1 RC_SEDZ_Rref2 = 0.276/177.077
IMPEDANCE = Z0 × (0.877 – j0.248) M4 IMPEDANCE = Z0 × (0.567 + j0.017)
M3
–0.2 –5.0
–0.5 –2.0
–1.0
22770-128
FREQUENCY (100.0MHz TO 6.000GHz)
L104
S + TERM
BALUN C120 L103 TERM2 DAC
TERM GND – NUM = 2
TERM1 C122 C121 Z = RX_SEDZ Ω
NUM = 1 Balun 3 Port
CMP1 C119 Data Access Component
Z = RREF Ω DAC1
File =
Type = Touchstone
InterpMode = Linear
InterpDom = Rectangular
ExtrapMode = Interpolation Mode
iVar1 = “freq”
iVal1 = freq
VAR
RX_RC
RX_RC = file(DAC1,”S[1,1]”)
VAR
22770-129
VAR1
RX_SEDZ = 50 × (RX_RC+1)/(1–RX_RC)
Figure 130. Simulation Setup in ADS with SEDZ s1p Files and DAC Component
CB
LC LC
+ +
RDCR ΔV ΔV RDCR
Tx1_OUT+/
Tx2_OUT+
IBIAS = ~100mA
Tx1 OR Tx2 VBIAS = 1.8V – ΔV
OUTPUT
STAGE VBIAS = 1.8V – ΔV
22770-130
Tx1_OUT–/
Tx2_OUT–
Figure 131. RF DC Bias Configurations Depicting Parasitic Losses Because of Wire Wound Chokes
Tx1_OUT+/
Tx2_OUT+ IBIAS – ΔV +
1.8V RDCR
Tx1 OR Tx2 VBIAS = 1.8V – ΔV
OUTPUT
STAGE VBIAS = 1.8V – ΔV
CB RDCR
22770-131
Tx1_OUT–/ IBIAS – ΔV +
Tx2_OUT–
Figure 132. RF DC Bias Configurations Depicting Parasitic Losses Because of Center Tapped Transformers
Figure 133 through Figure 136 identify four basic differential transmitter output configurations. Impedance matching networks (balun
single-ended port) are most likely required to achieve optimum device performance. The transmitter outputs must also be ac-coupled in
most applications because of the dc bias voltage applied to the differential output lines of the transmitter.
The recommended RF transmitter interface featuring a center tapped balun is shown in Figure 133. This configuration offers the lowest
component count of the options presented.
Descriptions of the transmit port interface schemes are as follows:
• The center tapped transformer passes the bias voltage directly to the transmitter outputs.
• The RF chokes are used to bias the differential transmitter output lines. Additional coupling capacitors (CC) are added in the creation
of a transmission line balun.
• The RF chokes are used to bias the differential transmitter output lines and connect into a transformer.
• The RF chokes are used to bias the differential output lines that are ac-coupled into the input of a driver amplifier.
Tx1_OUTP/
Tx2_OUTP
1.8V
Tx1 OR Tx2
OUTPUT
STAGE Tx1_OUTN/
Tx2_OUTN CB
22770-132
CB
LC LC
Tx1_OUTP/ CC
Tx2_OUTP 1.8V
Tx1 OR Tx2
OUTPUT
STAGE Tx1_OUTN/
Tx2_OUTN 1.8V
22770-133
CC
CB
LC LC
Tx1_OUTP/
Tx2_OUTP 1.8V
Tx1 OR Tx2
OUTPUT
STAGE Tx1_OUTN/
Tx2_OUTN 1.8V
22770-134
Figure 135. RF Transmitter Interface Configuration C
1.8V
CB
LC LC
Tx1_OUTP/ CC
Tx2_OUTP 1.8V
CC
If a chosen transmit balun requires a set of external dc bias choke inductors, careful planning is required. It is necessary to find the
optimum compromise between the choke physical size, choke dc resistance (RDCR) and the balun low frequency insertion loss. In
commercially available dc bias chokes, the resistance decreases as the size increases. However, as the choke inductance increases, the
resistance increases. Therefore, it is not recommended to use physically small chokes with high inductance as these chokes exhibit the
greatest resistance. Table 235 lists some sample choke inductor resistances for different package sizes to help determine how much dc loss
to expect. For example, the voltage drop of a 500 nH, 0603 choke inductor at 100 mA is roughly 45 mV.
Table 235. Sample Wire Wound DC Bias Choke Resistance vs. Size
Inductance (nH) 0603 Package Size Resistance (Ω) 01206 Package Size Resistance (Ω)
100 0.10 0.08
200 0.15 0.10
300 0.16 0.12
400 0.28 0.14
500 0.45 0.15
600 0.52 0.20
GENERAL RECEIVER PATH INTERFACE
The device has two types of receivers. These receivers include four main receive pathways (Rx1, Rx2, Rx3, and Rx4) and four observation
receivers (ORx1, ORx2, ORx3, and ORx4). The receive and observation receive channels are designed for differential use only.
The receivers support a wide range of operation frequencies. In the case of the receive and observation receive channels, the differential
signals interface to an integrated mixer. The mixer input pins have a dc bias of approximately 0.7 V present on them and may need to be
ac-coupled depending on the common-mode voltage level of the external circuit.
Rev. 0 | Page 217 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Important considerations for the receiver port interface include the following:
• What device will be interfaced to the transceiver? Examples are filter, balun, transmit/receive switch, external LNA, and external
power amplifier. Determine if this device represents a short to ground at dc.
• Receive and observation receive maximum safe input power is 18 dBm (peak).
• Receive and observation receive optimum dc bias voltage is 0.7 V bias to ground.
• Board Design characteristics, including reference planes, transmission lines, and impedance matching must be carefully planned.
Figure 137 shows the possible differential receiver port interface circuits. The options in Figure 137 and Figure 138 are valid for all
receiver inputs operating in differential mode, but only the Rx1 signal names are indicated. Impedance matching can be necessary to
obtain the performance levels in the ADRV9029 data sheet.
Rx–
RECEIVER
INPUT STAGE
(MIXER OR LNA)
Rx+
22770-136
Figure 137. Differential Receiver Input Interface Circuits
CC
Rx–
RECEIVER
INPUT STAGE
(MIXER OR LNA)
CC Rx+
22770-137
Figure 138. Differential Receiver Input Interface Circuits
Given wide RF bandwidth applications, SMD balun devices function well. Decent loss and differential balance are available in a relatively
small (0603 or 0805) package.
IMPEDANCE MATCHING NETWORK EXAMPLES
Impedance matching networks are required to achieve performance levels noted in the ADRV9029 data sheet. This section provides
example topologies and components used on the CE board.
Models of the devices, board, balun, and SMD components are required to build an accurate system level simulation. The board layout
model can be obtained from an EM simulator (for example, Momentum). The balun and SMD component models can typically be
obtained from the device vendors. Figure 139 shows a typical matching circuit topology used to connect single-ended signal sources to
the transceiver’s differential inputs.
RX AND ORX TOPOLOGY
BAL_OUT1 3 RX+
1 1
RX IN UNBAL_IN 4
BAL_OUT2
2 3 4 5 NC_6 GND GND_DC_FEED_RFGND
6 5 2
RX–
22770-138
The impedance matching networks provided in this section have not been evaluated in terms of mean time to failure (MTTF) in high
volume production. Consult with component vendors for long-term reliability concerns. Additionally, consult with balun vendors to
determine appropriate conditions for dc biasing.
The schematics in Figure 140, Figure 141, and Figure 142 show two or three circuit elements in parallel marked do not include (DNI),
which was done on the evaluation board schematic to accommodate different component configurations for different frequency ranges.
Only one set of SMD component pads are placed on the board to provide a physical location that can be used for the selected parallel circuit
element. For example, the R302, L302, and C302 components only have one set of SMD pads for one SMD component. The schematic shows that
in a generic port impedance matching network the series elements can be a resistor, inductor, or capacitor, and the shunt elements can be either
an inductor or a capacitor. Only one component of each parallel combination is placed in a practical application. Note that in some matching
circuits, some shunt elements may not be required. All components for a given physical location remain DNI in those particular
applications.
Rev. 0 | Page 218 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
1.8V
OPTIONAL
RF CHOKE FEED
Tx+
Tx OUTPUT
BALUN
Tx–
1.8V
22770-139
OPTIONAL
RF CHOKE FEED
Rx+
Rx INPUT
BALUN
Rx–
22770-140
Figure 141. Receiver Generic Matching Network Topology from CE Board
ORx+
ORx INPUT
BALUN
ORx–
22770-141
Figure 142. Observation Receiver Generic Matching Network Topology from CE Board
SUPPLY CAPACITY
During operation, supply currents can vary significantly, especially if operating in TDD mode. The supply must have adequate capacity to
provide the necessary current (as indicated in the device data sheet) so that performance criteria over all process and temperature
variations are maintained. Analog Devices recommends adding 900 mA to the digital supply maximum and 30% margin to all analog
supply maximums to ensure proper operation under all conditions.
POWER SUPPLY SEQUENCE
The transceiver requires a specific power-up sequence to avoid undesirable power-up currents. In the optimal sequence, the VDIG_1P0
supply must come up first. If the VANA_1P0 supplies are connected to the same source as the VDIG_1P0 supply, these inputs can power
up at the same time as the VDIG_1P0 supply. When the VDIG_1P0 source is enabled, the other supplies can be enabled in any order or
all together. Note that the VIF supply can be enabled at any time without affecting the other circuits in the transceiver. In addition to this
sequence, it is also recommended to toggle the RESET signal after power has stabilized prior to initializing the device.
The power-down sequence recommendation is similar to power-up. Disable all analog supplies in any order (or all together) before
VDIG_1P0 is disabled. If such a sequence is not possible, disable the sources of all supplies simultaneously to ensure that there is no back
feeding circuits that have been powered down.
POWER SUPPLY DOMAIN CONNECTIONS
Table 242 lists the pin name, the pin number, the recommended routing technique for that pin from the main supply rail (if applicable),
and a brief description of the block the pin powers in the chip.
The information listed in Table 242 shows which power supply pins must be powered by designated traces and which pins are tied
together and share a common trace. In some cases, a separate trace from a common power plane is used to power up two to three 1.3 V
power supply pins, wheras in other cases, there are power supply pins that are powered from a separate trace.
The recommendation for VDDA1P3_DES is to keep it separate from the VDDA1P3_SER supplies using a separate trace. This input can
be powered from the other 1.3 V analog supply. Noise from this supply can affect the JESD link performance directly.
VDES_1P0
10µF + 1µF + 100nF
VTT_DES
VAUXVCO_1P0
VCLKVCO_1P0
VRFVCO1_1P0
VRFVCO2_1P0
VCONV1_1P0
VCONV2_1P0
NOTES
1. BEAD 1 IS HIGH CURRENT. 4.7µF INTERNAL LDO
2. BEAD 2 IS LOW CURRENT, HIGH REJECTION.
22770-142
OUTPUT CAPACITORS
3. 0Ω CAN BE REPLACED WITH BEAD 1 IF NOISE PROBLEMS OCCUR.
4. DECOUPLING CAPACITOR RECOMMENDATIONS ARE SHOWN FOR EACH INPUT PIN.
CURRENT CONSUMPTION
The current consumption in each block can vary depending on the device configuration for the profile in use. Clock frequencies, data
rates, calibrations, and the number of channels in operation all influence the amount of current required for transceiver operation. The
following section gives a sample of a typical use case profile and the resulting current consumption in different modes. This example is a
22770-143
3.35 6.16 PREREQ I-SPEED 1035(77)/1035(77) 18.25G × 24.25
16 2.15 .375 FOIL .375oz
22770-144
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
22770-145
Figure 146. RF IO, DEVCLK, EXT LO, and SERDES Routing Guidelines
Transmit, receive, and observation receive routing (also referred to as trace routing), physical design (trace width/spacing), matching
network design, and balun placement significantly impact RF transceiver performance. Make every effort to optimize path design,
component selection, and placement to avoid performance degradation. The RF Routing Guidelines section describes proper matching
circuit placement and routing in greater detail. Additional related information can be found in the RF Port Interface Overview section.
To achieve the desired levels of isolation between the RF signal paths, use the considerations and techniques described in the Isolation
Techniques section in designs.
For RF transmit outputs, install a 10 µF capacitor near the transmit balun(s) VANAx_1P8 dc feed(s). This capacitor acts as a reservoir for
the transmit supply current. The Transmit Bias Supply Guidelines section discusses the transmit dc supply design in detail.
22770-146
Figure 147. DEVCLK and SYSREF Termination
Route SERDES high speed digital interface traces at the beginning of the PCB design process with the same priority as the RF signals. The
JESD204B/JESD204C Routing Recommendations section outlines launch and routing guidelines for these SERDES signals. Provide
adequate isolation between interface differential pairs.
Signals with Second Routing Priority
Power supply routing and quality have a direct impact on overall system performance. The Power Management Layout section provides
recommendations for how to best route the power supplies to minimize loss as well as interference between RF channels. Follow the
recommendations provided in the Power Management Layout Design section to ensure optimal RF and isolation performance.
Signals with Lowest Routing Priority
Route the remaining low frequency digital inputs and outputs, the auxiliary ADCs and DACs, and the SPI signals. It is important to route
all digital signals bounded between Row E and Row R and Column 6 and Column 15 down and away from sensitive analog signals on
PCB signal layers with a solid ground layer shielding other sensitive signals from the potentially noisy digital signals (refer to Figure 146
for the ball diagram). The CE board uses Layer 9 as a solid ground flood on the entire layer to act as a shield and delineation between
analog and digital domains. All RF, analog power, and high speed signaling is routed on Layer 1 through Layer 8 and Layer 16, while
digital power and signaling is routed on Layer 10 through Layer 15. Auxiliary ADC and DAC signal traces are routed on layers separated
from RF input/output and high speed digital, but are still on the analog side of the PCB.
RF AND JESD TRANSMISSION LINE LAYOUT
RF Routing Guidelines
The evaluation boards use both surface coplanar waveguide and surface edge coupled coplanar waveguide transmission lines for transmit,
receive, and observation receive RF signals. In general, Analog Devices does not recommend using vias to route RF traces unless a direct
route on the same layer as the device is not possible. Keep balanced lines for differential mode signaling used between the transceiver and
the RF balun as short as possible. Keep the length of the single-ended transmission lines for RF signals as short as possible. Keeping signal
paths as short as possible reduces susceptibility to undesired signal coupling and reduces the effects of parasitic capacitance, inductance,
and loss on the transfer function of the transmission line and impedance matching network system. The routing of these signal paths is
the most critical factor in optimizing performance and, therefore, must be routed prior to any other signals and maintain the highest
priority in the PCB layout process.
22770-147
All RF signals must have a solid ground reference under each path to maintain the desired impedance. Ensure that none of the critical
traces run over a discontinuity in the ground reference.
Transmit Bias Supply Guidelines
Each transmitter requires approximately 125 mA supplied through an external connection. In the CE board, bias voltages are supplied at
the dc feed of a center tapped balun in the RF signal path, as shown in Figure 149.
22770-148
Figure 149. 1.8V Transmit Bias Routing at Balun
To reduce switching transients because of attenuation setting changes, power the balun dc feed directly from the 1.8 V supply plane.
Design the geometry of the plane to isolate each transmitter from the others. Figure 150 shows the 1.8 V supply distribution on the CE
board. The primary 1.8 V distribution is through a plane that transitions to two wide fingers on Layer 5, which run up both sides of the
device. The finger width is designed to minimize voltage drop at the tap points. Each transmitter is biased with a finger on Layer 3 that
taps the main 1.8 V supply. The fingers are designed and routed to present a low impedance at the connection point to the transmit input.
22770-149
The evaluation board couples the supply into the transmitter via a center tapped balun, but is also provisioned for an external choke feed
inductor with an ac decoupling capacitor. This topology helps improve transmitter to transmitter isolation.
When a balun is selected that does not have a dc feed capability, RF chokes must be used to supply the current to the transmitters. Chokes
are connected from the 1.8 V supply to each transmit output. Note that in this scenario, the transmit balun must be ac-coupled. The RF
chokes must also be decoupled by capacitors from the power feed to ground. Place the ground connections to these capacitors as close as
possible to the transmit output pins. Take care to match both chokes and their layout to avoid peaking because of current transients.
22770-150
22770-151
Figure 152. JESD Signal Launch on Layer 4
ISOLATION TECHNIQUES
Given the density of sensitive and critical signals, significant isolation challenges are faced when designing a PCB for the transceiver. The
isolation requirements listed in Table 247 were followed to accurately evaluate transceiver performance. Analytically determining
aggressor to victim isolation in a system is complex and involves considering vector combinations of aggressor signals and coupling
mechanisms.
Isolation Goals
Table 247 lists the isolation targets for each RF channel to channel combination type. To meet these goals with significant margin,
isolation structures were designed into the CE board.
22770-152
Figure 153. RF IO Isolation Structures
Additional shielding is provided using connecting VSSA balls under the device to form a shield around the RF IO ball pairs. This ground
provides a termination for stray electric fields. Figure 154 shows how this layout is done for Tx1. The same layout approach is used for
each set of sensitive RF IO ports. Ground vias are used along the single-ended RF IO traces. Optimal via spacing is 1/10 of a wavelength
for the highest signal frequency, but that spacing can vary somewhat because of practical layout considerations. The wavelength is
dependent on the dielectric material relative permittivity (εr) and can be calculated using the following equation:
300
wavelength (m) =
frequency ( MHz ) × ε r
22770-153
22770-154
Figure 155. SERDES Lane Via Fencing
22770-155
22770-156
Figure 157. 1.8 V Supply Routing Using Star Connections
22770-157
22770-158
22770-159
Figure 160. Digital Supply Connection to Three VDIG Input Pins of the Device
22770-160
22770-161
Figure 162. Power Supply Routing Example with Ferrite Bead at the Input (VANA1_1P3)
22770-162
Figure 163. Power Connection to Supply Ball with Bypass Capacitor Between Vias
DIGITAL DIGITAL
ROUTING ROUTING
REGION REGION
22770-163
DIGITAL
REQUIREMENTS
The hardware and software require the following:
• The ADS9 demonstration system kit.
• The transceiver demonstration system kit (six options available).
• The operating system on the controlling PC must be Windows 7 (×86 and ×64) or Windows 10 (×86 and ×64).
• The PC must have a free Ethernet port with the following constraints:
• If the Ethernet port is occupied by another LAN (local area network) connection, a USB to Ethernet adapter can be used.
• The PC must be able to access over this dedicated Ethernet connection via the following ports:
• Port 22: SSH protocol.
• Port 55556: access to the evaluation software on the ADS9 platform.
• TES. Contact a local Analog Devices representative to obtain access to this software.
• The user must have administrative privileges. To run software automatic updates, the PC must have access to the internet. If
internet access is restricted, a manual software update can be performed.
S4: POWER ON
DS13: 12V_PIN
J6: MicroSD
CARD SLOT
(UNDER ETHERNET)
J1: ETHERNET
CONNECTION
DS1: FPGA
ONLINE
SW1: SHUTDOWN
22770-164
Figure 165. Analog Devices ADS9 Motherboard Configured to Work with Transceiver Evaluation Boards
SIGNAL SYNTHESIZER
REFERENCE CLOCK SOURCE
ETHERNET
CONNECTION
SIGNAL ANALYZER
Rx2 Rx1
Tx1
Tx2
Tx3
MOTHERBOARD AC/DC
POWER SUPPLY
12V/5A
DAUGHTERCARD
22770-165
Rx3 Rx4 Tx4 POWER SUPPLY
12V/1.5A
Figure 166. CE Board and ADS9 Motherboard with Connections Required for Transmit Testing
To set up the evaluation board for testing, take the following steps:
1. Connect the transceiver evaluation board and the ADS9 evaluation platform together as shown in Figure 166. Use the HPC FMC
connector (P1001/P2). Ensure that the connectors are properly aligned.
2. Insert the SD card that came with the evaluation kit into the ADS9 microSD card slot (J6).
3. On the transceiver evaluation card, provide a reference clock source (122.88 MHz is the default, or frequency match the setting
selected on the AD9528 configuration tab), at a 7 dBm power level to the J613 connector. This signal drives the reference clock into
the AD9528 clock generation chip on the board. The REFA/REFA_N pins of the AD9528 generate the DEV_CLK for the device and
REF_CLK for the FPGA on the ADS9 platform.
4. Connect a 12 V, 1.5 A power supply to the ADS9 evaluation platform at the P1 header.
5. Connect the ADS9 evaluation platform to the PC with an Ethernet cable (connect to P3). There is no driver installation required.
If the Ethernet port is already occupied by another connection, use an USB to Ethernet adapter.
On an Ethernet connection dedicated to the ADS9 platform, the user must manually set the following:
• IPv4 address: 192.168.1.2
• IPv4 subnet mask: 255.255.255.0
Refer to Figure 167 for more details. Ensure that the following ports are not blocked by firewall software on the PC:
• Port 22: SSH protocol
• Port 55556: access to the evaluation software on the ADS9 platform
Note that the ADS9 IP address is set by default to 192.168.1.10.
22770-166
Figure 167. IP Settings for Ethernet Port Dedicated for ADS9 Platform
HARDWARE OPERATION
The following steps should be used to setup the evaluation platform for use with the Transceiver Evaluation Software.
1. Switch the ADS9 motherboard power switch (S4) to the on position to turn on the evaluation system. If hardware is connected
correctly, the green LED (DS13) on the ADS9 motherboard illuminates.
2. The ADS9 motherboard uses a Linux operating system. Wait approximately 3 minutes before the system is ready for operation and
can accept commands from PC software. Boot status can be observed on the ADS9 LED (D3, on the MicroZED daughtercard). This
LED illuminates red for approximately 3 minutes after power-on. When the LED goes off, this indicates that the board is booted
properly. When D3 transitions from red to off, the system is ready for normal operation and awaits connection with the PC over
Ethernet (which must be established using TES).
3. Connect the reference clock signal (122.88 MHz continuous wave tone, 7 dBm maximum) to J613 on the underside of the CE board.
4. Before applying power to the CE board, ensure that each of the four transmit output ports (J501 to J504) are properly terminated.
5. Connect power from the 12 V wall adapter to the CE board. When power is applied, DS801 and DS802 illuminate on the CE board.
6. For transmitter testing, connect a spectrum analyzer to any transmit output on the evaluation board. Use a shielded RG-58, 50 Ω coaxial
cable (1 m or shorter) to connect the spectrum analyzer. Terminate all transmit paths, either into spectrum analyzers or into 50 Ω if unused.
7. Unplug the wall adaptor to power the CE board off before the motherboard.
8. When power is removed from the CE board, click Disconnect in the TES window and then press and hold SW1 on the ADS9
evaluation board (MicroZED daughter card) until LED D3 illuminates. When LED D3 starts to blink, it is safe to turn off the ADS9
power using Switch S4.
TES INSTALLATION
Contact an Analog Devices representative to obtain access to the TES. When the initial software download completes, copy the software
to the target system and unzip the files (if not already unzipped). The downloaded zip container has an executable file called ADRV9025
Transceiver Evaluation Software_x64_FULL.exe (there is a x86 version available if the computer does not support x64 operation).
Administrator privileges are required to install the TES. When an executable file is run, a standard installation process follows. Parts of
the installation build are Microsoft .NET Framework 4.5 (which is mandatory for the software to operate) and IronPython 2.7.4 (which is
optional and recommended). Figure 168 shows the recommended configuration. Note that the Microsoft .NET Framework and the
IronPython 2.7.4 installations are not necessary to select once they have been installed. If updating the version of the TES, these boxes can
be left cleared to save installation time.
22770-167
Figure 168. Software Installation Components
The last step of the instalation process is to select the shortcut configuration, as shown in Figure 169. The user can select a shortcut to be
placed in the Windows Start menu and/or on the Windows desktop.
22770-168
22770-169
Figure 170. TES Interface
Demo Mode
Figure 170 shows the opening page of the TES. In the case when evaluation hardware is not connected, the user can still use the software
in demo mode by clicking Connect (top left corner of the window). The software moves into demo mode in which a superset of all
transceiver family features is displayed.
NORMAL OPERATION
When hardware is connected to a PC and the user wants to start using the complete evaluation system, the TES establishes a connection
with the ADS9 system via Ethernet when the Connect option in the dropdown menu is clicked. When proper connection is established,
the user can click the DaughterCard position in the device tree on the left side of the window. When DaughterCard is clicked,
information about revisions of different setup blocks appears in the main window. The bottom part of that window shows the TCP IP
address set to 192.168.1.10 and the port number set to 55556. Figure 171 shows an example of correct connection between a PC and an
ADS9 system with a daughter card connected.
22770-170
Profile Options
The TES contains the following profile options:
• ADRV9025Init_StdUseCase50_nonLinkSharing
• ADRV9025Init_StdUseCase50_LinkSharing
• ADRV9025Init_StdUseCase51_LinkSharing
• ADRV9025Init_StdUseCase61_ LinkSharing
These profiles configure the transceiver for different transmit, receive, and observation receive bandwidths, sample rates, and clock rates.
The profiles also set different JESD configurations and lane rates. By default, the platform boots to JESD204B mode. Note that the
available use cases can vary based on the version of the software being run.
22770-171
Additional 204C use cases are also available. Switch the platform to 204C mode and then the available 204C profiles are displayed. To
switch the platform, click Device > FPGA switch JESD > Jesd 204C, at which point the platform reboots (which takes approximately 3
minutes). Upon reconnecting, the 204C profiles are available.
Initialization
The Initialization subtab provides access to the settings that are used to configure the transceiver at startup. This window allows the user
to set the LO frequencies used, the initial transmit attenuation settings, the initial receive gain index settings, and the initial gain index for
ORx1 (the only observation receive channel available at this stage in development). These and other settings that are provided in future
revisions are shown in Figure 173.
22770-172
Figure 173. Initialization Configuration Tab
InitCals
The InitCals subtab sets which calibrations take place at initialization. The default settings are shown in Figure 174. To enable or disable
these settings, select the checkbox next to the calibration. A check mark indicates that the calibration is run at startup.
22770-173
Transmit Configuration
The Tx tab is primarily informative and is based on the profile selection in the Overview tab (Figure 172). In this tab, the user can check
clock rates at each filter node as well as filter characteristics and pass-band flatness. Quick zooming capability allows zooming of the pass-
band response as well as restoring to the full-scale plot. Figure 175 shows an example of the Tx tab with the resulting composite filter
response for the chosen profile.
22770-174
Figure 175. Tx Summary Tab
Receive Configuration
The Rx tab is primarily informative and is based on the profile selection in the Overview tab (see Figure 172). In this tab, the user can
check clock rates at each filter node as well as filter characteristics and pass-band flatness. Quick zooming capability allows zooming of
the pass-band response as well as restoring to the full-scale plot. Figure 176 shows an example of the Rx tab with the resulting composite
filter response for the chosen profile.
22770-175
22770-176
Figure 177. ORx Summary Tab
JESD Configuration
The JESDb tab is primarily informative and is based on the profile selection in the Overview tab (see Figure 172). In this tab, the user can
check the transmit deframer settings and the receive and observation receive framer settings. Figure 178 shows an example of the JESDb
tab with the settings for Use Case 13.
22770-177
22770-178
Figure 179. Device Programmed
Initialization Script
The TES allows the user to create a script with all API initialization calls in the form of IronPython functions. When the user clicks the
Tools > Save Python Script option, the script can be given a file name and stored in a chosen location for future use. The TES generates
the script in the form of a python (.py) file. That file can then be executed using the IronPython Script tab shown in Figure 185.
The commands ultilized by the TES to initialize the transceiver are different than those described in the System Initialization section.
These commands perform the same underlying task as the API initialization procedure. The three main commands used to initialize
using the TES are shown in Figure 180. Help for these commands can be found in the client dynamic link library (DLL) help file. The first
command loads the profile, the second command configures the AD9528, and the third command runs all the initialization API
commands. It is not possible to initialize the transceiver in any other way using the TES platform.
TRANSMITTER OPERATION
Select the Transmit tab to open a page as shown in Figure 181. The upper plot displays the FFT of the digital input data and the lower
plot shows its time domain waveform. When multiple transmit outputs are enabled, the user can select desired data to be displayed in the
spectrum plot using the checkboxes below the plot. In the time domain plot, the user can select Tx1, Tx2, Tx3, Tx4, or any combination
of the data input channels, with I and/or Q data displayed.
When the Transmit tab opens, the user can enter the RF transmit center frequency in MHz for transmit LO1 (used for transmit
operation), change attenuation level, and transmit continuous wave tones.
22770-179
Figure 181. Transmit Data Tab
22770-180
Press the play symbol in Figure 181 to move the transceiver to the transmit state and start a process where the NCO generated continuous
wave data is enabled.
The Tx2 Attenuation (dB) input allows the user to control analog attenuation in the Tx2 channel. The input provides 0.05 dB of attenuation
control accuracy. The Tx3 Attenuation (dB) and Tx4 Attenuation (dB) perform the same operation on the Tx3 and Tx4 channels.
22770-181
Figure 183. Receive Data Tab
22770-182
Figure 184. Obs Rx Data Tab
SCRIPTING
The Iron Python tab allows the user to use IronPython language to write a unique sequence of events and then execute them using the
evaluation system. Scripts generated using this tab can be loaded, modified if needed, and run on the evaluation system. Figure 185 shows
the Iron Python tab after executing the File > New script function. The top part of the window contains the IronPython commands while
the bottom part of the window displays the script output. Scripts are run by clicking Build > Run. To save scripts that provide useful
functions that may be useful in the future, click File > Save and enter the path and file name for saving the script.
When the user configures the part to the desired profile, a script can be generated with all API initialization calls in the form of IronPython
functions. Click Tools > Create Script > Python to accomplish this task. This function generates a script with the initialization sequence
and opens a dialogue box to save the file. Basic script with no initializaion sequence can be generated by clicking File > New option.
22770-183
#################################################################################
#GUI Version: 0.1.0.19
#DLL Version: 0.1.0.11
#Cmd Server Version: 0.1.0.11
#FPGA Version: 0xC900000F
#ARM Version: 0.1.0.5(ADI_ADRV9025_ARMBUILD_TESTOBJ)
#StreamVersion: 0.0.0.28
#################################################################################
if (Link.IsConnected):
fpga9025 = Link.FpgaGet()
adrv9025 = Link.ADRV9025Get(1)
else:
print "Not Connected"
22770-184
Figure 186. Python Script Example
When using the Iron Python tab window, the user can execute any API command that is available in the loaded software build.
C CODE GENERATION
It is possible to generate C initialization structure from the GUI. To generate this code, click Tools > Create Script > Init c files.
22770-185
When this option is selected, the GUI opens a dialogue box to select a location and file name to store this code. The preferred file name is
initdata.c. The user can choose to store resource files at the same location or another location by clicking Yes or No on the prompt (see
Figure 188).
22770-186
22770-187
Figure 189. Linux Command Line to Enter Example Directory
5. Run the make command at this location to compile the code. If no errors occur, this command generates an executable called main
in /home/analog/adrv9025_c_example/c_src/app/example/.
22770-188
Figure 190. Linux Command Line make Execution Example
6. Run the ./main command in the same folder to run the initialization sequence.
NCO SETUP
The NCO is a digital block that can be used to provide an offset center frequency in the digital domain. This function can be used to
offset signals in the frequency domain to allow multiple frequency bands to be processed when received on a single channel. The setup of
these functions can be configured in the TES using the NCO tab Figure 191 shows the options and settings available for the NCO control
for both receivers and transmitters.
22770-189
22770-190n
Figure 192. TES Overview Selection Tab
22770-191
Figure 193. TES Initialization Tab
When programming is complete, click the Tx tab and setup the transmit data file and signal level. Ensure that the signal level is adequate
to produce a signal at the observation receiver input with a power level between −20 dBm and −25 dBm. When the transmitter levels are
set, click the Obs Rx tab and clear the enable box for each observation receive channel so that these channels can be controlled by the
DPD tracking calibrations. When the observation receiver signal level is confirmed to be in the proper range, go back to the Tx tab and
disable the transmitter outputs so that they can be controlled by the DFE functions.
DPD Setup
There are three subtabs on the DFE setup tab. Select the DPD tab to select the configuration page for DPD functions. To evaluate DPD
performance, take the following steps (see Figure 194 and Figure 195):
1. Select the DPD model by clicking the Load Model from file… button.
2. Configure the DPD tracking parameters (it is recommended to start with the default settings).
3. Select which transmit channels will be evaluated.
4. Click Apply Tracking Config.
5. Click Run Path Delay Init Cal.
Rev. 0 | Page 265 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
6. Check the signal level reported. If the level is not in the −20 dBm to −25 dBm range, check the cable connections. If still not at the
expected level, try reprogramming the device with the desired settings.
7. Click Apply Model on Device from M Table.
8. Click Apply Model on Device from C Table.
9. Click Enable DPD on select channels (only).
10. Click the Transmit tab and click the play button to send data.
11. Click the DFE tab and then the DPD tab, and click Reset DPD.
12. Click Get Status & Statistics to evaluate the performance.
22770-192
22770-193
Figure 195. DPD Function Setup and Performance Statistics
LO
ORx
ATTEN
BBIC ORx ORx OBS
Rx DDC BUFFER PFIR ADC LPF
(OPTIONAL)
22770-194
Figure 196. ADRV9029 Signal Chain with DFE Processing Blocks Highlighted
D
TP R E
U A IN
SE
O INE MB
N
T
PO
U
L O
C
ES
R
OUT OUT OUT
PA
IN IN IN
PA-1 PA
22770-195
Figure 197. Concept of Digital Predistortion for Linearizing the Power Amplifier Response
The intermodulation distortion products between various subcarriers because of power amplifier nonlinearities in a wideband
transmission protocol such as LTE/NR manifest as power leaked into adjacent channels. ACLR is defined as the ratio of the transmitted
power on the assigned channel to the power leaked in the adjacent radio channel. The ACLR performance improvement following the
application of DPD to the baseband data is captured in Figure 198. These plots illustrate how the out of band nonlinearities because of
intermodulation products of an LTE 20 MHz signal are reduced by 15 dB to 20 dB after the application of DPD.
22770-196
Figure 198. Power Spectral Density Showing Improvement in ACLR After Application of DPD for a 20 MHz LTE Signal
DPD Actuator
Data From
HB 1,2,4 PA-1 Tx PA FILTER/DUPLEXER
CFR
Model
Firmware
HW ACCEL ARM-C, ARM-D ORx
(3)
where:
xGMP is the output of the actuator.
u is the input of the actuator.
i is the memory term.
j is the cross term.
k is the order term.
ci,j,k is the complex valued coefficient of the GMP terms.
To compensate for memory effects in a large bandwidth signal, a higher order polynomial is required. The DPD actuator can be programmed to
support up to 190 coefficients for wide bandwidth signals. The structure of the DPD actuator is shown in Figure 200. For every predistorted
output, the GMP model calculates the sum of product expression. The product terms consist of a modeling coefficient (ci,j,k), a magnitude
power term (|u(n-i)|k), and cross memory term u(n − j). Each DPD model consisting of GMP terms can utilize up to 31 LUTs on one
Rev. 0 | Page 270 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
specified bank. The LUTs are 1k samples deep and organized in four banks of 8-bit tables (256 entries). Refer to the GMP Model and
Look Up Table section for more information on the mapping GMP terms to LUTs.
JESD Tx
x = 1, 2, 4
u x Z –1 Z–1 Z –1
I2 + Q2
COMPANDER LUT 0, 0, k0
Z–1
LUT 1, 1, k1
Z–1 SATURATE
x
LUT 2, 2, k2
Z–1 OFF-DIAGONAL
i Delay BASIS
LUT 3, 3, k3
22770-198
LUT i, j, kn
–10
–20
–30
MAGNITUDE (dB)
–40
–50
–60
–70
–80
–90
22770-299
0 20 40 60 80 100 120
FREQUENCY (MHz)
0.9
0.8
0.7
AMPLITUDE (A)
0.6
0.5
0.4
0.3
0.2
0.1
22770-199
0 20 40 60 80 100 120
FREQUENCY (MHz)
Figure 202. Zero Phase Response for HB1 Enabled (×2), 82% of FS
MAGNITUDE RESPONSE ESTIMATE
–50
MAGNITUDE (dB)
–100
–150
22770-300
Figure 203. Magnitude Response for Both HB1 and HB2 Enabled (×4), 41% of FS
MAGNITUDE RESPONSE ESTIMATE
0
–10
–20
–30
MAGNITUDE (dB)
–40
–50
–60
–70
–80
–90
22770-200
0 20 40 60 80 100 120
FREQUENCY (MHz)
Figure 204. Zero Phase Response for Both HB1 and HB2 Enabled (×4), 41% of FS
22770-201
ESTIMATION
The mathematical representation of the DPD coefficient estimation is shown in Figure 206. The DPD engine observes N samples of
power amplifier input samples (X) and power amplifier output samples (Y), and computes M coefficients (c) corresponding to the inverse
power amplifier function F(x).
The coefficient set (c) is estimated through a least squares approximation as described in matrix multiplication equations in Figure 207.
Y=F×C (1) INITIAL STEP
F Y = (FHF)C
H (2) MULTIPLY BY COMPLEX CONJUGATE OF F ON BOTH SIDES
AUTO- CROSS-
CORRELATION CORRELATION
22770-204
ESTIMATION
The mathematical representation of the DPD coefficient estimation via direct learning is described as an error, E, defined as the
difference between the observed (Y) and pre-DPD actuator data (U) as follows:
E=Y–U
The power amplifier is modeled as the function, Fx, multiplied by adaptive coefficients, C, through the error matrix, E, as shown in Figure 209.
22770-205
eN f1(×N) f2(×N) f3(×N) f4(×N) ͙ ... fM(×N) cM
The direct learning outcome is an iterative solution, where the current coefficients are based on the memory of previously computed
coefficients and currently estimated coefficients (C).
The direct learning approach uses a parameter, μ, which is the convergence factor that defines the step size for learning coefficients. The
convergence factor μ lies in the range 0% to 100% and is user configurable in the transceiver using the
adi_adrv9025_DpdTrackingConfigSet() through the parameter adi_adrv9025_DpdTrackingConfig_t.dpdMu API. A higher value of the
convergence factor, μ, results in faster convergence. However, a significantly high value of μ can result in an unstable system. The user can
start with a convergence factor of 50% and tune the value based on characterization of the system for convergence time and stability.
Comparison Between DPD Indirect Learning and Direct Learning
The DPD indirect learning algorithm is time efficient because it estimates coefficients through inversion in a single update. The DPD
indirect learning algorithm is preferred when a quicker adaptive response is required by the system.
The DPD direct learning algorithm is more accurate but iterative in nature as described in the previous section, and requires a longer
time to converge compared to indirect learning. The direct learning algorithm is less sensitive to bandwidth mismatches and is preferred
when the signal bandwidth is more than 100 MHz (for example, 2xNR100 or 8xLTE20 systems).
DPD Coefficient Estimation
The maximum number of coefficients is limited to 190 (M = 190), and the number of samples used to calculate the coefficients is typically
16384 samples (N = 16384). Although the number of samples, N, is user configurable using the adi_adrv9025_DpdTrackingConfigSet() API, it
is recommended to set the number of samples to 16384, which provides a balance between estimation time and sample size.
The DPD algorithm runs on an ARM-D and calculates the coefficients corresponding to GMP terms of the inverse power amplifier
model. This model predistorts the digital baseband signal before digital-to-analog conversion and transmission of samples to the
transmitter upconverter (this output becomes the RF input to the power amplifier). The power amplifier output is sampled using an
external loopback to an observation receiver channel input.
The DPD engine then correlates the observation receiver and transmitter samples to calculate the latest set of coefficients. The DPD
engine performs a brief check on model error before updating the LUTs that feed the correction coefficients into the DPD actuator
hardware. Details regarding the GMP model, the actuator and the LUTs are provided in sections to follow. Because of the relatively simple
implementation of this algorithm, the overall time taken to react to sudden changes in transmit waveforms is relatively short and is
typically less than 1 second per transmitter channel (actual time depends on the configurable parameters of the DPD and ARM
scheduling). Certain protection criteria are designed into the algorithm to prevent damage to the power amplifier because of large model
errors. The DPD algorithm is scheduled once every second per transmitter channel in the firmware, which means the coefficients are
updated once every second per transmitter channel.
LUT22
i≤15, j4≤12
LUT23
i≤15, j5≤13
LUT24
i≤15, j6≤14
LUT25
22770-206
i≤15, j7≤15
The restrictions placed on the GMP terms mapped to the LUTs shown in Figure 210 include the following:
• More LUTs are available for smaller i and j values clustered at the top of the LUT banks compared to fewer LUTs for high i and j
values towards the bottom of the LUT bank. In general, low index values are more significant in sparse GMP models, therefore the
user has more LUTs that can be mapped to lower i and j memory terms.
• Each row in the LUT bank shown in Figure 210 share the same j values, which means that the GMP terms mapped to LUT0 to LUT7
must have the same j value. Similarly, GMP terms mapped to LUT8 to LUT13, LUT14 to LUT17, and LUT18 to LUT25 must have the
same j values, respectively.
• LUT28, LUT29, LUT30, and LUT31 are reserved for internal use. These LUTs are not available for the user to program GMP terms.
• LUT26 and LUT27 are floating LUTs, which means that these two LUTs can take a j value that is assigned to one of the four rows in
the upper half of the LUT bank. For example, if LUT0 to LUT7 have j = 1, LUT8 to LUT13 have j = 2, LUT14 to LUT17 have j = 3
and LUT18 to LUT21 have j = 4, the GMP terms mapped to LUT26 and LUT27 can have a j value in the range 1 to 4.
Rev. 0 | Page 275 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
A part of the user programmed GMP model is shown in Figure 211. Each row of the GMP model table consisting of the i,j,k LUT and
coefficients is called a feature.
REAL IMAGINARY
i j k LUT COEFF COEFF
2 1 2 10 0 0
2 1 3 10 0 0
3 1 1 11 0 0
3 1 5 11 0 0
3 1 7 11 0 0
4 1 1 12 0 0
22770-207
4 1 3 12 0 0
4 1 8 12 0 0
The following equations represent the GMP terms that are mapped to LUT10, LUT11, and LUT12, as described in Figure 211.
Xlut10 = |x(n − 2)|2× x(n − 1) + |x(n − 2)|3× x(n − 1)
Ylut11 = |x(n − 3)| × x(n − 1) + |x(n − 3)|5× x(n − 1) + |x(n − 3)|7× x(n − 1)
Ylut12 = |x(n − 4)| × x(n − 1) + |x(n − 4)|3× x(n − 1) + |x(n − 4)|8× x(n − 1)
where Ylutxx is the output of the LUTxx.
The user can program the complex coefficients to 0. The DPD tracking calibration determines the coefficients and applies them to the
GMP terms on each update.
The GMP model can be programmed using the adi_adrv9025_DpdModelConfigSet() API through the data structure adi_adrv9025_
DpdModelConfig_t. The total number of features in the model is conveyed through the adi_adrv9025_DpdModelConfig_t.dpdNumFeatures
variable. Each row of the table or the ‘feature’ is programmed through the adi_adrv9025_DpdModelConfig_t.dpdFeatures array. Each
element of the array corresponds to one row in the table shown in Figure 211.
The values to load the adi_adrv9025_DpdModelConfig_t structure for the example in Figure 211 include the following (only values for
feature [0] are shown):
• adi_adrv9025_DpdModelConfig_t.dpdNumFeatures = 8
• adi_adrv9025_DpdModelConfig_t.dpdFeatures[0].i = 2
• adi_adrv9025_DpdModelConfig_t.dpdFeatures[0].j = 1
• adi_adrv9025_DpdModelConfig_t.dpdFeatures[0].k = 2
• adi_adrv9025_DpdModelConfig_t.dpdFeatures[0].lut = ADI_ADRV9025_DPD_LUT10
• adi_adrv9025_DpdModelConfig_t.dpdFeatures[0].coeffReal = 0
• adi_adrv9025_DpdModelConfig_t.dpdFeatures[0].coeffImaginary = 0
ANTENNA
FREQUENCY
fBAND
DPD DAC PA1
UPCONVERTER
DPD
MODEL PA1
ANTENNA
FREQUENCY
fBAND
DPD DAC PA1
UPCONVERTER
DPD
MODEL PA1
ANTENNA
FREQUENCY
fBAND
DPD DAC PA1
UPCONVERTER
DPD
MODEL PA1
ANTENNA
FREQUENCY
fBAND
DPD DAC PA1
22770-208
UPCONVERTER
DPD
MODEL PA1
For the API sequence for programming DPD models in a single frequency band use case, the factory calibrated coefficients can be
programmed into the transceiver using the adi_adrv9025_DpdModelConfigSet API, as described in the previous section. The DPD reset
with the LUT restore option must be exercised consecutively on all four channels to program the coefficients into the DPD actuator
hardware. The API sequence for programming DPD models in a single frequency band use case is as follows:
adi_adrv9025_DpdModelConfigSet()
adi_adrv9025_DpdReset(ADI_ADRV9025_TX1, ADI_ADRV9025_DPD_LUT_RESTORE)
adi_adrv9025_DpdReset(ADI_ADRV9025_TX2, ADI_ADRV9025_DPD_LUT_RESTORE)
adi_adrv9025_DpdReset(ADI_ADRV9025_TX3, ADI_ADRV9025_DPD_LUT_RESTORE)
adi_drv9025_DpdReset(ADI_ADRV9025_TX4, ADI_ADRV9025_DPD_LUT_RESTORE)
Dual Frequency Band Use Case
In the dual frequency band use case, the signals of Transmit Channel 1 and Transmit Channel 2 are centered at fband1 and those of
Transmit Channel 3 and Transmit Channel 4 at fband2. Power amplifier characteristics are band dependent, so the DPD model that is
loaded into Transmit Channel 1 and Transmit Channel 2 must be different than the model loaded into Transmit Channel 3 and Transmit
Channel 4, as shown in Figure 213.
ANTENNA
FREQUENCY
fBAND1
DPD DAC PA1
UPCONVERTER
DPD
MODEL PA1
ANTENNA
FREQUENCY
fBAND1
DPD DAC PA1
UPCONVERTER
DPD
MODEL PA1
ANTENNA
FREQUENCY
fBAND2
DPD DAC PA2
UPCONVERTER
DPD
MODEL PA2
ANTENNA
FREQUENCY
fBAND2
DPD DAC PA2
22770-209
UPCONVERTER
DPD
MODEL PA2
For the API sequence for programming DPD models in a dual frequency band use case, the factory calibrated coefficients can be
programmed into the transceiver through the adi_adrv9025_DpdModelConfigSet() API for the two pairs of transmit channels, as
22770-210
UPCONVERTER
DPD
MODEL PA4
Figure 214. Use Case Where each Transmit Path Requires a Different Set of DPD Coefficients
For the API sequence for programming a unique DPD model per transmit channel, the factory calibrated coefficients can be
programmed into the transceiver through the adi_adrv9025_DpdModelConfigSet() API for the two pairs of transmit channels, as
described in the previous section. The DPD reset with the LUT restore option must be exercised for each channel. The API sequence for
programming a unique DPD model per transmit channel is as follows:
adi_adrv9025_DpdModelConfigSet() /* Load model for Tx1 */
adi_adrv9025_DpdReset(ADI_ADRV9025_TX1, ADI_ADRV9025_DPD_LUT_RESTORE)
adi_adrv9025_DpdModelConfigSet() /* Load model for Tx2 */
adi_adrv9025_DpdReset(ADI_ADRV9025_TX2, ADI_ADRV9025_DPD_LUT_RESTORE)
adi_adrv9025_DpdModelConfigSet() /* Load model for Tx3 */
adi_adrv9025_DpdReset(ADI_ADRV9025_TX3, ADI_ADRV9025_DPD_LUT_RESTORE)
adi_adrv9025_DpdModelConfigSet() /* Load model for Tx4 */
adi_adrv9025_DpdReset(ADI_ADRV9025_TX4, ADI_ADRV9025_DPD_LUT_RESTORE)
DPD SAMPLE CAPTURE
The DPD algorithm relies on observing the samples distorted by the power amplifier through an observation channel to estimate the DPD
coefficients. The DPD algorithm captures the observation samples after the samples have been processed by the observation receiver channel,
and before and after the DPD actuator in batches of 4096 samples. The total number of samples that the DPD algorithm must capture is
configured using the adi_adrv9025_DpdTrackingConfigSet() API through the adi_adrv9025_DpdTrackingConfig_t.dpdSamples parameter.
The number of samples must be a multiple of 4096. Increasing the number of samples increases the processing time and computation
load. Conversely, a decreased number of samples can impact the accuracy of coefficient estimation. It is recommended that the number of
samples be set to 16384, which provides a balance between accuracy of estimation of coefficients and processing time.
For successful captures, the transmitter to observation channel external signal routing must be conveyed to the firmware through the
adi_adrv9025_TxToOrxMappingSet() API.
For accurate estimation of predistortion coefficients, the transmitter and observation receiver samples are aligned in time by the sample
capture engine in the transceiver. To align the samples, the external path delay initial calibration must be executed using the
Rev. 0 | Page 278 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
adi_adrv9025_InitCalsRun() API with a mask value of ADI_ADRV9025_EXTERNAL_PATH_DELAY (= 0x00200000) along with the
requisite transmit channel mask.
DPD Sample Capture Process
The DPD algorithm implements a peak detection-based capture strategy because the high power signal levels contain more useful
information for deriving DPD coefficients. The device calibration scheduler can initiate DPD capture at any available point in time when
the transmit signal chain is enabled. The sequence of events involved in DPD sample capture process is shown in Figure 215.
DPD TRACKING
CALIBRATION SCHEDULED
TRUE
FIRMWARE RETRIEVES
PEAK + 4095 SAMPLES FROM
HW CAPTURE OVER THE PEAK
SEARCH WINDOW
FALSE
NUMBER OF SAMPLES CAPTURED ≥
adi_adrv9025_DpdTrackingConfig_t.dpdSamples?
22770-211
1. ADRV9029 DPD
ALGORITHM SCHEDULES
THE SAMPLE CAPTURE
VIA SAMPLE CAPTURE
ENGINE, WHICH SEARCHES
FOR A PEAK WITHIN THE
PEAK SEARCH WINDOW
REPRESENTED B Y
THE BOX IN RED
2. THE ADRV9029
SAMPLE CAPTURE
ENGINE DETECTS THE
HIGHEST PEAK WITHIN
THE PEAK SEARCH
WINDOW (RED DOT),
AND CAPTURES
4096 SAMPLES
FOLLOWING THE
HIGHEST PEAK
DETECTED.
A ZOOMED IN VIEW OF
THE TIME ALIGNED Tx
CAPTURE BUFFER AND
ORx CAPTURE BUFFER
DATA WHICH CONSISTS
OF 4096 SAMPLES
FOLLOWING THE
DETECTION OF THE
HIGHEST PEAK WITHIN
THE PEAK SEARCH
WINDOW
22770-212
Figure 216. DPD Peak Detection-Based Sample Capture Process for DPD Adaptation
TDD DOWNLINK
DATA
DPD CAPTURE 0 0 0 0 P 0 0 0 P P 0 0 P P P 0 P P P P
BUFFER 1 1 2 1 2 3 1 2 3 4
22770-213
MEMORY TO HOLD DATA USED FOR
16k SAMPLES DPD ADAPTION
DPD DYNAMICS
The transceiver DPD is designed to react to dynamic signaling conditions. The algorithm defines four models that can be implemented
depending on the power levels to achieve the best dynamic performance. The four DPD models are defined in Table 250.
Table 250. DPD Models Explained
DPD Model Description
M Table (Maximum Power Table ) Default model in all three DPD modes. The conditions for updating this table in different
(ADI_ADRV9025_DPD_MODEL_TABLE_M) DPD modes include the following:
DPD MODE0. The model defined by the M table updates on every DPD iteration if the update
criteria is met, as described in the ADI_ADRV9025_DPD_MODE0 section in Table 251. The
update criteria is described in the following section.
DPD MODE1. The model defined by the M table updates when the rms power of the DPD
capture samples exceeds previously recorded maximum rms power, as described in the
ADI_ADRV9025_DPD_MODE1 section in Table 251.
DPD MODE2. The model defined by the M table updates only when the rms power of
DPD capture samples exceeds the M threshold specified by the
adi_adrv9025_DpdTrackingConfig_t.dpdMThreshold configuration, and the rms power of
DPD capture samples exceeds the previously recorded maximum rms power. Refer to
Table 251 for more details on DPD Mode 2 operation.
C Table (Current Table) The model defined by the C table is a low power model only applicable in DPD MODE2
(ADI_ADRV9025_DPD_MODEL_TABLE_C) when the rms power of DPD capture samples is below the M threshold value specified by
adi_adrv9025_DpdTrackingConfig_t.dpdMThreshold configuration, as described in the
ADI_ADRV9025_DPD_MODE2 section in Table 251.
R Table (Recovery Table) The R table, or recovery table, is a recovery model that stores the coefficients generated
(ADI_ADRV9025_DPD_MODEL_TABLE_R) from the highest power data captured by the DPD. The maximum power recorded by the
recovery model does not decay unlike the maximum power recorded by the M table,
which decays by 0.2 dB per update period.
U Table (Unity Gain Table) The unity gain model in which the output is equal to the input. This model is usually
(ADI_ADRV9025_DPD_MODEL_TABLE_U) activated in low power conditions where predistortion is not necessary.
DPD Modes of Operation
The DPD functionality supports three modes of operation that are listed in Table 251. The user can select one of the three modes based
on the application. The DPD engine must react to changing signal conditions, and Analog Devices has developed proprietary algorithms
that address this requirement. Within a cost bounded implementation, there is no solution that achieves absolute performance on any
time scale of measurement. The Analog Devices solution is an optimized compromise between performance and complexity.
The DPD mode of operation can be configured through the adi_adrv9025_DpdTrackingConfigSet() API using the
adi_adrv9025_DpdTrackingConfig_t.dpdUpdateMode parameter. The DPD update mode can be set to one of the three enumerated lists
of options represented by adi_adrv9025_DpdTrackingUpdateMode_e.
Table 251. DPD Modes of Operation
DPD Mode of Operation Description
ADI_ADRV9025_DPD_MODE0 DPD coefficients corresponding to the GMP model are updated once every second. This mode offers the best
sustained performance for any signal at the expense of transient emissions when the signal changes rapidly.
Rev. 0 | Page 281 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
DPD Mode of Operation Description
Figure 218 shows the DPD updates in Mode 0. The DPD updates coefficients once every update period
independent of the rms power measured by the DPD captures for coefficient computation.
ADI_ADRV9025_DPD_MODE1 DPD coefficients corresponding to the GMP model are updated only if the rms power measured by the
DPD exceeds the previously recorded maximum rms power by the DPD algorithm. The rms power is
calculated on the samples captured by the DPD for coefficient computation. The number of samples to
capture for a DPD update is specified by adi_adrv9025_DpdTrackingConfig_t.dpdSamples. Typically, this
number is set to 16384 samples. The recorded maximum power decays at a fixed rate of 0.2 dB per update.
Figure 219 shows an illustration of DPD updates in Mode 1. The DPD algorithm updates coefficients only
when the rms power measured by the DPD during the update exceeds the previously recorded
maximum power. In this example, there is no update between Update 1 and Update 2 because the rms
power is below the maximum power recorded.
DPD Mode 1 offers the best mitigation of transient emissions when the signal changes rapidly at the
expense of sustained performance in certain low power signal conditions.
ADI_ADRV9025_DPD_MODE2 In this mode, the DPD algorithm maintains two separate look up tables, one for the low power region
and the other for the high power region. Depending on the RMS power measured by the DPD on the
samples captured for coefficient computation, the DPD algorithm either switches to the high power look
up table (M table) or the low power look up table (C table), and the same look up table is active until the
next DPD update. The rms power threshold separating the low power and high power region is user
configurable through the adi_adrv9025_DpdTrackingConfig_t. dpdMThreshold parameter. The rms
power is calculated on the samples captured by the DPD for coefficient computation. The number of
samples to capture for a DPD update is specified by adi_adrv9025_DpdTrackingConfig_t.dpdSamples.
Typically, this number is set to 16384 samples, which offers a compromise between Mode 0 and Mode 1.
There is some mitigation of transient emissions when the signal changes rapidly and sustained
performance in many signaling conditions.
POWER
RMS POWER
MEASURED
BY DPD
22770-214
TIME
UPDATE 1 UPDATE 2 UPDATE 3 UPDATE 4 UPDATE 5 UPDATE 6
POWER
NO M-TABLE
UPDATE SINCE
Tx RMS POWER
< MAX POWER
POWER
DPD ACTUATOR
OUTPUT GAIN UNITY GAIN TABLE
EXPANSION ACTIVATED BELOW
Tx LOW POWER
THRESHOLD
M-TABLE/C-TABLE
ACTIVATED ABOVE
Tx LOW POWER
DPD ACTUATOR THRESHOLD
OUTPUT = DPD
ACTUATOR INPUT
PIN
22770-217
(DPD ACTUATOR)
adi_adrv9025_DpdTrackingConfig_t.minAvgSignalLevel
Transmitter M Threshold
The M threshold is a maximum power threshold specified by adi_adrv9025_DpdTrackingConfig_t.dpdMThreshold that is valid only in
DPD Mode 2 operation (adi_adrv9025_DpdTrackingConfig_t.dpdUpdateMode = ADI_ADRV9025_DPD_MODE2). There are two DPD
models (M table, C table) that the DPD tracking calibration maintains and updates. The DPD model update mechanism in DPD Mode 2
operation is described in Table 251. Note that the switching mechanism between the M table (high power), C table (low power), and U
table (unity gain) models is based on the 10 ms integrated rms power of the DPD actuator input samples.
The dynamics of the DPD based on the transmit baseband input level with the M threshold taken into consideration is shown in Figure 222.
POUT
(DPD ACTUATOR)
M-TABLE
DPD ACTUATOR
OUTPUT GAIN
EXPANSION C-TABLE
U-TABLE
DPD ACTUATOR
OUTPUT = DPD
ACTUATOR INPUT PIN
(DPD ACTUATOR)
22770-218
adi_adrv9025_DpdTrackingConfig_t.dpdMThreshold
adi_adrv9025_DpdTrackingConfig_t.minAvgSignalLevel
DPD REGULARIZATION
DPD regularization is used to make the DPD coefficient estimation less sensitive to missing data and prevent overfitting. The DPD is
essentially a curve fitting process, and Figure 223 outlines the optimum fitting to achieve in a system. A higher regularization prevents
overfitting, which improves stability but limits the ACLR improvement. On the other hand, a low regularization allows better ACLR
improvement, but stability of the DPD must be kept in check.
Y Y Y
22770-219
UNDERFITTING X BALANCED X OVERFITTING X
The AM to AM characteristics of a power amplifier for a case where there is sparse data in the high power region is shown in Figure 224.
In this case, a low regularization value results in overfitting and causes instability.
3.0
2.5
2.0
GAIN
1.5
1.0
0.5
0
22770-422
Figure 224. Gain vs Input Magnitude of an Example PA. DPD Regularization helps Decrease Sensitivity to Sparse
100
–50
–100
–150
22770-423
0 2000 4000 6000 8000 10000 12000 14000 16000
INPUT MAGNITUDE
Figure 225. Output Phase vs Input Magnitude of an Example PA. DPD Regularization helps Decrease Sensitivity to Sparse Data
For the AM to AM characteristics shown in Figure 224, the effect of low regularization and optimum regularization on DPD is shown in
Figure 226. With low regularization, the DPD algorithm has a tendency to overfit resulting in high power scattering. With the optimum
regularization, the sensitivity of DPD algorithm to sparse data in high power is minimized.
2.0
1.8
1.6
OUTPUT MAGNITUDE
1.4
1.2
1.0
0.8
0.6
0.4
0.2
0
22770-424
1.8
1.6
OUTPUT MAGNITUDE
1.4
1.2
1.0
0.8
0.6
0.4
0.2
0
22770-424
The DPD provides user configuration for regularization via adi_adrv9025_DpdModelConfig_t. dpdIndirectRegularizationValue and
adi_adrv9025_DpdModelConfig_t.dpdDirectRegularizationValue for indirect learning and direct learning mechanisms configured via
the adi_adrv9025_DpdTrackingConfigSet() API.
ADRV9029 DPD
DATA FROM
CFR 1, 2, 4 PA1 Tx PA FILTER/DUPLEXER
MODEL
22770-223
Figure 228. DPD Actuator Gain Monitoring Functional Diagram
The following code is an example python script to set up the gain monitor with the configuration described in Table 261.
def setupDpdGainMonitor():
dpdGainMonitorCfg = Types.adi_adrv9025_DpdActGainMonitorConfig_t()
dpdGainMonitorCfgGet = Types.adi_adrv9025_DpdActGainMonitorConfig_t()
dpdGainMonitorCfg.txChannelMask = 0x01
dpdGainMonitorCfg.dpdGainMonitorCtrl.dpdGainMonitorEnable = 1 #Enable Gain Monitoring
dpdGainMonitorCfg.dpdGainMonitorCtrl.dpdGainMonitorIIREnable = 1 #Enable IIR for averaging samples. If set to 0, sample by sample gain
detection is carried out
dpdGainMonitorCfg.dpdGainMonitorCtrl.dpdGainMonitorIIRDecay = 1 #Sets the sample averaging window size to 128K samples
dpdGainMonitorCfg.dpdGainMonitorCtrl.lowGainModelAutoLoadEnable = 1 #Enable DPD model switching on low gain threshold violation
dpdGainMonitorCfg.dpdGainMonitorCtrl.highGainModelAutoLoadEnable = 1 #Enable DPD model switching on high gain threshold violation
dpdGainMonitorCfg.dpdGainMonitorCtrl.dpdGainMonitorLowerThreshModelSel = Types.adi_adrv9025_DpdModelSel_e.ADI_ADRV9025_DPD_MODEL2 #Switch to
R-Table on low gain violation
dpdGainMonitorCfg.dpdGainMonitorCtrl.dpdGainMonitorUpperThreshModelSel = Types.adi_adrv9025_DpdModelSel_e.ADI_ADRV9025_DPD_MODEL3 #Switch to
unity gain table on high gain violation
dpdGainMonitorCfg.dpdGainMonitorThresh.dpdGainMonitorQualThresh = 1 #Upper 16 bits of I^2 +Q^2 32 bit data. A value of 1 equals -42dBFS
dpdGainMonitorCfg.dpdGainMonitorThresh.dpdGainMonitorLowerThresh = 0x20 #Low gain threshold in 2.6 integer linear scale format
dpdGainMonitorCfg.dpdGainMonitorThresh.dpdGainMonitorUpperThresh = 0x80 #High gain threshold in 2.6 integer linear scale format
link.platform.board.Adrv9025Device.Dfe.DpdActuatorGainMonitorConfigSet(dpdGainMonitorCfg) |
retVal = link.platform.board.Adrv9025Device.Dfe.DpdAtuatorGainConfigGet(Types.adi_adrv9025_TxChannels_e.ADI_ADRV9025_TX1,
dpdGainMonitorCfgGet)
dpdGainMonitorCfgGet = retVal[1]
print “DPD Gain Monitor Enable = “, dpdGainMonitorCfgGet.dpdGainMonitorCtrl.dpdGainMonitorEnable
print “DPD Gain Monitor IIR Enable = “, dpdGainMonitorCfgGet.dpdGainMonitorCtrl.dpdGainMonitorIIREnable
print “DPD Gain Monitor IIR Decay = “, dpdGainMonitorCfgGet.dpdGainMonitorCtrl.dpdGainMonitorIIRDecay
print “DPD Gain Monitor Low Gain Auto Model Ld En = “, dpdGainMonitorCfgGet.dpdGainMonitorCtrl.lowGainModelAutoLoadEnable
print “DPD Gain Monitor High Gain Auto Model Ld En = “, dpdGainMonitorCfgGet.dpdGainMonitorCtrl.highGainModelAutoLoadEnable
print “DPD Gain Monitor Qual Thresh = “, dpdGainMonitorCfgGet.dpdGainMonitorThresh.dpdGainMonitorQualThresh
print “DPD Gain Monitor Low Gain Thresh = “, dpdGainMonitorCfgGet.dpdGainMonitorThresh.dpdGainMonitorLowerThresh
DPD Actuator Gain Monitoring and Model Switching State Machine Representation
The flow chart in Figure 229 describes the function of the gain monitoring state machine. The DPD gain monitoring, when enabled, runs
independently from the DPD actuator. The DPD gain monitoring monitors the gain of the signal across the actuator until the DPD is
turned off, as shown in the state diagram.
START
FW SCHEDULING TIMER
NO
DPD SCHEDULED?
YES
SAMPLE CAPTURE
FOR OTHER CALS
DPD ADAPTATION
YES
NO DPD UPDATE
CONDITIONS MET?
YES
COEFF GENERATION
AND LUT UPDATE +
SET M/C TABLE AS
ACTIVE MODEL
YES
NO
GAIN THRESHOLD
VIOLATION ?
YES
MODEL SWITCH TO
UNITY GAIN/R-TABLE
22770-224
DPD ACTUATOR
ADRV9029 STREAM
PROCESSOR CTRL
UNITY GAIN 1
MODEL
DATA FROM DPD DPD ACTUATOR
HALF-BAND FILTERS OUTPUT
PREDISTORTION
MODEL 0
22770-225
Figure 230. DPD Actuator Bypass through GPIO
The GPIO control for DPD actuator bypass is managed by the stream processor in the transceiver. To enable this feature, take the
following steps:
1. Configure the stream to associate a GPIO with DPD actuator bypass control and generate a stream binary. The TES can be used to
configure the GPIO for DPD actuator bypass and generate the stream binary. The Tx Ant Cal GPIO Pin value in the Stream
Settings in the initialization page can be used to configure the GPIO, and the stream binary can be generated using the Tools >
Create Script function shown in Figure 231.
22770-226
Figure 231. DPD Actuator Bypass GPIO Pin Stream Configuration Using TES
2. Convey this stream configuration to the TES software by assigning the stream general-purpose input pins in the post MCS init structure.
The following code is an example configuration where GPIO_06 is assigned to Stream GP Input 6 in the post MCS init structure.
{ // streamGpioCfg
ADI_ADRV9025_GPIO_INVALID, // streamGpInput0
ADI_ADRV9025_GPIO_INVALID, // streamGpInput1
ADI_ADRV9025_GPIO_INVALID, // streamGpInput2
ADI_ADRV9025_GPIO_INVALID, // streamGpInput3
ADI_ADRV9025_GPIO_INVALID, // streamGpInput4
ADI_ADRV9025_GPIO_INVALID, // streamGpInput5
ADI_ADRV9025_GPIO_06, // streamGpInput6
ADI_ADRV9025_GPIO_INVALID, // streamGpInput7
ADI_ADRV9025_GPIO_INVALID, // streamGpInput8
ADI_ADRV9025_GPIO_INVALID, // streamGpInput9
ADI_ADRV9025_GPIO_INVALID, // streamGpInput10
ADI_ADRV9025_GPIO_INVALID, // streamGpInput11
ADI_ADRV9025_GPIO_INVALID, // streamGpInput12
ADI_ADRV9025_GPIO_INVALID, // streamGpInput13
ADI_ADRV9025_GPIO_INVALID, // streamGpInput14
ADI_ADRV9025_GPIO_INVALID, // streamGpInput15
},
22770-228
Figure 232. Bad ACLR Performance Correlation with a High Direct EVM Value
Case 2
The ACLR performance is better (~47.5 dBc) than Case 1, which also corresponds to reduced direct EVM.
22770-229
22770-230
Figure 234. Direct EVM for the Optimal ACLR Performance
3.5
STABILITY METRICS
3.0
2.5
2.0
1.5
1.0
22770-231
0.5
0 5 10 15 20 25 30
ORx ATTENUATION (dB)
–5
dpdDirectEvm 25
dpdIndirectEvm
–10 dpdSelectError
dpdIndirectError
data2 20
PERCENTAGE (%)
–15
ACP (dBm)
–20 15
–25
10
–30
5
–35
22770-232
–40 0
0 5 10 15 20 25 30 35 40 45
ITERATIONS
–5
dpdDirectEvm 25
dpdIndirectEvm
–10 dpdSelectError
dpdIndirectError
data2 20
PERCENTAGE (%)
–15
ACP (dBm)
–20 15
–25
10
–30
5
–35
22770-232
–40 0
0 5 10 15 20 25 30 35 40 45
ITERATIONS
Summary
The following are some of the scenarios that could cause degradation of DPD performance. However, it is advised that the user
characterize the system under test for EVM corruption that is specific to the system or conditions prevalent before configuring the
thresholds.
• The DPD performance can be measured by direct EVM. The direct EVM numbers are lower when the performance on the DPD
adaptation is acceptable.
• As observation receive attenuation increases, an increase in EVM percentages can be observed.
• Interference or high noise levels in transmit and observation receive channels can cause the EVM and error percentages to increase.
Fault conditions and corresponding recovery actions can be defined for EVM numbers to avoid incorrect DPD updates.
• As the transmit signal level decreases, the EVM percentages increase. However, an argument can be made that DPD might not be
required at lower signal levels for certain power amplifiers.
• Take note of the DPD model that the user configures the part with. An incompatible prior DPD model configured by the user can
cause the EVM and error percentages to increase leading to poor DPD performance.
• Catastrophic conditions such as loss of signals can also lead to high EVM and error percentages that can be monitored by the user.
22770-234
Figure 238. DPD Characterization for Optimizing M-Threshold in DPD Mode 2
For this example, the characterization data relative to a 45 dBc ACP specification and 2.5% EVM is plotted in Figure 239, which shows
that, although DPD performance is sustained across power levels, the EVM violates the 2.5% specification at approximately –24 dBFS.
Based on the characterization data, it can be determined that that optimum M table threshold in DPD Mode 2 is –24 dBFS.
–6 2.8
–7 2.6
–45dBc SPEC 2.4
–8 ACP ABS MODE 1
ACP (dBm)
EVM
EVM (%)
2.2
–9
2.0
–10
1.8
–11 1.6
–12 1.4
22770-235
Figure 239. DPD Characterization Data Plot for Characterizing the M Threshold
22770-236
Figure 240. Use Case 51 Transmit Datapath Overview
The user can load the desired waveform using the Tone Parameters pop-up window in the Transmit tab in the TES, as shown in
Figure 241. If desired, the peak to average ratio (PAR) of the waveform can be adjusted using the ADRV9029 CFR feature (refer to the
Crest Factor Reduction (CFR) section). Alternatively, a waveform with CFR applied to it can be loaded.
22770-237
The DPD adaptation results in an expansion at the peak values of the waveform. The user can allow adequate headroom (3 dB to 5 dB) by
typing the correct value in the Scaling (dB) textbox shown in Figure 241. Alternatively, the waveform can be scaled prior to loading.
When the waveform is loaded, set the Tx Attenuation (dB) value to get the desired output power as shown in Figure 242. To transmit the
waveform, click the play button in the Transmit tab. When the waveform has been played, the user can read the power at the output of
the power amplifier via a spectrum analyzer or a power meter (more accurate method).
22770-238
Figure 242. Setting Transmit Attenuation and Playing the Waveform
The user can check to make sure observation receive is not saturated or too close to the noise floor. The observation receive gain can be
adjusted to get appropriate signal levels.
In the DFE tab shown in Figure 243, there is a specific subtab for DPD. The DPD subtab allows the user to fully configure and observe the
DPD. The ACLR measurement window is not available at this point (the play button is not functional and is not used to enable any DPD
feature). To configure the DPD, take the following steps:
1. Load the model file from the PC (model files are provided by Analog Devices). Ensure that the real coefficient of the linear term (i = 1, j = 1,
k = 0) is set to 1.
2. Configure the parameters in the DPD Tracking Config, shown in Figure 244. (the default values provide a sufficient starting point).
22770-240
22770-241
Figure 245. Apply DPD Settings
8. Click Get Status & Statistics to reveal the DPD status and statistics for the respective transmit channel (see Figure 246).
9. Click Reset DPD, as shown in Figure 246, to apply a full reset to the DPD.
10. From the functional window in Figure 246, the user can fetch the model on the device by clicking Fetch Model from M Table and
Save As and Fetch Model from C Table and Save As.
11. To fetch the DPD tracking configuration that the chip is currently in, click Get Tracking Config in the same window.
22770-242
To change the DPD model or apply a different tracking configuration parameter, take the following steps:
1. Clear the transmit channel under consideration in Figure 245 and click Enable DPD on selected channels (only) to disable the DPD
tracking.
2. Click Reset DPD to apply a full reset.
3. Load the model file from the PC (model files are provided by Analog Devices). Ensure that the real coefficient of the linear term (i =
1, j = 1, k = 0) is set to 1.
4. Configure the parameters in the DPD Tracking Config.
5. Select the desired transmit channel to apply the settings to (Figure 245).
6. Click Apply Tracking Config, as shown in Figure 245, to apply the DPD tracking configuration.
7. Apply DPD model on the M or C tables by clicking Apply Model on Device from M Table and Apply Model on Device from C
Table buttons (see Figure 245).
8. Click Enable DPD on selected channels (only) to enable DPD tracking.
BASEBAND
22770-243
DUC DPD DAC PA
SAMPLES
It is highly desirable to drive the power amplifier at the highest input power possible without having the power amplifier saturate. Most
modern communications protocols such as LTE are OFDM-based in which the final waveform is an orthogonal summation of subcarriers
that carry information, and where each subcarrier has its own center frequency and modulation scheme. In the time domain, sometimes
the peaks of these subcarriers can align to produce an aggregate large OFDM waveform peak (see Figure 251).
SUBCARRIER 0
1.0
0.8
0.6
0.4
0.2
AMPLITUDE
–0.2
–0.4
–0.6
–0.8
–1.0
0 1 2 3 4 5 6 22770-244
TIME ×10–3
0.8
0.6
0.4
0.2
AMPLITUDE
–0.2
–0.4
–0.6
–0.8
–1.0
22770-345
0 1 2 3 4 5 6
TIME ×10–3
0.8
0.6
0.4
0.2
AMPLITUDE
0
–0.2
–0.4
–0.6
–0.8
–1.0
22770-346
0 1 2 3 4 5 6
TIME ×10–3
22770-245
Figure 251. Example illustration of Orthogonal Summation of Subcarriers Causing Large Peaks in an OFDM Waveform
These peaks increase the overall dynamic range needed for the OFDM signal through a signal chain, which leads to an increase in the
PAR of the signal.
Modern communication power amplifiers used to amplify such OFDM waveforms are only linear for a certain power range. Most of the
input signal (average power) are within this linear range. However, the signal can have peaks that exceed the power amplifier linear
operation range. To avoid saturation of the output signal because of these peaks, the user can potentially attenuate the desired signal. This
method ensures that the range required by the signal is within the power amplifier linear range. However, this method is undesirable as it
reduces the average power at the expense of maintaining a given PAR, which makes the system less efficient. An alternative to attenuation
is to use CFR where, instead of attenuating the whole signal, the user attenuates portions of the signal that are above the power amplifier
linear range. This method results in a constant output power while reducing the PAR and thus ensuring that the signal remains within the
power amplifier linear range (see Figure 252 for a summary).
PA Psat SIGNAL ATTENUATION CREST FACTOR REDUCTION
MAGNITUDE
22770-246
TIME
It is important to note that CFR leads to higher in-band and out of band noise levels. This effect results in EVM degradation while also
increasing the noise power spectral density, which results in an increase in ACLR. It is important to optimize the CFR algorithm to make
sure that the CFR block impact is within the user system level specifications (derived from 3GPP specifications or other regulatory standards).
Є0 Є1
THRESHOLD
MAGNITUDE
PRE-CALCULATED
SPECTRALLY
SHAPED PULSE
p[n]
l0 l1
N
DELAY FIFO
22770-247
COMPLEX SIGNAL
The complex IQ signal (transmitter data) goes into a variable delay FIFO and correction is applied at its output. The input data also goes
into an interpolator, which can interpolate by 1×, 2×, or 4× times the input sample rate. This interpolated data is then fed into a peak
detector. The peak detector determines the location of all peaks in the signal and the delta by which they exceed the programmable
threshold. This information is then fed into a linear system solver. These peaks can be corrected using a precomputed spectrally shaped
pulse (also called correction pulse) which is stored in a pulse RAM. Multiple peaks can be simultaneously cancelled by time shifting and
combining these spectrally shaped pulses.
The linear system solver calculates the correction coefficients that get combined with the input signal (at the output of the delay FIFO) to
produce an output signal which has a significantly lower peak to average ratio. This corrected output signal is then passed to two more
similar CFR engines to correct missed peaks, as well as peaks that need further correction after passing through the first engine.
The CFR block within the transceiver consists of three cascaded CFR engines followed by a hard clipper to clip the few peaks that are
skipped by all three CFR engines. At the output of each engine, there is a multiplexer that can be programmed to bypass CFR or apply a
correction (shown in Figure 254).
A A A A
B B B HARD
CFR ENGINE 1 CFR ENGINE 2 CFR ENGINE 3
INPUT C C C CLIPPER C OUTPUT
SIGNAL
22770-249
When the waveform loads, it is transmitted using the play button on the transmit tab. As an example, an LTE 20 MHz waveform with
PAR of 12.2 dB is uploaded as shown in Figure 255. The uncorrected waveform complementary cumulative distribution function (CCDF)
is shown in Figure 256.
22770-250
Figure 256. CCDF of Example 20 MHz LTE Signal with PAR of 12.2 dB (Uncorrected Waveform)
The DFE tab is used in the TES to set up the CFR engines as shown in Figure 257.
22770-251
Load File can be used to load the correction pulse (see Figure 258). This correction pulse is specific to the waveform being used (LTE 20 MHz
in the example shown) and is sampled at the peak detection rate. The CFR peak threshold is set to 0.47, which corresponds to a target
PAR calculated using the following equation:
Target PAR = 0 × log10 (CFR Peak Threshold/RMSInputSignal)
22770-252
Figure 258. Enabling CFR Using TES
When Apply is clicked (which runs the CFR initial calibration), the CFR engines enable, and the corrected waveform can be observed on
the spectrum analyzer, as shown in Figure 259.
22770-253
As shown in Figure 259, the corrected CCDF curve has a PAR of 8.75 dB, which corresponds to the CFR peak threshold that was
previously set. No spectral regrowth is shown and the desired PAR can be achieved.
Rev. 0 | Page 315 of 336
UG-1727 ADRV9026/ADRV9029 System Development User Guide
Impact on EVM
This section describes the impact of using the CFR engines within the transceiver on EVM performance. The same LTE 20 MHz tone
(PAR = 12.67 dB) used in the previous section is also used in this example. The setup information for this waveform is as follows:
• Carrier 1 center frequency = 0 MHz
• Output sample rate = 245.76 MHz
• DAC resolution = 16
• Output data format = 2s Complement
• Scaling = 0 dB
• Modulation = 64QAM
• Test model = 3.1
• Final PAR (dB) = 12.2
The EVM observed before applying the CFR is shown in Figure 260.
22770-254
Applying the CFR settings discussed in the Typical Procedure to Set Up CFR Using the GUI section where the target PAR is set to 8 dB,
the degradation observed in EVM is shown in Figure 261.
22770-255
Figure 261. Observed EVM After Applying CFR (Target PAR = 8 dB)
We can see above that the rms EVM degraded from 0.6% to 2% due to application of CFR. From a quick sweep of the rms EVM at
different target PAR, we see the trend shown in Figure 262. Note that different systems have different requirements for maximum
tolerable EVM degradation due to CFR, which would drive the minimum achievable PAR for a given waveform configuration. Note also
that the performance shown here is highly dependent on the “goodness” of the CFR correction pulse. With a different pulse, we should
expect a different result.
6
4
EVM (%rms)
0
22770-256
6 7 8 9 10 11 12 13
TARGET PAR (dB)
Tx ATTENUATION
FE
x(n) DPD
DATA FROM DUC 1, 2, 4 Tx
CFR ACTUATOR PA FILTER/DUPLEXER
Tx ATTEN CONTROL
FIRMWARE
y(n)
ARM-C ORx
22770-257
Figure 263. CLGC Simplified Block Diagram
y +
LOOP GAIN ESTIMATION V
+
22770-258
AND Tx ATTEN CTRL
The signal path from the reference baseband transmit input to the observed data for loop gain estimation can be divided into four
sections, as listed in Table 282. The total loop gain observed at the observation receiver includes the front-end attenuation out of the
transceiver, the gain of the power amplifier, the coupling attenuation for feedback, and the observation receiver front-end attenuation.
With the loop gain estimated, a loop gain error can be defined as follows:
Loop Gain Error = Estimated Loop Gain/Expected Loop Gain
The estimated loop gain is determined by the CLGC algorithm, and the expected loop gain is configured by the user. The objective of the
CLGC is to reduce the loop gain error ratio to 1 dB or 0 dB. The CLGC converges to the expected loop gain by tuning the transceiver
front-end transmit attenuation, as shown in Figure 264.
ENABLING THE CLGC TRACKING CALIBRATION
The CLGC tracking calibration can be enabled using the adi_adrv9025_TrackingCalsEnableSet() API. The user can pass the CLGC tracking
calibration mask values defined in the adi_adrv9025_cals_types.h file as argument to the adi_adrv9025_TrackingCalsEnableSet() API. The
mask values are described in Table 283.
Table 284. CLGC Tracking Calibration Enable Example Arguments to the adi_adrv9025_TrackingCalsEnableSet() API
Parameter Data Type Description Value
enableMask uint64_t The 64-bit ‘OR’ed mask that consists of tracking calibrations to (ADI_ADRV9025_TRACK_TX1_CLGC |
enable/disable ADI_ADRV9025_TRACK_TX2_CLGC |
ADI_ADRV9025_TRACK_TX3_CLGC |
ADI_ADRV9025_TRACK_TX4_CLGC)
enableDisableFlag Enumeration Indicates whether the mask value passed in the enableMask ADI_ADRV9025_TRACKING_CAL_ENABLE
parameter is to be used for enabling or disabling the tracking
calibration
Similarly, to disable the CLGC tracking calibration, the user can set the argument enableDisableFlag to an enumeration value
ADI_ADRV9025_TRACKING_CAL_DISABLE to disable the CLGC tracking calibration on the requested channels.
Rev. 0 | Page 320 of 336
ADRV9026/ADRV9029 System Development User Guide UG-1727
Note that when the CLGC tracking calibration is enabled, the CLGC does not actively control the loop gain. The user must explicitly
configure the loop gain control enable via the adi_adrv9025_ClgcConfigSet() API to enable actively control the CLGC loop gain. Details
regarding the CLGC modes of operation are described in the CLGC Measurement section.
The CLGC tracking calibration works in synchronization with the DPD algorithm, and the CLGC is scheduled once per second by the firmware.
CLGC MODES OF OPERATION
The CLGC functionality can operate in either of the following two modes:
• Passive loop gain measurement. This mode of operation is typically activated to determine the initial operating point of the power
amplifier. When a transmitter is activated, the user determines the power amplifier operating point by sending traffic and measuring
the overall loop gain from observation receive to transmit. During this stage, the user can take advantage of the passive loop gain
measurement mode in which the CLGC algorithm measures the loop gain without actively adjusting the transmit front-end
attenuation. When the ideal operating point is determined, the user can then enable active loop gain control mode.
• Active loop gain control. In this mode, the CLGC measures the loop gain from observation receive to the transmit baseband and
adjusts the transmit front-end gain to maintain the loop gain. This mode of operation is typically activated during runtime when the
initial operating points are determined, and the initial observation receive gain and transmit attenuation settings are configured. For
the active loop gain control mode, the user must configure the expected loop gain using the adi_adrv9025_ClgcConfigSet() API
through the clgcExpectedLoopGain_dB parameter in the adi_adrv9025_ClgcConfig_t data structure.
The user can select the CLGC mode of operation through the adi_adrv9025_ClgcConfigSet() API using the clgcEnableGainControl
parameter in the adi_adrv9025_ClgcConfig_t data structure, as shown in Table 285.
Table 285. CLGC Mode of Operation Configuration
clgcEnableGainControl CLGC Mode Activated
0 Passive loop gain measurement
1 Active loop gain control
Figure 265 captures a typical CLGC bring up sequence during which the passive and active loop gain control modes are active at various stages.
In passive loop gain measurement mode, the user can retrieve the observation receive rms power and transmit rms power as well as the
loop gain estimated by the CLGC algorithm using the adi_adrv9025_ClgcStatusGet() API. The adi_adrv9025_ClgcStatus_t structure has
the clgcLoopGain, clgcTxRmsPower, and clgcOrxRmsPower members that can be monitored to adjust the initial operating point of the
power amplifier and determine the desired loop gain.
The passive loop gain measurement mode is mostly used in a factory calibration setting. The optimal operating point for the power amplifier is
determined, the loop gain, transmit attenuation and observation receive gain values are noted, and the values are used in the field.
CLGC TRACKING
CAL ENABLE –
PASSIVE LOOP GAIN
MEASUREMENT
ClgcStatusGet()
FOR LOOP GAIN,
Tx AND ORx
RMS POWER
PASSIVE
LOOP GAIN
MEASUREMENT
YES
ClgcConfigSet() –
ACTIVE
SET DESIRED LOOP GAIN, LOOP GAIN
ENABLE ACTIVE LOOP CONTROL
GAIN CONTROL MODE
22770-259
BATCH 1 BATCH 2
Figure 266. Transmit and Observation Receive Qualifying Threshold for CLGC Measurement
The complete CLGC measurement cycle for a single update period is shown in Figure 267. The flowchart explains the measurement, and
its interactions with the measurement parameters are described in Table 286. Note that the CLGC only captures samples until the
transmit/observation receive threshold and the observation receive SNR criteria are met. When the threshold and SNR criteria are met,
the CLGC proceeds to measure the loop gain and does not capture any further samples.
CAPTURE A BATCH
OF SAMPLES FOR A
TIME PERIOD DELAY FOR 3ms
SPECIFIED BY AND RETRY
adi_adrv9025_ClgcConfig_t.
clgcMeasurementBatchTime_us
THE QUALIFYING THRESHOLDS
ARE CONFIGURED BY
THE USER THROUGH NO
adi_adrv9025_ClgcConfig_t.
clgcTxQualifyingThreshold_dBFS,
adi_adrv9025_ClgcConfig_t. ORx AND Tx
clgcTxQualifyingThreshold_dBFS CAPTURED DATA NO NUMBER OF
MEETS THE THRESHOLD RETRIES >5
CRITERIA?
YES YES
YES
NO YES
22770-261
END OF CLGC SETUP
Figure 268. CLGC Loop Gain Convergence for 2.8× Step Size
Figure 269 represents the complete CLGC update cycle including the measurement and transmit attenuation control for a single CLGC update.
The flow diagram represents the measurement and update for a single CLGC update cycle.
CAPTURE A BATCH
OF SAMPLES FOR A
TIME PERIOD DELAY FOR 3ms
SPECIFIED BY AND RETRY
adi_adrv9025_ClgcConfig_t.
clgcMeasurementBatchTime_us
NO
ORx AND Tx
CAPTURED DATA
HAS 30 CONTINUOUS YES NUMBER OF
SAMPLES BELOW RETRIES >5
THE THRESHOLD?
NO YES
YES
NO YES
22770-263
END OF CLGC SETUP
22770-264
Figure 270. VSA Demodulated 5GNR TM2 Signal Under Test
Figure 271. Time and Frequency Resource Block Allocations of 5GNR TM2 Signal Under Test
22770-266
Figure 272. Frequency Domain Spectrum of the Subcarriers
22770-267
Figure 273. Time Domain View of the 5GNR TM2 Signal Under Test
39
GAIN (dB)
38
37
36
35
34
33
32
31
30
22770-268
10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
POUT (dBm)
Figure 274. SKY66397 Gain vs. Pout over varios Operating Frequency
40
30
20
S21 (dB)
10
–10
–20
22770-269
1200 1700 2200 2700 3200 3700 4200
FREQUENCY (MHz)
START
CAPTURE Tx
AND ORx DATA
NO
Tx/ORx
NO THRESHOLD
NUMBER OF CRITERIA SATISFIED,
BATCHES >512? SNR CRITERIA
MET?
YES YES
LOOP GAIN
RETURN ERROR, ESTIMATION
WAIT FOR NEXT AND
ITERATION CORRECTION
22770-270
FINISH
2.5
2.0
1.5
1.0
0.5
22770-271
0
0 5000 10000 15000 20000 25000 30000 35000 40000
Figure 278. Fully Occupied TM3.1 Signal, Time and Frequency Resource Block View
2.0
1.5
1.0
0.5
22770-273
0
0 5000 10000 15000 20000 25000 30000 35000 40000
Figure 279. CLGC Loop Gain vs. Time, with CLGC Sampling Period Increased to 1.5 ms
CLGC RECOMMENDATIONS
A recommendation for the user to overcome the issue described in Analysis of Results With 10 µs Batch Sampling Period section is to
tune the CLGC sampling period to be at least equal to the time period of minimum number of symbols during which they expect to see a
good variety in subcarrier frequencies across the carrier bandwidth, so as to capture the power amplifier gain across frequencies as
described in the Results With Increased CLGC Sampling Period section.
In 5G NR traffic carrying only synchronization and reference symbols for channel estimation, there can be several different combinations
of demodulation reference symbols (DMRS) locations, number of symbols carrying DMRS, and up to four bandwidth parts in a single
carrier bandwidth.
Given the different combinations and frequencies of reference symbols, an approach to determine the CLGC sampling period is to carry
out a statistical analysis of the signal that can be considered a tough case and use that analysis as a starting point for the CLGC sampling
period. A signal such as TM2 used in this case, with sparsely populated subcarriers at the edges of the carrier bandwidth, can qualify as a
tough case for the CLGC.
In the signal under test described in Signal Under Test section where the power is distributed across resource blocks that are sparse, for
average power level of the captured samples to be close to the average frame power level, resource blocks in different subcarrier
frequencies must be accounted for. This ensures a sufficient statistical probability of different subcarriers being engaged, and therefore a
variety in gain response of the power amplifier seen by the CLGC algorithm.
A statistical analysis of the NR TM2 signal described in the Signal Under Test section is described in Table 294. The expected value
(average) of the waveform over 1 frame = −37.1 dBFS A statistical analysis of the 5GNR TM2 signal under test with different moving
average durations yields the results in Table 294.
Table 294. Statistical Analysis of Moving the Average of 5GNR TM2 Signal Under Test
Sl Number Moving Average Duration (µs) Mean (dBFS) Standard Deviation (dB)
1 10 −36.5 2.95
2 100 −37.55 1.49
3 1000 −37.14 0.012
Compare the statistics from a TM2 signal from 1 with a fully filled TM3.1 NR100 signal in Figure 278 that has a rms value of −12 dBFS
per frame. A 10 µs moving average of the TM3.1 NR100 signal results in a mean of −11.99 dBFS and a standard deviation of 0.12 dB,
which is close to the frame rms of −12 dBFS.
To further illustrate the point of Table 294, the distribution of moving average computed for the waveform under test for an average
duration equal to 10 µs, 100 µs. and 1000 µs is shown in Figure 280 and Figure 281. The standard deviation decreases and convergence
towards the expected value increases as the averaging duration increases for the signal under test.
0.25
0.20
PDF
0.15
1.00
0.05
22770-274
0
–45 –40 –35 –30
0.9
0.8
0.7
0.6
PDF
0.5
0.4
0.3
0.2
0.1
22770-275
0
–37.9 –37.8 –37.7 –37.6 –37.5 –37.4 –37.3 –37.2 –37.1 –37.0 –36.9
The cumulative distribution function of the waveform for different averaging durations also provides insight into averaging duration that
can ensure stability for the signal under test by engaging different subcarriers across frequencies in a CLGC sampling period.
With the averaging duration set to 1 ms, the CDF of the signal is guaranteed to lie between −37.2 dBFS to −37.1 dBFS for 99.83% of the time.
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
22770-276
0.1
–40 –38 –36 –34 –32 –30
0.8
0.6
0.4
0.2
22770-277
0
–40 –38 –36 –34 –32 –30
0.8
0.6
0.4
0.2
22770-278
0
–40 –38 –36 –34 –32 –30
I2C refers to a communications protocol originally developed by Philips Semiconductors (now NXP Semiconductors).
ESD Caution
ESD (electrostatic discharge) sensitive device. Charged devices and circuit boards can discharge without detection. Although this product features patented or proprietary protection
circuitry, damage may occur on devices subjected to high energy ESD. Therefore, proper ESD precautions should be taken to avoid performance degradation or loss of functionality.
Authorized Distributor