×

AD9250评估板、ADC-FMC转接器和Xilinx KC705参考设计

消耗积分:2 | 格式:pdf | 大小:269.62KB | 2021-04-26

5762

分享资料个

This version (20 Jan 2021 08:11) was approved by Michael Hennerich.The Previously approved version (09 Jan 2021 00:49) is available.Diff

AD9250 Evaluation Board, ADC-FMC Interposer & Xilinx Reference Design

Introduction

The AD9250 is a dual, 14-bit ADC with sampling speeds of up to 250 MSPS. It is designed to support communications applications where low cost, small size, wide bandwidth and versatility are desired. The ADC cores feature a multistage, differential pipelined architecture with integrated output error correction logic. This reference design includes the device data capture via the JESD204B serial interface and the SPI interface. The samples are written to the external DDR-DRAM on the carrier. It allows programming the device and monitoring its internal registers via SPI.

A native FMC card with the AD9250 can be found FMCJESDADC1 Board

Supported Devices

Supported Carriers

Quick Start Guide

The reference design zip file contains a bit file and a SDK elf file for a quick demonstration of the programming and data capture. The reference design has been tested with KC705, VC707 and ZC706. The notes below refer to KC705, the procedure is same for the other boards. Please make sure you are using the correct reference design for the board(s) that you have.

Required Hardware

  • KC705/VC707/ZC706 board
  • AD9250-EBZ board & Power supply (AD9250-250EBZ, AD9250-170EBZ)
  • ADC FMC interposer board (CVT-ADC-FMC-INTPZB)
  • Signal/Clock generator (reference clock input, 250MHz)
  • Signal generator (analog input, for data capture)

Required Software

  • Xilinx ISE Design Suite 14.4
  • A UART terminal (Tera Term/Hyperterminal), Baud rate 57600 (115200 for ZC706).

Board Modifications

The reference design contains UCF files for the Rev. B board, CVT-ADC-FMC-INTPZB.

  • NET rxdata_p[1] LOC = “B6”;
  • NET rxdata_n[1] LOC = “B5”;
  • NET rxdata_p[0] LOC = “D6”;
  • NET rxdata_n[0] LOC = “D5”;
  • NET rxsync_p LOC = “C29” | IOSTANDARD = “LVDS_25”;
  • NET rxsync_n LOC = “B29” | IOSTANDARD = “LVDS_25”;
  • NET rxsysref_p LOC = “D29” | IOSTANDARD = “LVDS_25”;
  • NET rxsysref_n LOC = “C30” | IOSTANDARD = “LVDS_25”;
  • NET spi_ctrl LOC = “K13” | IOSTANDARD = “LVCMOS25”;
  • NET spi_csn[0] LOC = “B18” | IOSTANDARD = “LVCMOS25”;
  • NET spi_csn[1] LOC = “A18” | IOSTANDARD = “LVCMOS25”;
  • NET spi_clk LOC = “G17” | IOSTANDARD = “LVCMOS25”;
  • NET spi_mosi LOC = “A17” | IOSTANDARD = “LVCMOS25”;
  • NET spi_miso LOC = “A16” | IOSTANDARD = “LVCMOS25”;

Please do the following modifications on the AD9250 evaluation board.

  • Remove R609
  • Remove R610
  • Remove R604
  • Remove R601
  • Remove R551*
  • Remove R552*
  • Populate R549*
  • Populate R550*

* The reference design uses REFCLK2 as the reference clock source. If the board defaults to REFCLK1, follow these instructions to switch to REFCLK2.

Running Demo (SDK) Program

To begin make the following connections (see image below):


For proper operation, it is important that the steps must be done in this exact order

  1. Connect the AD9250-EBZ board to the FMC Interposer board.
  2. Connect the interposer board to the FMC-HPC connector of KC705/(FMC1-HPC if VC707)/ZC706 board.
  3. Connect power to KC705/VC707/ZC706 and the AD9250-EBZ boards. Make sure both are turned on.
  4. Connect two USB cables from the PC to the JTAG and UART USB connectors on KC705/VC707/ZC706. Do not run/load any software yet.
  5. Connect an external clock source 250MHz (5dBm) to AD9250-EBZ board's J505 SMA connector. Make sure this is active/on.
  6. Connect signal generators to the AIN-A and/or AIN-B, J301/J303 SMA connectors.
  7. Load the FPGA image/SDK with your favorite Xilinx Tool.

The quick start bit file configures the AD9250 for all test modes and verifies the captured data accordingly. After the hardware setup, turn the power on to the KC705/VC707/ZC706 and the AD9250-EBZ boards.

Hardware setup

Run the download.bat script located in the “SDK/SDK_Workspace/bin” folder provided within the HDL Reference Design. This script uses XMD to program the FPGA with the HDL Reference Design and download the Software Reference Design into the DDR.

Note: The download.bat script assumes that the Xilinx ISE Design Suite 14.4 is installed at this path: C:/Xilinx/14.4. If the installation path on your computer is different please modify the script accordingly.

