The AD4630-24 and AD4030-24 are part of a family of 16 and 24-bit SAR analog-to-digital converters that support sampling rates of 2 MSPS and 500 kSPS. This family of ADCs offers market-leading linearity and noise performance, enabling an evolution in the performance of ATE, electronic test and measurement, health care and scientific instrumentation systems. The evaluation boards that support these converters have been designed to work with off-the-shelf 3rd party system boards that can be used to manage the data capture process as well as host embedded applications development.
This developer's guide contains information and resource links that are intended to support users that desire to develop a custom application using the ZedBoard. The DUT board may be either the evaluation board for the AD463x/AD403x, or a board that the user has designed. The only requirements for the user designed board are:
1. The board should have an FMC connector.
2. The digital interface through the FMC connector should use the same pin and signal assignments used on the EVAL-AD4630-24FMCZ/EVAL-AD4030-24FMCZ board (see EVAL-AD4630-24 / EVAL-AD4030-24 for schematics). Otherwise, changing these assignments will require a modification of the HDL and a recompile. ADI provides the source files for the FPGA HDL, but it cannot support debug of the user modifications to the source.
3. It is recommended that the board provide a reference clock (100 MHz or less, see the EVAL-AD4630-24FMCZ User Guide for more information on the reference clock requirements.
4. It is recommended to derive the digital IO voltage from the ZedBoard. The EVAL-AD4630-24FMCZ schematics provide an example of this.
5. Optional: The ZedBoard provides a 12 volt supply rail through the FMC connector which can be used to provide the main power supply for the user board. However, the latter may also be powered from a separate external supply.
The user should consult the relevant EVAL-AD463x/EVAL-AD403x eval board user guide to access the basic details of the evaluation board hardware. The evaluation board schematics can be downloaded from the relevant evaluation board web page.
The AD463x/AD403x family uses the Digilent ZedBoard as the default system controller. The ZedBoard web page contains more technical documentation on the board. In addition to the ZedBoard, other 3rd party boards that have an FMC form factor may also be used with the AD463x/AD403x family of boards. As an example, see Arrow's DataStorm DAQ, which uses the Intel Cyclone V SoC.
Figure 1. ZedBoard (EVAL-AD463x/AD4030x system board)
While ADI provides software that runs within the Linux environment on the ZedBoard, it also offers device drivers that can be used with other system boards, with or without an RTOS. These options will be covered in the Software section below.
The AD463x evaluation board connects to the ZedBoard through an FMC connector. This connector hosts the following signal groups
The ZedBoard hosts a Xilinx Zynq7000 class SoC with dual ARM Cortex-9 hard processors and FPGA fabric. The board boots from an SD card that is shipped with each evaluation board. The Software section below provides more information on the software that is provided with the evaluation system.
Two use cases are supported for developing a custom application using the EVAL-AD463x system. They are basically distinguished by the nature of the host processor for the ADC. ADI provides software components that support both use cases. The following table summarizes the use cases and ADI software components.
Table 1. Use cases and supporting SW components
|Host processor||Host Environment||Available SW Components|
|SoC + FPGA||Embedded Linux||Linux image, Linux device drivers, HDL|
|Microcontroller||Embedded RTOS/No RTOS||No OS drivers|
The SD card image that ships with the evaluation board contains multiple files that can be used to reconfigure the personality of the system to match one of the valid operating modes of the ADC. The /boot directory contains a Linux image (see below), a boot.bin file which contains the FPGA configuration (among other files), and a device tree file (device.dtb). The latter two files together define the operating configuration of the system. For most user-developed applications, the configuration files provided on the SD card, along with tools that can be used to set the desired configuration, are sufficient, meaning the user should not need to build a unique Linux image, rebuild HDL, or manually modify the devicetree.dtb file.
The following paragraphs provide additional details on the nature of these files.
(More information on the general Kuiper Linux distribution can be found at ADI Kuiper Linux
To change the ADC operating mode, two optional methods are available. See the section below entitled How to Modify the SD Card Image.
Table 2. BOOT.BIN partitioning for AD4630/AD4030 clocking modes, lane modes and data rates
|Clocking Mode||Lane Mode (per channel)||Data Rate||Requires unique BOOT.BIN|
The following sections will specifically address the Linux driver, No-OS driver, and HDL for the AD463x family.
The user guide for the AD463x family Linux driver can be found here: AD463x Linux Driver User Guide. The user guide provides:
The AD463x HDL user guide can be found here: AD463x HDL User Guide. The HDL user guide provides a high level description of the AD4630 HDL architecture, functionality, a link to the source file repository, and how to build a desired boot.bin configuration. Table 2 above lists all of the preconfigured modes, so in most cases it is not necessary for the user to build a unique boot.bin file. Note: The currently available boot.bin options only support Zone 2 capture, as this enables relaxed timing requirements for the interface. See the ADC data sheet for a description of Zone 2 capture.
The No-OS driver can be used in a bare metal application or in a non-Linux RTOS environment. Some customization, or creation of an adaptation layer for the specific platform may be required. The AD463x No-OS user guide provides a general description of the driver, code documentation, and source code links.
Users that are developing a custom application for the AD4630/AD4030 outside the ACE environment, using the ZedBoard running Linux, can modify the boot image to match one of the existing configurations listed in Table 2. Generating the appropriate boot image can be done using one of two methods. These are described below. Once either method is executed, the boot directory on the SD card will retain the desired boot configuration until such time that the user performs another configuration update.
The AD4630/AD4030 Evaluation Board User Guide contains instructions on how to change the operating configuration of the board using ACE. Note that this method assumes that the DUT board is the standard EVAL-AD4630-24FMCZ board (or AD4030-24 version), supported by an ACE plug-in. If the user is working with a custom AD463x/AD403x board, then the following method should be used.
This method uses a communication terminal application to interface directly to the ZedBoard's USB OTG port. A dialog supported script can be run that allows the user to select the operating parameters for the ADC. These inputs are then used by the script to modify the device tree, select the correct boot.bin file from the SD card subdirectory and copy it to the boot directory, and then reboot the board.
1. Ensure that the USB cable is attached to the USB OTG port on the ZedBoard
2. Power on the ZedBoard and wait for the blue and red LEDs to illuminate. The red LED will periodically flash. This is a “heartbeat” that indicates the system has booted and is running normally.
3. If using a PC running Windows, open Device Manager. If not using Windows, use the appropriate OS utility to verify that the board is recognized by the system.
4. Two USB serial ports should be identified, along with a USB device assigned as “IIO”. Note the port numbers assigned to the serial ports (in this case COM4, COM5).
5. Open a terminal program (MobaXterm is recommended) and configure a serial connection to attach to one of the com ports identified in Device Manager, 115200 baud. When the terminal window opens, the console should display the following:
6. To check the current ADC operating configuration, type eval-ad4630 status at the prompt and then ENTER. This example shows that the ADC is configured for two data (SPI) lanes per channel, SPI clocking mode, SDR, and 24-bit differential data output format.
7. To change the operating configuration, run the command eval-ad4630_dialog at the prompt. The following window should appear. As indicated, use the UP/DOWN keys to change the selection, press the SPACE bar to select, and ENTER to confirm.
8. The three following figures illustrate the remainder of the parameters than can be modified using the dialog.
9. The final dialog window initiates a board reboot with the new configuration. This will run a script that updates the device tree file, copies the appropriate BOOT.BIN file to the /boot directory on the SD card, and then reboots the board.
10. On the ZedBoard, the blue LED may flash a single time. The red LED will extinguish (stop flashing) while the reboot is in process. When the reboot has completed, the red LED will begin to flash again, indicating that the system is up and running. Note: The terminal program may indicate that it has lost the connection to the ZedBoard during the reboot. Follow the terminal program's recovery instructions.
11. The eval-ad4630 status can be used to verify the new configuration.
If SD card contents have been corrupted, or the user desires to create another copy of the SD card image, instructions on how to program the SD card with a replacement/new image can be found at ADI Kuiper Linux with support for ACE.
The following table illustrates the maximum sampling rates that can be achieved based on the device configuration. Note that the FPGA SPI engine only supports Zone 2 data transfers from the AD4630/AD4030.
Table 3. Maximum sampling rate by device configuration
|Clocking Mode||Lane Mode (per channel)||Data Rate||Data format||Max sampling rate|
|SPI||1||Single (SDR)||32-bit||1.75 MSPS (note 1)|
|Dual (DDR)||32 or 24-bit||2 MSPS|
|2||SDR or DDR||32 or 24-bit||2 MSPS|
|4||SDR or DDR||32 or 24-bit||2 MSPS|
|Echo Clock||1||SDR||32-bit||1.75 MSPS (note 1)|
|DDR||32 or 24-bit||2 MSPS|
|2||SDR or DDR||32 or 24-bit||2 MSPS|
|4||SDR or DDR||32 or 24-bit||2 MSPS|
Note 1: The sampling rate in Single lane, 32-bit output formats in SDR mode are limited by the FPGA SPI engine. This is not a limitation of the AD4630/AD4030 device.
PyADI-IIO is an ADI maintained Python library of device specific abstraction modules. Each device module supports the simplified development of Python applications that use IIO by providing an API that takes care of many of the underlying IIO details. This section of the developer's guide will describe information on using the PyADI bindings for the AD4630/AD4030 family.
These instructions assume a fresh installation of all required software
Generic examples for AD463x/AD403x are available in the source repo. The example code can be used for either AD4630-24 or AD4030-24 (and derivatives). Set the device_name parameter to ensure that channel operations are appropriately handled. Basic documentation can be found at API documentation.
Note that python does not automatically scan for usb context or an IP address unless a scan is embedded in the python script. If a ZedBoard is connected via an ethernet cable, then the argument passed in the ADC device instantiation statement is uri=“ip:analog.local” which is the default host name for the ZedBoard (see code example below). If the default hostname of the board has been changed, this should be used instead. If using at USB connection to the board, then pass the IP address for the USB port (see code example for alternative USB connection below). The USB context/IP address can be read from the board by opening a terminal/command-prompt on the PC and entering:
As seen above, the USB argument can be either “usb:1.17.6”, or “ip:169.254.26.1” to instantiate the device.
The generic examples can be downloaded and executed, or custom code (see below) can be created.
# Import library import adi # Setup actual device from ad463x family device_name = "ad4630-24" # #Instantiate ADC if using Ethernet connection adc = adi.ad4630(uri="ip:analog.local", device_name=device_name) #ADC instantiation if using USB #adc = adi.ad4630(uri="usb:1.17.6", device_name=device_name) # To connect via USB # Configure properties adc.rx_buffer_size = 2**12 # Rx Buffer Size adc.sample_rate = 2000000 # Sampling Frequency # Get data data = adc.rx()
A troubleshooting guide can be found here. The latter covers some tips related to ZedBoard startup and the SD card containing the Kuiper Linux image.