ADRV9026 HDL reference design#

The ADRV9026 is a highly integrated, radio frequency (RF) agile transceiver offering four independently controlled transmitters, dedicated observation receiver inputs for monitoring each transmitter channel, four independently controlled receivers, integrated synthesizers, and digital signal processing functions providing a complete transceiver solution. The device provides the performance demanded by cellular infrastructure applications, such as small cell base station radios, macro 3G/4G/5G systems, and massive multiple in/multiple out (MIMO) base stations.

Supported boards#

Supported carriers#

Evaluation board

Carrier

FMC slot

ADRV9026/ADRV9029

A10SoC

FMCA

ZCU102

FMC HPC1

VCK190

FMCP1

VCU118

FMCP

Block design#

Block diagram#

The data path and clock domains are depicted in the below diagrams:

Configuration modes#

The block design supports configuration of parameters and scales.

We have listed a couple of examples at section Building the HDL project and the default modes for each project.

Note

The parameters for Rx or Tx links can be changed from the system_project.tcl file, located in hdl/projects/adrv9026/$CARRIER/system_project.tcl

\[Lane Rate = Sample Rate*\frac{M}{L}*N'* \frac{10}{8}\]

The following are the parameters of this project that can be configured:

  • JESD_MODE: used link layer encoder mode

    • 64B66B - 64b66b link layer defined in JESD204C

    • 8B10B - 8b10b link layer defined in JESD204B

  • RX_LANE_RATE: lane rate of the Rx link

  • TX_LANE_RATE: lane rate of the Tx link

  • [RX/TX]_JESD_M: number of converters per link

  • [RX/TX]_JESD_L: number of lanes per link

  • [RX/TX]_JESD_S: number of samples per frame

  • [RX/TX]_NUM_LINKS: number of links

Clock scheme#

ADRV9026 ZCU102 clock scheme

CPU/Memory interconnects addresses#

The addresses are dependent on the architecture of the FPGA, having an offset added to the base address from HDL (see more at HDL Architecture).

Instance

ZynqMP

Versal

Microblaze

axi_adrv9026_tx_jesd

0x84A90000

0xA4A90000

0x44A90000

axi_adrv9026_rx_jesd

0x84AA0000

0xA4AA0000

0x44AA0000

axi_adrv9026_tx_dma

0x9c420000

0xBC420000

0x7c420000

axi_adrv9026_rx_dma

0x9c400000

0xBC400000

0x7c400000

tx_adrv9026_tpl_core

0x84A04000

0xA4A04000

0x44A04000

rx_adrv9026_tpl_core

0x84A00000

0xA4A00000

0x44A00000

axi_adrv9026_tx_xcvr

0x84A80000

0xA4A80000

0x44A80000

axi_adrv9026_rx_xcvr

0x84A60000

0xA4A60000

0x44A60000

SPI connections#

SPI type

SPI manager instance

SPI subordinate

CS

PS

spi0

ADRV9026

0

AD9528

1

GPIOs#

ZCU102#

GPIO signal

Direction

HDL GPIO EMIO

Software GPIO

(from FPGA view)

Zynq MP

ad9528_reset_b

INOUT

68

146

ad9528_reset_b

INOUT

67

145

adrv9026_tx1_enable

INOUT

66

144

adrv9026_tx2_enable

INOUT

65

143

adrv9026_tx3_enable

INOUT

64

142

adrv9026_tx4_enable

INOUT

63

141

adrv9026_rx1_enable

INOUT

62

140

adrv9026_rx2_enable

INOUT

61

139

adrv9026_rx3_enable

INOUT

60

138

adrv9026_rx4_enable

INOUT

59

137

adrv9026_test

INOUT

58

136

adrv9026_reset_b

INOUT

57

135

adrv9026_gpint1

INOUT

56

134

adrv9026_gpint2

INOUT

55

133

adrv9026_orx_ctrl_a

INOUT

54

132

adrv9026_orx_ctrl_b

INOUT

53

131

adrv9026_orx_ctrl_c

INOUT

52

130

adrv9026_orx_ctrl_d

INOUT

51

129

adrv9026_gpio[0:18]

INOUT

50:32

128:110

VCU118#

GPIO signal

Direction

HDL GPIO EMIO

Software GPIO

(from FPGA view)

Microblaze

ad9528_reset_b

INOUT

62

62

ad9528_reset_b

INOUT

61

61

adrv9026_tx1_enable

INOUT

60

60

adrv9026_tx2_enable

INOUT

59

59

adrv9026_tx3_enable

INOUT

58

58

adrv9026_tx4_enable

INOUT

57

57

adrv9026_rx1_enable

INOUT

56

56

adrv9026_rx2_enable

INOUT

55

55

adrv9026_rx3_enable

INOUT

54

54

adrv9026_rx4_enable

INOUT

53

53

adrv9026_test

INOUT

52

52

adrv9026_reset_b

INOUT

51

51

adrv9026_gpint1

INOUT

50

50

adrv9026_gpint2

INOUT

49

49

adrv9026_orx_ctrl_a

INOUT

48

48

adrv9026_orx_ctrl_b

INOUT

47

47

adrv9026_orx_ctrl_c

INOUT

46

46

adrv9026_orx_ctrl_d

INOUT

45

45

adrv9026_gpio[0:18]

INOUT

44:26

44:26

Interrupts#

Below are the Programmable Logic interrupts used in this project.

Instance name

HDL

Linux ZynqMP

Actual ZynqMP

axi_adrv9026_tx_jesd

10

106

138

axi_adrv9026_rx_jesd

11

107

139

axi_adrv9026_tx_dma

13

108

140

axi_adrv9026_rx_dma

14

109

141

Microblaze#

Instance name

HDL

Microblaze

axi_adrv9026_tx_jesd

15

15

axi_adrv9026_rx_jesd

14

14

axi_adrv9026_tx_dma

13

13

axi_adrv9026_rx_dma

12

12

Building the HDL project#

The design is built upon ADI’s generic HDL reference design framework. ADI distributes the bit/elf files of these projects as part of the ADI Kuiper Linux. If you want to build the sources, ADI makes them available on the HDL repository. To get the source you must clone the HDL repository.

Then go to the projects/adrv9026 location and run the make command by typing in your command prompt:

Linux/Cygwin/WSL

1user@analog:~$ cd hdl/projects/adrv9026/zcu102
2user@analog:~/hdl/projects/adrv9026/zcu102$ make
3
4user@analog:~$ cd hdl/projects/adrv9026/a10soc
5user@analog:~/hdl/projects/adrv9026/a10soc$ make

The following dropdowns contain tables with the parameters that can be used to configure this project, depending on the carrier used.

Parameter

Default value of the parameters depending on carrier

ZCU102/A10SoC/VCK190/VCU118

JESD_MODE

8B10B

RX_LANE_RATE

10

TX_LANE_RATE

10

RX_JESD_M

8

RX_JESD_L

4

RX_JESD_S

1

TX_JESD_M

8

TX_JESD_L

4

TX_JESD_S

1

A more comprehensive build guide can be found in the Build an HDL project user guide.

Other considerations#

ADC - lane mapping#

Due to physical constraints, Rx lanes are reordered as described in the following table.

ADC phy Lane

FPGA Rx lane / Logical Lane

0

0

1

1

2

2

3

3

DAC - lane mapping#

Due to physical constraints, Tx lanes are reordered as described in the following table.

DAC phy lane

FPGA Tx lane / Logical lane

0

3

1

2

2

0

3

1

Resources#

More information#

Support#

Analog Devices, Inc. will provide limited online support for anyone using the reference design with ADI components via the EngineerZone FPGA reference designs forum.

For questions regarding the ADI Linux device drivers, device trees, etc. from our Linux GitHub repository, the team will offer support on the EngineerZone Linux software drivers forum.

For questions concerning the ADI No-OS drivers, from our No-OS GitHub repository, the team will offer support on the EngineerZone microcontroller No-OS drivers forum.

It should be noted, that the older the tools’ versions and release branches are, the lower the chances to receive support from ADI engineers.