-
Notifications
You must be signed in to change notification settings - Fork 1
AD FMCDAQ2 Platform FPGA Architecture
The kit is configured to allow the user to send data from the Intel® Arria® 10 SX FPGA to the AD9144’s DAC using the JESD204B serial interface and FMC (FPGA Mezzanine Card) connectors, with the FMCDAQ2-EBZ Evaluation Board connected to the iWave iW-RainBow-G24D Development Kit. It is set up to send data from the AD9680’s ADC back to the Arria 10 by the same method. By attaching two RF cables, the analog outputs from the AD9144 DACs can be looped back to the AD9680 ADC inputs forming a complete closed system. Using Analog Devices’ IIO Oscilloscope application on a host PC, the user can set the inputs generated by the Arria 10 and view the outputs on the return path.
The FMCDAQ2-EBZ derives power from the iWave Carrier Board via the FMC connector. The AD9523-1 low-jitter clock generator is available on the EVB, and its reference clock can be sourced from either an external clock or the 125MHz oscillator onboard the EVB. The clocks for the AD9144 and AD9680 converters and the FPGA are generated by the AD9523-1. The FPGA’s clock is supplied through the FMC.
The FPGA provides many capabilities in this kit. The primary means of configuring the DAC outputs and receiving the ADC inputs happens via dedicated IP blocks in the FPGA fabric. This also provides the gigabit transceivers necessary to communicate to the FMCDAQ2’s JESD204B-capable DAC and ADC.
A wired Ethernet connection between the FPGA and the host PC is used to transfer the data to and from the host IIO Oscilloscope application and the Linux OS running on the Arria-10 SoC HPS in the FPGA.
The data sent out from the FPGA to the DAC is supplied from one of two sources: the FPGA can either create a digital sine wave internally via its Direct Digital Synthesizer block (DDS), or read in an externally supplied data file. From here the digital data is packaged and sent to the JESD204B IP block inside the FPGA, where it is configured per the JESD204B standard. The serialized data is then transmitted to the DAC over an FPGA Mezzanine Card (FMC) connection on four 10 Gbps channels. Once the data has been received and decoded by the JESD204B DAC, the analog signals are sent to a pair of RF SMA connectors; this is defined as the transmit path.
For a closed loop system, the signals from the DAC’s SMA connectors are transmitted over RF cables to SMA connectors connected to the inputs of the ADC. The ADC takes the analog signals and converts to the serialized digital JESD204B format, then sends this back to the FPGA over the FMC connection using four additional 10Gbps channels; this is the receive path.
Once the data is captured in the FPGA it is sent over the gigabit Ethernet connection to the host PC running the IIO Oscilloscope application, where the results can be viewed in the time and frequency domains or as a constellation plot.
The JESD204B interface between the Arria-10 HPS and the FMCDAQ2 ADC’s and DAC’s comprises of 2 Transmit (TX) path and 2 Receive (RX) paths. The following sections give a brief description of what each block does. More detailed description of the JESD204B operation can be found on the ADI website: https://www.analog.com/en/technical-articles/understanding-layers-in-jesd204b-specification.html
The TX path has three (3) possible start points:
- Using the IIO Oscilloscope application running on a host PC, along with a gigabit Ethernet cable connected from the PC to the Arria 10 SoC FPGA deposits data in the DDR4 memory to be fetched by the TX DMA block,
- Digital sine wave in the 0-500MHz range generated from the FPGA’s internal DDS frequency synthesizer blocks (TX Channel),
- Data file with a digital signal representation is selected. The TX DMA fetches that data from the DDR4 and sends it downstream. Inside the Arria 10 SX, the digital signal is converted into the JESD204B format using Analog Devices’ IP (128-bit bus at 250MHz). It is then sent out across 4 lanes to an FMC connector on the iWave iW-RainboW-G24M kit at a rate of 10Gbps (4 lanes @ 10Gbps each). Refer to TX Path figure.
The data flows through the corresponding FMC connector on the AD-FMCDAQ2-EBZ board and into the AD9144’s multi-channel high-speed DAC where it is converted from the JESD204B standard to the proper digital format prior to being converted to analog. The DAC generates both the I (in-phase) and Q (quadrature) signals used for quadrature amplitude modulation (QAM) of the RF signal, converts it to analog and sends each signal out via SMA RF connectors connected to RG316 RF coaxial cables.
Only 2 of the 4 DAC channels on the AD9144 are used.
The axi_ad9371_tx_dma module uses a 128-bit memory-mapped AXI4 source interface, which is a slave to the HPS; and a 128-bit streaming AXI4 destination master interface.
The avl_ad9144_fifo module sits between the axi_ad9144_dma and the util_ad9144_upack modules. It can optionally be bypassed. It accepts data from two (2) sources. The first and primary source is the 128-bit DMA data. The secondary and optional source is the Fabric’s DDR4 controller. The FIFO is 4K deep and 128-bit wide and can handle bursts of 64 words. See JESD204B Tx Path figure.
The util_ad9144_upack module takes a 128-bit data bus. It unpacks and demuxes it and sends it downstream to the axi_ad9144 module to be split into two 64-bit paths to the 2 TX channels.
The dac_jesd204 module contains 2 copies of the ad_ip_jesd204_tpl_dac_channel module. Each of these 2 channel modules receives a 64-bit data pipe from the TX UPACK module representing I data and Q data channels. The user, under processor control, can select one (1) of three (3) data sources to pass through. The module does the following tasks:
- Generate DDS data under processor control,
- Generate a 32-bit pattern under processor control,
- Pass the data from the TX UPACK module,
The jesd204_tx inside of the ad9144_jesd204 module handles data preparation before it goes to the SERDES transceivers in the link layer. This module contains 4 lane submodules where each one handles one (1) 32-bit lane of data to a corresponding transceiver. The lane submodule has optional features, under program control, to scramble the data in order to reduce EMI. If the scrambling is selected in the TX path, the descrambling should be selected in the RX path.
It generates the lane alignment character along with 8B/10B encoding. It also creates and maintains link synchronization. See JESD204B Tx Path figure.
Additional detailed information can be found here
This module contains the PHY in the form of four (4) SERDES transceivers where each transceiver converts a 32-bit parallel data into a 10Gbps serial stream which goes to the AD9144 DAC.
The analog RF signals flow through the two coaxial cables from the TX path and back into the AD-FMCDAQ2 board through two additional SMA RF connectors routed to the AD9680’s 2-channel ADC. The signal is then sampled and digitized and converted back into the JESD204B standard.
Data is sent back to the Arria 10 SX along 4 Serdes lanes at a rate of 10Gbps per lane (40Gbps total) across the FMC connector where it is decoded by Arria 10 FPGA IP blocks. The data leaves the transceivers as a 128-bit bus running at 250MHz.
The received data is then sent to the host PC over the gigabit Ethernet connection. Using the ADI IIO Oscilloscope graphical user interface application on the host, the received data can be viewed in the time domain, frequency domain or as a polar plot.
The RX PHY contains four (4) Serdes transceivers running at 10Gbps. These transceivers get their serial data from the AD9680 ADC and sends 4 32-bit parallel busses to the 4 lane blocks.
There are four (4) Lane modules for processing data from the Serdes transceivers. Each of the lanes handles link synchronization, lane alignment, character replacement, and optionally descrambling the data (if scrambled in the TX). The data goes through an elastic buffer before it exits to the RX Channel in the AD9680_CORE IP block.
Additional detailed information can be found here
The data from the Elastic Buffer enters the AD9680_CORE bloack and goes through a deframer which splits the data into 2 64-bit ports (I and Q) to be forwarded to the 2 RX Channel blocks. Each of the Channel blocks contains 4 data formatters.
The AD9680_CPACK module takes the two (2) 64-bit data streams, along with their associated valid signals, and packs them into a 128-bit bus to most efficiently present them to the RX FIFO.
The AD9680_ADCFIFO module has a 64K x 128 FIFO which holds data from the AD9680_CORE.
The AD9680_DMA sends data from the FIFO to the DDR4 memory on the board.