JESD204B 使用说明

article/2025/10/2 6:19:54

JESD204B IP核作为接收端时,单独使用,作为发送端时,可以单独使用,也可以配合JESD204b phy使用。

JESD204B通常配合AD或DA使用,替代LVDS,提供更高的通讯速率,抗干扰能力更强,布线数量更少。

本篇的内容基于jesd204b接口的ADC和FPGA的硬件板卡,通过调用jesd204b ip核来一步步在FPGA内部实现高速ADC数据采集,jesd204b协议和xilinx 的jesd204 IP核相关基本知识已在前面多篇文章中详细介绍,这里不再叙述~

在该篇中,小青菜哥哥试图从一个初学者的视角来记录整个开发流程,力求做到每一个读者阅读完该笔记后都能快速开发基于jesd204b接口的FPGA-ADC数据采集,同时也确保几个月甚至几年后的本人已经遗忘了jesd204b开发细节后,通过阅读该笔记能够快速重新上手。

还是老话说得好:好记性不如烂笔头!

硬件工作环境
ADC:ADS52J90。FPGA:kintex7。供电:12V/4A 直流电源。该板卡最多外接32通道2Vpp模拟信号以及20路外部触发信号。数据传输接口方式有千兆以太网接口、高速光纤接口以及低速USB串口。需要用到的工具为万用表、示波器、信号发生器。

图2:ADC主要特性

  • 该款芯片内置了16个ADC(模数变换器),这16个ADC输出的数据通过jesd接口输出。
  • 这16个adc的数据通过2、4、或者8条lane输出,具体选哪种用户是可以选择的。
  • 每条lane的最高线速率是5Gbps。
  • 支持子类0、1和2。

该芯片的采样率、采样精度,采样通道数都有多种模式,用户可选择范围比较大,但必须最终满足每条lane的数据线速率不能高于5Gbps。

我们再来看看ADC数据的传输层数据结构。该ADC手册描述输出数据有“NORMAL PACKING MODE”和“ SINGLE CONVERTER PER OCTET MODE”两种模式,为了提高位传输效率,本人选择了“NORMAL PACKING MODE”,如图3所示:

图3:不同的jesd接口操作模式

在实际操作演示时,小青菜哥哥通过ADC配置接口,选择了固定的ADC基本采样参数:即ADC的采样率为80MSPS、采样精度为12bit、采样通道为16,所有数据最终通过4条lane输出到FPGA(4个lane正好对应FPGA的一个GTX quad,比较整齐。。。。技术男强迫症犯了)。因此,在“NORMAL PACKING MODE”模式下,N=12,N’=12,F=6。

具体的传输层数据结构如图4所示:

图4:“NORMALPACKING MODE”模式下的传输层数据结构

从图4也可以看出,F=6,采样数据没有contro bit 和tail bit填充,这样就保证了输出数据100%有效传输效率。

那么ADC的帧时钟是多少呢?手册上也已经给出了,如图5所示:帧时钟频率和ADC转换频率一样的,这里都为80MHz。

图5:jesd相关的时钟频率

基于以上信息,小青菜哥哥选择的工作模式的lane线速率就可以确定了:
帧时钟×帧字节数×每字节的bit数×8b/10b编码开销即为lane的工作线速率
80MHz×6×8×10/8=4.8Gbps
另外,还有一种更容易理解的线速率确定方式:
我们知道每条lane传输4个ADC的数据,而ADC采样率为80MHz,采样精度12bit,没有控制和tail bit,只要8b/10b编码,因此每条lane的线速率为:
80MHz采样率×12bit采样精度×4个ADC×10/8=4.8Gbps

另外,还有最后一个多帧参数K 需要确认。ADC数据手册给出了K的范围,即:Ceil (17 / Number of Octetsper Frame) ≤ Multiframe Size (In Terms of Number of Frames),即Ceil (17 / 6) ≤ K。因此K必须要大于等于3,小青菜哥哥决定K取4。

