DAC-FMC-EBZ HDL project

Overview

The DAC-FMC-EBZ HDL project is a wrapper for many DAC-based evaluation boards, all having similar interfaces, which are listed below. Each evaluation board has its particularities, which are supported in this design and can be selected by changing some parameters before building the project.

Supported boards

Supported devices

Supported carriers

Evaluation board

Carrier

FMC slot

AD9135-FMC-EBZ AD9136-FMC-EBZ AD9144-FMC-EBZ AD9152-FMC-EBZ AD9154-FMC-EBZ AD917x-FMC-EBZ

A10SoC

FMCA

VCU118

FMC+

ZC706

FMC HPC

ZCU102

FMC HPC0

Block design

Block diagram

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

DAC-FMC-EBZ block diagram

The data to be sent to DAC can have multiple sources:

DMA source

In cases of high sample rates where the required data rate exceeds the PS-PL interface’s available throughput, the data is transmitted in a loop from a local buffer (dac_fifo) which is loaded once with the DMA from the PS DDR.

For lower sample rates, the DAC FIFO can be placed in bypass mode, in which case the DMA must stream the data from the PS memory.

DDS source

For each DAC channel a tone is generated by a DDS core.

PRBS source

For each DAC channel, one of the following PN sequences can be selected: PN7, PN15, inverted PN7, inverted PN15.

Software-defined pattern source

For each DAC channel, software can set the values that will be driven to the DAC.

Configuration modes

The configuration parameters that can be set along with the make command are:

  • ADI_DAC_DEVICE: specifies the DAC device

    • AD9172 (default)

    • AD9135

    • AD9136

    • AD9144

    • AD9154

    • AD9152

    • AD9171

    • AD9173

  • ADI_DAC_MODE: specifies the JESD operation mode

    • 04 (default)

    • can vary from 00 to 21 depending on the selected device (ADI_DAC_DEVICE)

If the desired parameters are not listed in any of the supported modes the user can configure them trough make parameters:

  • M: number of converters per link

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

  • L: number of lanes per link

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

  • S: number of samples per frame

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

  • F: number of octets per frame

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

  • HD: high-density

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

  • N: converter resolution

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

  • NP: number of bits per sample

    • the value set by the ADI_DAC_MODE (default)

    • according to the datasheet

Mode

JESD parameters

M

L

S

F

HD

N

NP

08

1

4

2

1

1

16

16

09

1

2

1

1

1

16

16

10

1

1

1

2

0

16

16

11

2

8

2

1

1

16

16

12

2

4

1

1

1

16

16

13

2

2

1

2

0

16

16

Mode

JESD parameters

M

L

S

F

HD

N

NP

00

4

8

1

1

1

16

16

01

4

8

2

2

0

16

16

02

4

4

1

2

0

16

16

03

4

2

1

4

0

16

16

04

2

4

1

1

1

16

16

05

2

4

2

2

0

16

16

06

2

2

1

2

0

16

16

07

2

1

1

4

0

16

16

09

1

2

1

1

1

16

16

10

1

1

1

2

0

16

16

Mode

JESD parameters

M

L

S

F

HD

N

NP

04

2

4

1

1

1

16

16

05

2

4

2

2

0

16

16

06

2

2

1

2

0

16

16

07

2

1

1

4

0

16

16

09

1

2

1

1

1

16

16

10

1

1

1

2

0

16

16

Mode

JESD parameters

M

L

S

F

HD

N

NP

00

2

1

1

4

1

16

16

03

2

2

1

2

1

16

16

Mode

JESD parameters

M

L

S

F

HD

N

NP

00

2

1

1

4

1

16

16

01

4

2

1

4

1

16

16

02

6

3

1

4

1

16

16

03

2

2

1

2

1

16

16

04

4

4

1

2

1

16

16

08

2

4

1

1

1

16

16

09

2

4

2

2

1

16

16

10

2

8

2

1

1

16

16

11

2

8

4

2

1

16

16

18

1

4

2

1

1

16

16

19

1

4

4

2

1

16

16

20

1

8

4

1

1

16

16

21

1

8

8

2

1

16

16

Mode

JESD parameters

M

L

S

F

HD

N

NP

00

2

1

1

4

1

16

16

01

4

2

1

4

1

16

16

02

6

3

1

4

1

16

16

03

2

2

1

2

1

16

16

04

4

4

1

2

1

16

16

08

2

4

1

1

1

16

16

09

2

4

2

2

1

16

16

13

2

4

1

1

1

16

16

14

2

4

2

2

1

16

16

15

2

8

2

1

1

16

16

16

2

8

4

2

