AD9656-FMC HDL project

Overview

The AD9656 is a quad 16-bit, 125 MSPS analog-to-digital converter (ADC) featuring an on-chip sample and hold circuit. It is designed to be low cost, low power and compact, making it easy to use.

AD9656 operates at a conversion rate of up to 125 MSPS, optimized for excellent dynamic performance and low power consumption, which is crucial for applications requiring a small package size. It requires a single 1.8 V power supply and supports LVPECL, CMOS, and LVDS-compatible sample rate clocks for full performance. The ADC does not need external reference or driver components for many applications. It also includes features to enhance flexibility and reduce system costs, such as a programmable output clock, data alignment and digital test pattern generation.

An on-chip phase-locked loop (PLL) allows users to provide a single ADC sampling clock. The PLL multiplies the ADC sampling clock to produce the corresponding JESD204B data rate clock. The configurable JESD204B output block supports up to 8.0 Gbps per lane. JESD204B output block supports one, two, and four lane configurations. The SPI control offers a wide range of flexible features to meet specific system requirements

Supported boards

Supported devices

Supported carriers

Evaluation board

Carrier

FMC slot

EVAL-AD9656

ZCU102

FMC HPC0

Block design

Block diagram

AD9656-FMC/ZCU102 block diagram

The Rx links (ADC Path) operate with the following parameters:

  • Rx Deframer parameters: L=4, M=4, S=1, NP=16, N=16

  • Dual link: No

  • RX_DEVICE_CLK: 62.5 MHz

  • REF_CLK: 125MHz

  • JESD204B Lane Rate: 10Gbps

  • QPLL0 or CPLL

AD9656 FMC Card block diagram

AD9656-FMC card block diagram

Clock scheme

The AD9656 ADC’s default clock input is from an on-board 125MHz crystal oscillator, which goes through a transformer-coupled circuit to minimize jitter. The AD9656 has an internal clock divider (ratios 1-8) for higher frequency clocks.

There are two ways to configure the clock source for AD9656:

  1. Default Configuration (On-board Oscillator):

    • The board uses a 125MHz crystal oscillator (Y801) through a transformer-coupled input network.

  2. Using an External Clock Source:

    • Remove C302 (optional) and Jumper J304: This disables the on-board oscillator.

    • Attach the external clock source to the SMA connector labeled CLOCK+ (J302). The external clock should be a clean signal generator, typically ~2.8V p-p or 13 dBm sine wave input.

For more details, check EVAL-AD9656 schematic.

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

ZynqMP

rx_ad9656_tpl_core

0x84A0_0000

axi_ad9656_rx_xcvr

0x84A6_0000

axi_ad9656_rx_jesd

0x84AA_0000

axi_ad9656_rx_dma

0x9C40_0000

SPI connections

SPI type

SPI manager instance

SPI subordinate

CS

PS

SPI 0

AD9656

1

PS

SPI 0

AD9508

0

PS

SPI 0

AD9953

1

Interrupts

Below are the Programmable Logic interrupts used in this project.

Instance name

HDL

Linux ZynqMP

Actual ZynqMP

axi_ad9656_rx_jesd

12

108

140

axi_ad9656_rx_dma

13

109

141

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.

Linux/Cygwin/WSL

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

Below are the parameters that are used to configure this project, on ZCU102.

  • JESD_MODE 8B10B

  • RX_NUM_OF_LANES 4

  • RX_NUM_OF_CONVERTERS 4

  • RX_SAMPLES_PER_FRAME 1

  • RX_SAMPLE_WIDTH 16

  • RX_SAMPLES_PER_CHANNEL 2

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.