到现在为止jesd204的参数就确认完毕了,在这里就不一一介绍该芯片的其它功能了,该芯片的详细中文版介绍可以看小青菜哥哥以前的文章。

接下来我们来打开vivado,一步一步来完成FPGA-ADC数据采集的工程。在工程建立的过程中,小青菜哥哥还会反复提到上述的ADC芯片,因为在建立jesd204链路时,FPGA端的参数必须和ADC的参数保持一致~

如图6所示为新建的vivado工程“jesd204b_ads52j90”,匹配硬件的FPGA型号“xc7k325tffg900-2”,可以看到工程内部还没有任何文件:

图6:新建工程

接下里我们来例化jesd204 IP核,如图7所示:

图7:例化IP核

双击该IP核后打开了jesd204的配置界面,配置界面分成4个子界面:“Configuration”、“Shared Logic”、“Default Link Parameters”以及“JESD204 PHYConfiguration”。我们下面将分别描述:

“Configuration”配置界面
如图8所示为“Configuration”配置界面,该界面有7个地方是需要用户来选择的

图8:“Configuration”配置界面

1:输入IP核名字
2:由于是ADC数据采集,因此FPGA的IP核应该设置成“Receive”
3:设置IP核内部的接收数据缓存器的字节长度。数据缓存器主要用来做lane之间的数据对齐和实现确定性延迟功能。字节长度是用户可选的,选得值越小越节约FPGA逻辑资源,但字节长度必须要超过F*K(本篇为6*4=24),因此选择了64,如果大家不清楚的话,直接选最大长度,绝对没问题。
4:lane数量:本篇为4条lane。
5:jesd204 IP核的AXI4-Lite配置时钟:默认为100MHz。对于ultrascale器件,频率范围为10MHz~200MHz,对于7系列器件,如果IP核的模式为“Include Shared Logic inexample design”,则频率范围为10MHz~200MHz;如果IP核的模式为“Include Shared Logic incore”,则频率范围和Transceiver DRP时钟频率范围相同,本人选择了80MHz(80MHz为FPGA系统时钟,可以省去FPGA另外再提供100MHz时钟);
6:该选项可以选择sysref信号被core clk的上升沿或下降沿采样,用于jesd204b子类1的确定性延迟功能。一般来说,外界提供的core clock和sysref是同源且上升沿对齐信号,因此在FPGA端最好选择在时钟下降沿采样sysref比较精确,具体描述可参考pg066的page-60。
7:用户决定IP核的core clk是否由glbclk(p/n)管脚输入。当refclk(p/n)频率不等于core clk时,必须外部输入core clk。本篇中的线速率为4.8Gbps,因此core clk为120MHz,所以本人将参考时钟输入频率也调成120MHz,这样IP核只需要一个120MHzd的参考时钟输入接口了。

“Shared Logic” 配置界面
如图9所示为“Shared Logic” 的配置界面:该界面只有两种选择,要么选择“Include Shared Logic in example design”,要么选择“IncludeShared Logic in core”。对于大部分用户来说,选择“Include Shared Logic in core”就可以了,后期使用起来很简单。对于需要使用“transceiversharing”这种高级功能的特殊用户来说,就需要选择“Include Shared Logic in example design”,以便自己可以修改IP核内部的部分代码。我们选择“IncludeShared Logic in core”就可以了。

图9:“SharedLogic” 的配置界面

“Default Link Parameters” 配置界面
如图10所示为“Default Link Parameters” 的配置界面:该界面5个部分需要用户设置:

图10:“DefaultLink Parameters” 的配置界面