1

16

16

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

Zynq/Microblaze

ZynqMP

dac_jesd204_xcvr

0x44A6_0000

0x84A6_0000

dac_jesd204_transport

0x44A0_4000

0x84A0_4000

dac_jesd204_link

0x44A9_0000

0x84A9_0000

dac_dma

0x7C42_0000

0x9C42_0000

Instance

A10SoC

dac_jesd204_transport

0x0003_0000

dac_dma

0x0004_0000

dac_jesd204_link.link_reconfig

0x0002_0000

dac_jesd204_link.link_management

0x0002_4000

dac_jesd204_link.link_pll_reconfig

0x0002_5000

dac_jesd204_link.lane_pll_reconfig

0x0002_6000

dac_jesd204_link.phy_reconfig_0*

0x0002_8000

dac_jesd204_link.phy_reconfig_1*

0x0002_9000

dac_jesd204_link.phy_reconfig_2*

0x0002_A000

dac_jesd204_link.phy_reconfig_3*

0x0002_B000

dac_jesd204_link.phy_reconfig_4*

0x0002_C000

dac_jesd204_link.phy_reconfig_5*

0x0002_D000

dac_jesd204_link.phy_reconfig_6*

0x0002_E000

dac_jesd204_link.phy_reconfig_7*

0x0002_F000

Note

  • * - one for each lane, depends on the number of lanes; if L=4, then only _0->_3 will exist.

SPI connections

Important

spi_en is:

  • active HIGH for AD913X, AD91X4, and AD915X evaluation boards

  • active LOW for AD917X evaluation boards

SPI type

SPI manager instance

SPI subordinate

CS

ZC706/ZCU102

A10SoC/VCU118

ZC706/ZCU102

A10SoC/VCU118

PS

PL

SPI 0

SYS_SPI/AXI_SPI

HMC7044

0

PS

PL

SPI 0

SYS_SPI/AXI_SPI

AD913x/AD91x4/AD915x/AD917x

1

PS

SPI 1

PMOD*

0

Note

  • * - only on the ZC706/ZCU102 carriers

GPIOs

GPIO signal

Direction (from FPGA view)

HDL GPIO EMIO

Software GPIO Zynq MP

Software GPIO Microblaze

Software GPIO Arria 10

Xilinx

Intel

pmod_gpio[3:0]*

INOUT

51-48

128-125

51-48

dac_fifo_bypass

OUTPUT

40

40

117

40

8

dac_ctrl[4]

INOUT

25

102

25

dac_ctrl[3]

INOUT

24

35

101

24

3

dac_ctrl[2]

INOUT

23

34

100

23

2

dac_ctrl[1]

INOUT

22

33

99

22

1

dac_ctrl[0]

INOUT

21

32

98

21

0

Note

  • * - only on the ZC706/ZCU102 carriers

GPIO signal

Function

AD91X4/AD915X/AD913X

AD917X

dac_ctrl[4]

NC

NC

dac_ctrl[3]

FMC_TXEN_1

NC

dac_ctrl[2]

NC

FMC_TXEN_1

dac_ctrl[1]

NC

FMC_TXEN_0

dac_ctrl[0]

FMC_TXEN_0

FMC_PE_CTRL

Note

NC - not connected

Interrupts

Below are the Programmable Logic interrupts used in this project.

Instance name

HDL

Microblaze

Linux ZynqMP

Actual ZynqMP

A10SoC

dac_dma

12

13

108

140

dac_dma*

11

30

dac_jesd204_link

10

15

106

138

dac_jesd204_link*

9

28

Note

  • * - only on the A10SoC carrier

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 hdl/projects/dac_fmc_ebz location, choose the desired carrier and run the make command by typing in your command prompt:

The default configuration, regardless of the carrier, is ADI_DAC_DEVICE=AD9172 ADI_DAC_MODE=04.

~$
cd hdl/projects/dac_fmc_ebz/zcu102
~/hdl/projects/dac_fmc_ebz/zcu102$
make

Example: if the AD9152 device is needed and the mode should be 09, the following command should be run:

~$
cd hdl/projects/dac_fmc_ebz/zcu102
~/hdl/projects/dac_fmc_ebz/zcu102$
make ADI_DAC_DEVICE=AD9152 ADI_DAC_MODE=09

Based on the parameters used above, the build will be in a folder named after the configuration called: ADIDACDEVICEAD9152_ADIDACMODE09.

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

Software considerations

DAC - crossbar config

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

DAC phy Lane

FPGA Tx lane / Logical Lane

0

0

1

1

2

2

3

3

4

7

5

4

6

6

7

5

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.