问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FPGA接口开发之:JESD204B与AD9689通信

创作时间:
作者:
@小白创作中心

FPGA接口开发之:JESD204B与AD9689通信

引用
CSDN
1.
https://m.blog.csdn.net/qq_45656246/article/details/140011900

本文详细记录了使用FPGA与AD9689芯片通过JESD204B接口进行通信的开发过程。内容包括项目概况、JESD204B基础知识、开发流程、实测结果以及一些注意事项。对于从事相关硬件开发的工程师具有较高的参考价值。

一、项目概况

项目跟下面这个博主的项目差不多,直接贴链接。
JESD204B接口调试记录1 - 简介
本项目所选取的AD9689芯片采样率设计为2.5G,N=16,M=2,L=8,抽取DECL=2,因此AD芯片fout=2.5/DECL=1.25G,因此,一些重要参数计算如下: Lane Rate = M*N*(10/8)fout/L=6.25G;
其中,fpga的device clock = 线速 ÷ 40 = 156.25MHz,ADC的device clock就等于采样时钟2.5GHz(后面有说明为啥配置成2.5GSPS。内部做了2倍抽取,所以fpga内部带宽8
156.25=1.25),两个sysref clock相同均为19.53125MHz。
注:文章后面都有计算说明。

二、JESD204B基础知识

详细资料可以翻阅ug手册,比较常用的就是下面几个参数的配置,参考下面的博主文章,直接贴链接,直接截原图。
JESD204接口调试总结——Xilinx JESD204B IP testbench解析

这里面的参数具体怎么配置,要结合项目实际需求来配置。

三、开发流程

(1)时钟的确认

a)线速与核时钟

选用的AD9689芯片采样率2.6GSPS,结合AD/DA同步的需求,配置AD9689芯片采样率为2.5GSPS。
因为采集的信号最高到8GHz(欠采样),且要求具有300MHz带宽,双通道ADC(两路real)。

第一种方案:两路ADC各使用1个lane(jesd204b的lane),那么线速为:2.5×16÷1×(10/8)=50Gbps(注:16代表14bit数据加上2个0凑整,10/8代表8b10b编码),本项目使用的fpga芯片型号为xc7vx690tffg1927-2。

结合官网文档《ds183_Virtex_7_Data_Sheet.pdf》可知,fpga的gt接口线速无法满足,解决的方法有两种,一种是使用更多的lane,另一种是在ADC芯片内部做抽取(禁用DDC功能,该芯片可以做多次抽取)。结合经验来看,本项目采样另一种方案,如下:

第二种方案:两路ADC各使用4个lane(AD9689共8条lane),那么线速为:2.5×16÷4×(10/8)=12.5Gbps,显然也不满足fpga的gt线速,所以呢,此时需要在ADC芯片内部做1次抽取,因此线速设计为12.5÷2=6.25g,fpga核时钟为6.25÷32×(8/10)=156.25MHz(“÷32”是因为一条lane转换成32bit,“8/10”是因为204b走的是8b10b协议)。

思考:如下图,9689芯片内部为啥有4个DDC?假如只有1个DDC,那么前段数据速率2.5G*16=40G,1条lane根本玩不转,因此需要多路DDC交叉复用(CROSSBAR MUX)以降低lane速。

b)系统参考

系统参考供给
使用。结合文档手册给出的LMFC计算公式,可得LMFC = 2.5GHz ÷(2×32)= 39.0625MHz,然后这个值除以任何一个整数(本项目选择除以2)得出sysref clock = 39.0625 ÷ 2 = 19.53125MHz。发给FPFA的sysref clock与发给AD的sysref clock相同均为19.53125MHz。

c)参考时钟

区别于系统参考,参考时钟refclk供给
使用,给serdes的bank提供参考时钟,与core大小一样为156.25MHz。
关于时钟如何生成请参考:FPGA接口开发之:JESD204B与AD9162通信

(2)jesd工作模式确认

参考AD9689芯片手册给的说明,jesd工作模式选取如下:
其中:
除了M、L、F等常用的值外,其他的寄存器配置可以结合手册给的例子照抄就行,如下:

(3)IP设置

a)第一页

LMEC直接配置到最大1024。

b)第二页

c)第三页

根据jesd确定的工作模式进行配置(F、K)。

d)第四页

根据jesd确定的工作模式进行配置。其中refclk与现实也是先有鸡还是先有蛋的问题。(DRP CLK默认100MHz)

(4)工程生成

a)生成案例

右键ip—>open ip example design,并将如下3个文件加入工程。

2)对案例文件做适当修改

例如,如果有多片AD公用同一个croeclk,则将glblclk在上一层进行差分转单端供不同的AD使用。
注:refclk通常需要在support内部加ibufds加bufg,因为refclk是给serdes的bank使用的,因此需要serdes线速一致且使用的是相邻的bank,这个时候可以外部共用refclk。但是,有的FPGA分上下两个部分,所以跨这两部分的bank,即使bank相邻也不能共用时钟。

(5)数据解析

本项目配置的是全带宽模式,因此,结合AD9689提供的如下解析模式:
结合VIVADO提供的jesd的ip规则,每路gt串转并为32bit,画出逻辑解析图如下:
lane 每个采样点数据所在位置(8×32=256bit)
1 data6高8bit data4高8bit data2高8bit data0高8bit
2 data6低8bit data4低8bit data2低8bit data0低8bit
3 data7高8bit data5高8bit data3高8bit data1高8bit
4 data7低8bit data5低8bit data3低8bit data1低8bit
5 这里为第二个ADC,在上面第一个ADC基础上整体偏移128bit即可
6
7
8

(6)实测

直接信号源50MHz信号给AD采集,ila如下:
输入5.1GHz信号经AD采集之后传输给fpga,做数据分析如下:
画出奈奎斯特区间如下:
区间: 1 2 3 4 5 6 7
频率范围:0-------1.25-------2.5-------3.75-------5-------6.25-------7.5-------8.75
比较可知5.1GHz在第5区间,因此,5.1-5=100MHz,6.25-5.1=1.15GHz,如数据分析保持一致。

更正:AD9689采样率设置为2.5G,但是内部做了2倍抽取,所以内奎斯特区间减少一半为625MHz,上面标黄的区间错误,但是分析结果是正确的。内奎斯特区间划分及结果分析计算方式参考下面代码:

四、几个注意

(1)寄存器

0x1A4C/0x1A4D:用来调整无杂散动态范围 (SFDR),输入信号5GHz-8GHz,结合手册说明,应该配置为700uA,但是配置成500uA也能用。
0x1A48:如上,设置为0x54。
0x1910:调整满量程输入范围越大越好。
0x0701/0x073B:使能数字滤波器以消除直流信号。
0x0200/0x056F:参照前面“三、(2)”寄存器配置说明,这两个寄存器配置时需要delay 5ms-10ms。
0x0200:设置为00000000,依次看下面几张图,此时如果输入的是I/Q信号,则将I与Q都作为real来处理。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号