AD738x_FMC HDL project

Overview

The AD7380/ AD7381 are a 16-bit and 14-bit pin-compatible family of dual simultaneous sampling, high speed, low power, successive approximation register (SAR) analog-to-digital converters (ADCs) that operate from a 3.3 V power supply and feature throughput rates up to 4 MSPS.The analog input type is differential for the AD7380, AD7381, AD4680, AD4681, AD7380-4, AD7389-4, AD7381-4 can accepts a wide common-mode input voltage, and is sampled and converted on the falling edge of CS.

The AD7383, AD7384, AD4682 and AD4683 have the pseudo-differential input while the AD7386, AD7387, AD7388, AD4684 and AD4685 have single-ended input. The AD7380 family has optional integrated on-chip oversampling blocks to improve dynamic range and reduce noise at lower bandwidths. An internal 2.5 V reference is included. Alternatively, an external reference up to 3.3 V can be used.

The conversion process and data acquisition use standard control inputs allowing for easy interfacing to microprocessors or DSPs. It is compatible with 1.8 V, 2.5 V, and 3.3 V interfaces, using a separate logic supply.

The dual AD7380, AD7381, AD4680, AD4681, AD7383, AD7384, AD4682, AD4683, AD7386, AD7387, AD7388, AD4684 and AD4685 family are available in a 16-lead 3mm x 3mm LFCSP package while the quad generics AD7380-4, AD7389-4, and AD7381-4 are available in 4mmx4mm LFCSP package. Both the duals and quad generic operate in specified from -40°C to +125°C temperature range.

Applications:

  • Motor control position feedback

  • Motor control current sense

  • Data acquisition system

  • EDFA applications

  • I and Q demodulation

  • SONAR

  • Power Quality

Supported boards

Supported devices

Supported carriers

Block design

Block diagram

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

AD738X_FMC block diagram

Configuration modes

The ALERT_SPI_N configuration parameter defines if a known pin will operate as a serial data output pin or alert indication pin. By default it is set to 0. Depending on the required pin functionality, some hardware modifications need to be done on the board and/or make command:

In case of the Serial Data Output Pin functionality:

~$
make ALERT_SPI_N=0

In case of the Alert Indication Output Pin functionality:

~$
make ALERT_SPI_N=1

The NUM_OF_SDI configuration parameter defines the number of SDI lines used: {1, 2, 4}. By default is set to 1.

For the ALERT functionality, the following parameters will be used in make command: ALERT_SPI_N.

For the serial data output functionality, the following parameters will be used in make command: ALERT_SPI_N, NUM_OF_SDI.

Jumper setup

Jumper/Solder link

Default Position

Description

LK1

1

Use internal -2.5 V from U9 for AMP_PWR-

LK2

1

Use internal 5 V from U8 for AMP_PWR+.

LK3

1

Use 12 V power supply from FMC

LK4

3

Use internal +3V3 from U3 for VREF

LK5

3

Use internal 2.3 V from U6 for VLOGIC

JP1

1 (SMD RES)

Connect external SubMiniature Version B (SMB) Connector J1 to the A1 buffer amplifier

JP2

1 (SMD RES)

Connect internal signal from A2 to ADC U10 input AINA-

JP3

1 (SMD RES)

Connect internal signal from A2 to ADC U10 input AINA+

JP4

3 (SMD RES)

The REFIO pin is driven with the external on board reference

JP5

1 (SMD RES)

Use internal +3V3 from U2 for VCC.

JP6

1 (SMD RES)

Connect external SMB Connector J2 to the A1 buffer amplifier

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 CPU/Memory interconnects addresses).

Instance

Zynq

spi_ad738x_adc_axi_regmap

0x44A0_0000

axi_ad738x_dma

0x44A3_0000

spi_clkgen

0x44A7_0000

spi_trigger_gen

0x44B0_0000

I2C connections

I2C type

I2C manager instance

Alias

Address

I2C subordinate

PL

iic_fmc

axi_iic_fmc

0x4162_0000

PL

iic_main

axi_iic_main

0x4160_0000

SPI connections

SPI type

SPI manager instance

SPI subordinate

CS

PL

axi_spi_engine

ad738x

0

GPIOs

The Software GPIO number is calculated as follows:

  • Zynq-7000: if PS7 is used, then the offset is 54

GPIO signal

Direction

HDL GPIO EMIO

Software GPIO

Assigned value

Assigned value

(from FPGA view)

Zynq-7000

ALERT_SPI_N=1

ALERT_SPI_N=0

gpio[33]

OUT

33

87

sdid

0

gpio[32]

OUT

32

86

sdib

0

Interrupts

Below are the Programmable Logic interrupts used in this project.

Instance name

HDL

Linux Zynq

Actual Zynq

axi_ad738x_dma

13

57

89

spi_ad738x_adc

12

56

88

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, and then build the project as follows:

Linux/Cygwin/WSL

~$
cd hdl/projects/ad738x_fmc/zed
~/hdl/projects/ad738x_fmc/zed$
make ALERT_SPI_N=0 NUM_OF_SDI=4

The result of the build, if parameters were used, will be in a folder named by the configuration used:

if the following command was run

make ALERT_SPI_N=0 NUM_OF_SDI=4

then the folder name will be:

ALERTSPIN0_NUMOFSDI4

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

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.