If programming was successful, you should be seeing messages appear on the terminal as shown in figure below. After programming the AD9250, the program checks data capture on various test modes.

Terminal

After the ADC test patterns and PRBS sequences are verified, if no errors are present, the reference design continuously reads data from the ADC. The ADC data can be viewed using the Chipscope project located in the “Chipscope” folder provided in the HDL Reference Design. These are the steps than need to be followed to view the ADC data in Chipscope:

  • open Chipscope and press the Open Cable/Search JTAG Chain button (the leftmost button located under the File menu)
  • open the Chipscope/AD9250.cpj project
  • start the data capture

This is how the output of the ADC looks like.

Chipscope Busplot

Using the HDL reference design

Functional description

The reference design is built on a microblaze based system parameterized for linux. A functional block diagram of the design is given below.

block diagram

The reference design consists of two pcores. The JESD204B core consists of the GTX units and the Xilinx JESD204B IP core. The AD9250 core consists of three functional modules, the ADC interface, a PN9/PN23 monitor and a DMA interface.

The ADC interface captures and buffers data from the JESD204B core. The DMA interface then transfers the samples to the external DDR-DRAM. The capture is initiated by the software. The status of capture (overflow, overrange) are reported back to the software.

The JESD204B core and AD9250 core has an AXI lite interface that allows control and monitoring of the capture process.

The reference design also includes the HDMI cores to run GTX eye scan.

Registers

Please refer to the regmap.txt file in the pcores directory.

Good To Know

The PN9/PN23 sequences are not compatible with O.150. Please use the equations given in the reference design.

Using the Software Reference Design

The Software Reference Design contains an example on how to:

  • Initialize the AD9250 evaluation board
  • Initialize the JESD204B HDL core
  • Test the ADC communication using the test patterns and PRBS sequences generated by the AD9250
  • Capture data from the AD9250 using DMA transfers

The software project contains 2 components: the AD9250-EBZ reference design files and the AD9250 driver. All the components have to be downloaded from the links provided in the Downloads section.

AD9250 Software Driver

Below is presented a short description of all the functions provided in the driver.

Function Description
int32_t ad9250_setup(int32_t spiBaseAddr, int32_t ssNo) Configures the device. Receives as parameters the SPI peripheral AXI base address and the slave select line on which the slave is connected. Returns negative error code or 0 in case of success.
int32_t ad9250_read(int32_t registerAddress) Reads data from a register. Receives as parameter the address of the register to be read and returns the read data or negative error code.
int32_t ad9250_write(int32_t registerAddress, int32_t registerValue) Writes data into a register. Receives as parameters the address of the register to be written and the value to be written into the register. Returns 0 in case of success or negative error code.
int32_t ad9250_transfer(void) Initiates a transfer and waits for the operation to end. Returns the negative error code or 0 in case of success.
int32_t ad9250_soft_reset(void) Resets all registers to their default values. Returns negative error code or 0 in case of success.
int32_t ad9250_chip_pwr_mode(int32_t mode) Configures the power mode of the chip. Receives as parameter the power mode(0 - normal operation, 1 - power-down, 2 - standby). Negative error code or the set power mode.
int32_t ad9250_select_channel_for_config(int32_t channel) Selects a channel as the current channel for further configurations. Receives as parameter the channel index(1 - channel A, 2 - channel B, 3 - channel A and B). Returns negative error code or the selected channel.
int32_t ad9250_test_mode(int32_t mode) Sets the ADC's test mode. Receives as parameter the test mode{0, 1, 2, 3, 4, 5, 6, 7, 8, 15}. Returns the set test mode or negative error code.
int32_t ad9250_offset_adj(int32_t adj) Sets the offset adjustment. Receives as parameter the offset adjust value in LSBs from +31 to -32. Returns negative error code or the set offset adjustment.
int32_t ad9250_output_disable(int32_t en) Disables (1) or enables (0) the data output. Returns the negative error code or the output disable state.
int32_t ad9250_output_invert(int32_t invert) Activates the inverted (1) or normal (0) output mode. Returns the negative error code or the set output mode.
int32_t ad9250_output_format(int32_t format) Specifies the output format. Receives as parameter the output format and returns the negative error code or the set output format.
int32_t ad9250_reset_PN9(int32_t rst) Sets (1) or clears (0) the reset short PN sequence bit(PN9). Returns the negative error code or the set PN9 status.
int32_t ad9250_reset_PN23(int32_t rst) Sets (1) or clears (0) the reset long PN sequence bit(PN23). Returns the negative error code or the set PN23 status.
int32_t ad9250_set_user_pattern(int32_t patternNo, int32_t user_pattern) Configures a User Test Pattern. Receives as parameters the patterns to be configured, range 1..4 and the user's pattern. Returns negative error code or the selected user pattern.
int32_t ad9250_bist_enable(int32_t enable) Enables(1) or disables(0) the Build-In-Self-Test. Returns negative error code or the state of the enable bit.
int32_t ad9250_bist_reset(int32_t reset) Resets the Build-In-Self-Test. Receives as parameters the reset option. Negative error code or the state of the reset bit.
int32_t ad9250_jesd204b_setup(void) Configures the JESD204B interface. Returns negative error code or 0 in case of success.
int32_t ad9250_jesd204b_pwr_mode(int32_t mode) Configures the power mode of the JESD204B data transmit block. Receives as parameter the power mode(0 - normal operation, 1 - power-down, 2 - standby) Returns negative error code or the set power mode.
int32_t ad9250_jesd204b_select_test_injection_point(int32_t injPoint) Selects the point in the processing path of a lane, where the test data will be inserted. Receives as parameter the point in the processing path(1 - 8B/10B Encoder output, 2 - scramble input). Returns negative error code or the status of the data injection point bit.
int32_t ad9250_jesd204b_test_mode(int32_t testMode) Selects a JESD204B test mode. Receives as parameter the test mode{0, 1, 2, 3, 4, 5, 6, 8, 12, 13}. Returns the set test mode or negative error code.
int32_t ad9250_jesd204b_invert_logic(int32_t invert) Inverts the logic of JESD204B bits. Receives as parameter the invert option(1 - invert, 0 - non-invert). Returns negative error code or the set mode.
int32_t ad9250_fast_detect_setup(void) Configures the Fast-Detect module. Returns negative error code or 0 in case of success.
int32_t ad9250_dcc_enable(int32_t enable) Enables DC correction for use in the output data signal path. Receives as parameter the enable option (0 - correction off, 1 - correction on). Returns negative error code or the status of the enable bit.
int32_t ad9250_dcc_bandwidth(int32_t bw) Selects the bandwidth value for the DC correction circuit. Receives as parameter the DC correction bandwidth, range 0..13. Returns negative error code or the state of the bandwidth bits.
int32_t ad9250_dcc_freeze(int32_t freeze) Freezes DC correction value. Receives as parameter the freeze option(0 or 1). Returns negative error code or the status of the freeze bit.