1:Default SYSREFAlways:该选项用来配置LMFC计数器是否在每个SYSREF脉冲到来时都复位,或者只在SYSREF的第一个有效脉冲到来时复位,忽略以后的SYSREF信号。这里选择OFF即可。
2:Default SCR:在ADC端我们禁止了扰码功能,因此这里也将扰码功能关闭。扰码功能有利有弊,小青菜哥哥反正一直都不用该功能的~
3:Default F:从前面的ADC部分描述来看,这里F设置成6
4:Default K:从前面的ADC部分描述来看,这里K设置成4
5:Default SYSREFRequired on Re-Sync:该选项用来选择每次链路重新同步时是否需要sysref信号,我们最好关闭它,默认链路同步时不需要该信号,只在SYNC拉高后的下一个LMFC上升沿同步就可以了,这样就方便许多。

“JESD204 PHY Configuration” 配置界面
如图11所示为“JESD204 PHY Configuration” 的配置界面:该界面6个部分,只有其中4个部分需要用户设置:

图11:“JESD204 PHYConfiguration” 配置界面

1:Transceiver Type:这是由所选FPGA型号决定的,这里不能选择
2:Line Rate:前面已经计算过,当前需求的数据线速率为4.8Gbps
3:Reference Clock:由于线速率已确定4.8Gbps,而core clk为其1/40,即120MHz。所以为了不使用glbclk(p/n),减少一路时钟输入,这里将ReferenceClock 也设置成120MHz ,这样外部输入的glbclk(p/n)就可以由Reference Clock代替。
4:这里也没得选:只能是CPLL
5:DRP Clock Frequency:配置页面已经提到过,对于七系列器件,DRP clk和AXI4-Lite clock为同一时钟,所以这里也不可选了,只能为前面定下的80MHz。
6:不需要Transceiver的调试功能

至此,jesd204的IP核就配置完成了。例化该IP核后,其生成的ip核端口信息如下图12所示(带信号注释):

图12:IP核例化代码

我们再看看小青菜哥哥建立的工程顶层接口文件,如图13所示:(带注释),接口其实真的很简单~

图13:顶层文件接口

小青菜哥哥的FPGA顶层文件主要包括以下8模块,如图14所示:

图14:顶层设计

1:PLL模块
该模块利用外部40MHz晶振和FPGA内部的PLL,产生2路时钟:其中一路10MHz,作为时钟芯片配置模块和ADC配置模块的运行时钟;另一路100MHz,本打算供给AXI4-lite配置模块时钟,后来发现不需要,这里就留着备用了。
2:时钟芯片配置模块
没啥可说的,就是看lmk04826的数据手册,通过SPI接口协议配置时钟芯片内的寄存器,产生整个系统所需的时钟和sysref信号。以前的文章详细讲述过~
3:ADC配置模块
通过SPI接口协议配置ADC芯片,使其工作在我们需要的jesd204参数状态,本篇中小青菜哥哥将ADC配置成了累加数,便于输出测试。以前的文章详细讲述过~
4:jesd204 IP核模块
调用前面的IP核即可
5:全局时钟模块
IP核会输出一路120MHz的core clk,供给用户使用。我们将该信号引入全局时钟模块,产生120MHz和80MHz全局时钟,作为ADC数据解析模块的时钟。另外80MHz时钟还可以作为AXI4-lite的配置时钟。
6:AXI4配置模块
配置jesd204 IP核的工作参数。这里需要注意的是配置的参数和ADC配置模块的参数要相同,比如F,K,N等参数。
7:ADC数据解析模块
由于IP核输出的数据是128bit位宽,在120MHz的时钟域下工作。而ADC采样时钟是80MHz,所以ADC数据解析模块的功能就是将总共4 lane的这些数据分离,变成16个ADC的12bit精度的连续采样数据。每款ADC芯片的数据组织结构(其实就是JESD204B的传输层数据结构)不一样,所以该模块不具有普适性,只针对本篇的需求~
8:逻辑分析仪
我们通过ILA逻辑分析仪来观察每一路的ADC采样数据,看是否正确。

如下图15所示为小青菜哥哥的jesd204 IP核信号的连接方式,供大家参考:

图15:IP核顶层代码

我们再看看数据解析模块的接口含有哪些信号,如图16:

图:16:数据解析模块顶层

我们再看看逻辑分析仪监测的数据情况,如图17为IP核输出的数据时序,这里我们看不出来ADC数据到底对不对,得到的都是ADC采样数据经过传输层分割后的数据。

图17:jesd IP核数据输出

进一步的我们看看最终还原的ADC数据到底对不对:由于小青菜哥哥将ADC配置成了发送累加数,所以说如果jesd204链路正常工作了,那么观察到的16路ADC采样数据肯定也是累加数,如图18所示:可以看到数据从0累加到4095,然后循环往复,正好对应我们在前面配置的12bit ADC精度。

图18:ADC累加数据

将ADC的累加数配置更改为采集正常输入信号后,我们外接了信号发生器,将信号发生器设置成发送正弦波,下图19是在FPGA内部监测到的一路正弦信号,其他路没有接信号,是噪声基线:

图19:正弦波模拟信号的输入测试

下图20是用该板卡和上面描述的方案在试验现场测试的3种放射源的混合能谱,看上去还可以吧!

图20:实际放射源测试结果

JESD204B IP核与ADC的实际操作就到这里了,其实只要明白了jesd204协议的基本内容和IP核各个端口的含义,开发起来并不复杂。我们主要还是要仔细阅读ADC数据手册,根据手册给出的参数来确定IP核的工作参数即可。希望大家看完以后都能够有所收获,获得收获的朋友们点个小红星吧哈哈哈~~


http://chatgpt.dhexx.cn/article/uXOD0hZX.shtml

相关文章

http中的204和205

基本概念 http协议的200,301,302,304,404,503这些常用的状态码就不再介绍了。这里主要说一下不常见的204和205吧。 204代表响应报文中包含若干首部和一个状态行,但是没有实体的主体内容。主要用于在浏览器…

火狐firefox快速切换代理插件:Proxy Switcher

简介 l利用Firefox下的Proxy Switcher插件可以实现快速切换代理 安装 两种方式进入拓展和主题页面 方式一 寻找更多扩展的搜索栏输入Proxy Switcher 选择添加到Firefox 方式二 语言设置为中文的火狐浏览器直接打开地址:https://addons.mozilla.org/zh-CN/f…

关于proxy代理

之前一直有个问题,就是它到底是只代理那部分带有/api的,还是全都代理掉 答案是,只会代理api那部分,也就是你配置了代理的部分 发请求的时候,包括axios发完后,vue会检测你的所有请求,把符合你代理的那部分正则匹配到,然后代理,再发请求 这个地方是我搞错了,其实这个proxy好像…

AnyProxy代理

背景:当一个公司测试团队有多个人的时候,只需搭建一个AnyProxy服务,其它小伙伴浏览器上打开AnyProxy页面,手机上设置代理就能抓到http、https请求了。解决了部分人电脑不正经的小伙伴fiddler死活抓不到https请求的问题&#xff0c…

代理器Proxy

基本概念 一.代理器Proxy 1.用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”,即对编程语言进行编程。 2.Proxy可以理解为,在目标对象之前架设一层“拦截”,外界对该对象的访问&#xff…

代理(Proxy)

-代理模式(Proxy Pattern),23个经典模式中的一个,又称之为委托模式,就是为目标对象提供了一个代理,这个代理可以控制对目标对象的访问。代理对象可以添加审查和监控功能。 在java中的代理有静态代理以及动态…

Proxy-Server

一、摘录 二、背景 由于某些原因,在我们国内无法访问google、facebook等外国网站,如果你想使用外网来学习,聊天,那么就可以使用一些翻墙代理。 三、原理 1.要想翻墙,首先得知道墙是什么东西?墙是看不见摸…

Proxy(代理)服务器