Software Setup

The HDL Reference Design for each supported Xilinx FPGA board contains a folder called SDK_Workspace which stores the Xilinx SDK project files needed to build the no-OS software and also the .bit files with the HDL design that must be programmed into the FPGA. These are the steps that need to be followed to recreate the software project:

  • Copy the SDK_Workspace folder on your PC. Make sure that the path where it is stored does not contain any spaces.
  • Copy the no-OS drivers source code to the SDK_Workspace/sw/src folder.

no-OS driver Source Files

  • Open the Xilinx SDK. When the SDK starts it asks you to provide a folder where to store the workspace. Any folder can be provided.
  • In the SDK select the File→Import menu option to import the software projects into the workspace.

Import Projects

  • In the Import window select the General→Existing Projects into Workspace option.

Existing Projects Import

  • In the Import Projects window select the SDK_Workspace folder as root directory. After the root directory is chosen the projects that reside in that directory will appear in the Projects list. Press Finish to finalize the import process.

Projects Import

  • The Project Explorer window now shows the projects that exist in the workspace and the files for each project. The SDK should automatically build the projects and the Console window will display the result of the build. If the build is not done automatically select the Project→Build Automatically menu option.

Project Explorer

  • At this point the software project setup is complete, the FPGA can be programmed and the software can be downloaded into the system.

The example code is located in the ”main.c” file and the implementations of the test routines can be found in the “cf_ad9250.c” file.

Downloads

The HDL Reference Designs and the no-OS Software can be downloaded from the Analog Devices github.

Only Xilinx coregen xco files are provided with the HDL Reference Design. You must regenerate the IP core files using this file. See generating Xilinx netlist/verilog files from xco files for details.

The software project contains 2 components: the AD9250-EBZ reference design files and the AD9250 driver. All the components have to be downloaded from the links below.

HDL Reference Designs:

no-OS Software:

Board Files:



Reference Design Contents

HDL Reference Design
license.txt ADI license & copyright information.
system.mhs MHS file.
system.xmp XMP file (use this file to build the reference design).
data/ UCF file and/or DDR MIG project files.
docs/ Documentation files (Please note that this wiki page is the documentation for the reference design).
sw/ Software (Xilinx SDK) & bit file(s).
cf_lib/edk/pcores/ Reference design core file(s) (Xilinx EDK).
Software Reference Design
cf_ad9250.h Header file containing the registers definitions for the AD9250 HDL core.
cf_ad9250.c Implementation of the AD9250 HDL core access functions and ADC test and capture functions.
spi.h Header file for the Xilinx AXI SPI driver.
spi.c Implementation file for the Xilinx AXI SPI driver.
main.c Implementation of the program's main function.
AD9250 Software Driver
AD9250.h AD9250 software driver header file.
AD9250_cfg.h AD9250 software driver configuration file.
AD9250.c AD9250 software driver implementation file.

More information

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'AD9250评估板、ADC-FMC转接器和Xilinx KC705参考设计',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);