代理服务器:---代理服务器必须有DNS地址。如果开启转发需要在客户端设置DNS地址 NAT:是直接与目标服务器通信的。也就是直接访问的baidu服务器,目标地址是baidu服务器的地址,所以必须要有DNS来解析主机名。 如果是通过代理客户端是…

代理服务器(Proxy)

目录 1.什么是代理服务器 2.代理服务器的作用 3.代理服务器的工作流程 4.安装代理服务器软件及配置文件解析(squid) 5.正向代理 6.修改数据存放位置 7.设置磁盘使用阈值 "代理"两字顾名思义就是以代理人的身份去帮助其他人取得所需要的…

ProxyHandler处理器(代理设置)

我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,这时候打开网页一看,可能会看到“您的…

代理工具及使用技巧Proxy Hunter

转自:http://bbs.taisha.org/thread-385064-1-1.html 如需转载,请注明出处,谢谢。 由于国外大学图书馆购买的数据库大多数是用IP登陆方式,所以获取这些大学的代理就成为我们利用这些数据库的唯一方式,我介绍的方法是最…

【NEW】抓包工具-ProxyMan

背景 总会有一些移动端需要我们排查问题、调试的场景。之前一直用charles,或者通过在测试环境的debuger的依赖vconsole来看,好久之前下载了一个proxyman抓包工具,今天搞明白这玩意咋用了,真香哈哈哈哈,好用多了。 安…

Xshell 代理链接 ProxyJump

由于vscode 链接服务器插件太多太占资源了,公司不让用vscode,因此智能使用Xshell连服务器。 代理链接,因为有些服务器,只能内网链接,所以需要代理。 先贴一下配置文件 Host 11-xxx-remoteHostName xxxxxxxxxxPort 161…

Chrome配置Proxy代理

Chrome浏览器中配置代理 为什么要配置代理呢?比如你要使用SparkUI 1、将Proxy SwitchyOmega 工具添加到Chrome浏览器的扩展程序中 在chrome浏览器中搜索Proxy SwitchyOmega 选择chrome网上应用店,点进去后 点击后边按钮,将 Proxy Switchy…

ProxyChains

proxychains-ng:https://github.com/rofl0r/proxychains-ng proxychains:https://github.com/haad/proxychains shadowsocks:https://github.com/shadowsocks/shadowsocks 安装了 shadowsocks 之后,只能网页出去逛逛,…

firefox_Proxy Switcher代理插件

配制代理 Linux机器上安装代理squid yum install squid 安装squid service squid start 启动squid chkconfig squid on 开机启动 默认端口为3128

代理猎手(Proxy Hunter)教程(详细图文)

转自:http://blog.sina.com.cn/s/blog_6262609f0100gwk3.html 如需转载,请注明原文出处,谢谢。 下面是代理猎手的界面: 现在我们要来设置代理猎手的参数 (1)【系统】--【参数设置】 在搜索验证设置中的搜索…

zz 教你如何用proxyhunter找大学代理

转自:http://bbs.taisha.org/thread-385064-1-1.html 如需转载,请注明出处,谢谢。 由于国外大学图书馆购买的数据库大多数是用IP登陆方式,所以获取这些大学的代理就成为我们利用这些数据库的唯一方式,我介绍的方法是…

网站改版都包括网站哪些方面的内容呢?

在企业网站建成后,经过长时间运营之后难免会遇到改版的情况发生,由于网站改版是提高网站用户体验的必经之路,因此,企业网站为了保证网站的排名、流量以及权重的方面内容,一定要注意网站改版时需要注意的一些细节内容&a…

网站防篡改解决方案

2005年&#xff0c;境外22万台主机曾对我国网站发起攻击。 2005年&#xff0c;CNCERT/CC收到报告的网络安全事件12万多件&#xff0c;与2004年相比&#xff0c;数量都增长了1倍左右。网页篡改事件占网络安全事件&#xff08;非 <script language"JavaScript1.1"…