基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集模块设计(一)总体方案

news2024/12/24 21:40:58
本章将根据高速数据采集指标要求,分析并确定高速数据采集模块的设计方
案,由此分析数据存储需求及存储速度需求给出高速大容量数据存储方案,完成
双通道高速数据采集模块总体设计方案,并综合采集、存储方案及 AXIe 接口需求
给出逻辑器件选型。
2.1 高速数据采集模块指标及方案分析
2.1.1 高速数据采集指标
本文基于 AXIe 测试总线平台的高速数据采集模块主要技术指标如下:
1 )最大采样率: 6.4GSPS
2 ADC 分辨率: 12bits
3 )通道数: 2
4 )模拟输入带宽: 1GHz
5 )耦合: DC
6 )输入信号幅值: 125mV 250mV 500 mV 1V
7 )信噪比: 54dB@380MHz
8 )存储深度: 2Gpts
9 )传输:支持 AXIe 规范中 PCIe 2.0 版本四通道、 5.0Gbps 的接口协议
10 )触发及同步:支持标准 AXIe 总线的触发、同步功能
2.1.2 高速数据采集方案
数据采集模块首先需实现模拟信号的数字化,其后才能对数字化信号进行缓
存、滤波及传输等处理。 ADC 作为数据采集模块的关键器件,其性能指标影响着
整个采集模块的性能。当 ADC 采样率较低时,可采用等效采样技术与时间交替采
样技术实现高采样率的数据采集 [13] 。等效采样技术主要针对重复性的周期信号,
具有局限性;而时间交替采样技术对信号没有限制,应用更为广泛。时间交替采
样结构如图 2-1 所示,多个 ADC 同时采样同一信号,各 ADC 的采样时钟以固定
相位差驱动对应 ADC ,采样数据在后端接收器件中按时间顺序拼合。通过时间交
替采样,采集系统的采样率将提高至多个 ADC 采样率之和。
根据该采集模块的采样率及分辨率指标,在 TI ADI 公司官网以采样率
3.2GSPS 6.4GSPS 及分辨率 12bits 为关键信息筛选出两款 ADC 芯片,分别为
ADC12D1600 ADC12DJ3200 ADC12D1600 最高采样率为 3.2GSPS ,分辨率为
12bits ADC12DJ3200 最高采样率为 6.4GSPS ,分辨率为 12bits 。其中 ADC12D1600
在时间交替采样的情况下也能达到 6.4GSPS 的采样率,因此 ADC12D1600
ADC12DJ3200 在采样率及分辨率上都能满足采集模块的指标要求。下文将讨论这
两款芯片实现 6.4GSPS 数据采集的方案。
ADC12D1600 内部集成了两个 ADC 内核,有两种工作模式,一个是单沿采样
模式,另一个是双沿采样模式 [14] 。单沿采样模式时,两个 ADC 内核在时钟上升沿
分别采样对应通道输入信号,最高采样率为 1.6GSPS ;双沿采样模式时,两个 ADC
内核分别在时钟上升沿及下降沿采样采样同一通道输入信号,最高采样率为
3.2GSPS ADC12D1600 的数据输出采用 LVDS 并行接口,一位数据位采用一对
LVDS 差分线,则 ADC12D1600 需要 12 对数据线。 LVDS 并行接口还需要同步时
钟信号,即一对时钟差分线用于 FPGA 内部同步接收并处理采样数据。采用
ADC12D1600 实现 6.4GSPS 采样的方案如图 2-2 所示,模拟信号经前端电路一分
为二送入两片 ADC 的输入端, ADC 工作在双沿采样模式,则两块 ADC 的采样时
钟均为 1.6GHz ,且两块 ADC 的时钟相位差为 90 °,然后将采样数据经 LVDS
行接口传输至后端按照采样时钟顺序重组数据,完成 6.4GSPS 12bits 数据采样。
ADC12DJ3200 芯片内部集成了三个 ADC 内核,分别称为 ADC A ADC B
ADC C ADC C 通常用于后端误差校正模式时周期性地代替 ADC A 或者 ADC B
工作以保证正常采集 [15] 。因此,同 ADC12D1600 一样, ADC12DJ3200 也有两种工
作模式,当其工作在双沿采样(单通道)模式的时候便能实现最高 6.4GSPS 的采
样。 ADC12DJ3200 采用 JESD204B 数据输出接口以应对数据速率的提升。
JESD204B 采用 CDR 技术( Clock Data Recovery ,时钟数据恢复)从数据中恢复时
钟,因此没有时钟线,仅有数据线。 ADC12DJ3200 最多有 16 条数据传输通道,
当工作在单通道模式时,可选择 8 通道或者 16 通道。由于没有同步时钟信号,
JESD204B 子类 1 通过系统参考时钟及同步信号实现同步功能。因此,对采用
JESD204B 子类 1 实现采样数据传输的采集模块,其时钟电路不仅需要提供 ADC
FPGA 的工作时钟用于完成数据采样,解串及恢复,而且需要提供系统参考时
钟用于产生衍生时钟,与同步信号一起完成链路建立及同步。图 2-3 为采用
ADC12DJ3200 实现 6.4GSPS 采样的方案。

 

 

 

 

 

LMH5401 是一款可使用外部电阻设置增益的全差分放大器 [16] ,在增益为 4V/V
12dB )时,可实现 6GHz 的最大信号带宽。本文采用 LMH5401 实现直流耦合的单
端信号转差分信号,电路如图 2-4 所示,接地端经与输入源电阻同阻值的电阻接地,
以使输入阻抗与给定源阻抗匹配。

 

 

LMH5401 输出和 LMH6401 输入之间的接口具有 1.61dB 的电压损耗,则在 LMH6401
内部 10 电阻之前输出的电压增益范围为 -1.61dB 30.39dB 。由于输入端损耗为
6dB ,则输入端电压增益范围为 -7.61dB 24.39dB ,满足 0dB 18dB 增益要求。

 由上述分析可得本文不同量程对应的 LMH6401 增益设置值,如表 2-1 所示。

2.3 高速采样时钟方案
2.3.1 JESD204B 时钟
数据采集模块的性能受 ADC 芯片性能影响,而 ADC 芯片性能又受时钟信号
质量影响,因此提高时钟信号质量至关重要。上文 ADC 芯片选型部分已在采集方
案实现上体现出两种数据接口的主要不同之处——时钟。采用 LVDS 并行传输方
式的采集系统,其高频采样时钟不仅会送入采集内部电路用于驱动 ADC 进行数据
采集,而且会经过 ADC 内部电路产生与采集数据同步的时钟信号一并送入 FPGA
FPGA 内部的数据接收、处理采用的主时钟正是该同步时钟。不同于 LVDS 并行传
输方式的采集系统,采用 JESD204B 串行传输方式的采集系统要求既有送入 ADC

 

端的设备时钟还有送入 FPGA 端的设备时钟,这两个时钟频率可以不同但需要保
证同源。除了上述两种设备时钟, JESD204B 标准还需要用于同步的时钟等信号。
JESD204B 子类 1 要求 ADC FPGA 两端都要有系统参考 SYSREF ,以及一个
SYNC 信号用于 ADC 端与 FPGA 端的链路同步。一般 JESD204B 子类 1 的时钟仅
需设备时钟及系统参考,但是受 FPGA 型号及 JESD204B 链路的速度影响, FPGA
端有时还需要使用全局时钟。
ADC12DJ3200 的数据传输接口采用的是 JESD204B 子类 1 ,图 2-6 给出了典
型的 JESD204B 子类 1 时钟系统,其中包括设备时钟( DCLK ),系统参考(
SYSREF
帧时钟 FC Frame Clock FC ),本地多帧时钟 LMFC Local Multi-Frame Clock
LMFC )以及全局时钟 glbclk

 

送入 ADC 端的设备时钟( DCLK A )又称为采样时钟,用于 ADC 采样;送入
FPGA 端的设备时钟( DCLK B )又称为参考时钟( refclk ),用作 JESD204B 协议
的物理层—— GTP/GTX/GTH 串行高速收发器正常工作的参考时钟,该参考时钟频
率由串行线速率( Serial Line Rate )确定,同一串行线速率下有多个值可供选择。
串行线速率指的是 JESD204B 各通道的数据传输速率,公式(
2-5 )是计算该值的 通用方法。

 

其中, M 表示链路上转换器的数量, N’ 表示单个样本内信息位的数量,包括样本
分辨率、控制位和结束位, Fclk 表示器件或采样时钟, L 表示通道数, 10/8 表示
8b/10b 编码的链路开销。对于本文采用的 ADC12DJ3200 器件,其串行线速率既可
以采用上式,也可以采用公式(2-6),因为 ADC12DJ3200 根据其操作模式定义
18 JESD204B 链路工作模式,简称为 JMODE ,并罗列了相关参数。式(2-6)
中的 DCLK Frequency ADC 采样时钟, R 为每个采样周期每个通道传输的比特
数。本文的采样率为 6.4GSPS ADC 采用 JMOD1 模式时,采样时钟为采样率的
一半,即 3.2GHz R 2 ,则串行线速率为 6.4Gbps
2.3.2 时钟参数计算
JESD204B 时钟系统可见帧时钟、多帧时钟等为设备时钟的衍生时钟,帧
时钟、多帧时钟等与设备时钟之间存在着一定的数值关系,图 2-7 描述了这些时钟
之间的关系。
由图 2-7 可知,在 JESD204B 时钟系统中,串行线速率是一个重要的参数,各
个时钟的频率都与该参数有关。下面介绍各时钟的作用及计算方法,首先是 ADC
FPGA 两端都有的时钟信号,再是 FPGA 端特有的时钟信号。
字节时钟( Byte Clock )是数据传输通道的字节速率。为了直流均衡,
JESD204B
的数据链路层设置了 8b/10b 编解码,数据传输通道的串行数据是 8 位传输数据经
过编码后的 10 位数据,由此可以通过串行线速率计算字节时钟频率,计算公式如
(2-7)所示。本文的 Byte Clock 为 640MHz。

 

 

帧时钟是 JESD204B 数据帧的传输速率。 JESD204B 将传输数据按照每帧多少
个字节进行打包,帧时钟大小既可以通过字节时钟计算也可以通过串行线速率计
算得到,计算帧时钟大小的公式如(2-8)所示,其中 F 代表多少个字节为一帧数
据。本文的 F 8 ,则 Frame Clock 80MHz 。帧时钟是设备时钟的分频。
2.4.2 数据存储结构方案
本文采集模块包含两个通道,各通道采样率为 6.4GSPS ,分辨率为 12bits 。将
数据位宽扩展至 16 位,则该模块的波形数据速率为 6.4GHz 16bits 2 ,即 25.6GB/s
因为 FPGA 中单个 DDR 存储器控制接口最多支持 64 位数据位宽,则由波形数据速率
可以计算出使用 64 DDR 实现相同吞吐量时 DDR 数据速率高达 3200MT/s 。随着计
算机技术进步, DDR SDRAM 的数据速率有了大幅提升,早期的 DDR2 最大数据速
率为 800MT/s DDR3 的最大数据速率则为 2133MT/s DDR4 的数据速率可以达到
3200MT/s 。上述计算的 DDR 数据速率恰为 DDR4 可达到的最高数据速率。由于 DDR
需要定期“刷新”,阻碍正常访存,降低工作效率,在计算 DDR 数据速率时需留
有裕量,故采用数据速率为 3200MT/s DDR4 并不能满足需求。当数据速率已超过
DDR 能提供的最高速率时,可通过扩宽 DDR 存储器的数据位宽达到提高数据吞吐
量的目的。将数据位宽从 64 位拓展至 128 位,由采集数据吞吐量可计算出此时 DDR
数据速率已从 3200MT/s 降至 1600MT/s ,即( 25.6GB/s /128bits 。实现时,使用两
个位宽为 64 位的 DDR 进行存储,两通道分别对应一个 DDR 。由单通道采集数据吞
吐量计算每个 DDR 的数据速率,单个 DDR 的数据速率仍为 1600MT/s ,即
6.4GHz 16bits /64bits ,可采用 DDR3 实现数据缓存。同样,考虑 DDR 的“刷新”
时间,以 91.03% 的访问效率计算 [21] ,则 DDR3 的数据速率应为 1757MT/s 。最终,
选择数据速率为 1866MT/s DDR3 作为外部存储设备。
使用 DDR3 实现的具体方案有如下两种:一种是采用 8 片位宽为 16 位,数据率
1866MT/s DDR3 颗粒,每 4片颗粒并联为一组用于一条通道的数据存储;另一
种是采用两片位宽 64 位、数据率 1866MT/s DDR3 内存条,一片内存条对应一条通
道的数据存储。存储容量上, DDR3 颗粒单片最大容量可达 4000Mb ,单通道 4 片并
联存储容量便能达到 2GB DDR3 内存条最大容量可达 8GB 。因此这两种方案都能
满足数据速率及容量要求。采用 DDR 颗粒方式与采用 DDR 内存条的方式区别主要
在电路设计上, DDR 颗粒通过直接焊接颗粒在电路板上实现,而 DDR 内存条采用
插槽实现,插槽方式便于器件更换。最终,选择镁光公司的 DDR3 内存条——
MT8KTF51264HZ-1G9 ,其内存容量为 4GByte ,数据速率为 1866MT/s ,数据位宽
64bits 。存储方案如图 2-8 所示,两路 ADC 采集数据经 JESD204B 链路传输至 FPGA
内部,再经异步 FIFO 跨时钟域和缓存处理后进入存储控制模块,存储控制模块根
据操作命令及起始地址实现连续多段存储、读取。存储控制模块将接收外部触发
信号和 AXIe 机箱提供的双向星型 STRIG 触发信号及 TRIG[0:11] 触发信号。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/483491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一个C++程序

一、c结构 计算两个数的和&#xff1a; #include <iostream> using namespace std;int main(){int a,b;cin>>a>>b;cout<<"ab"<<ab<<endl;return 0; } #include <iostream> 是 C 标准库中的头文件之一&#xff0c;它包含…

Python程序员的薪资待遇怎么样?我来讲述一下自己五年的工作经历

大家好&#xff0c;我是一名毕业五年的程序员。接下来我将讲述一下我的五年经历&#xff0c;以及一些关于程序员薪资的问题。大学时学的是计算机专业&#xff0c;当时选择这个专业是因为听说这个专业比较好找工作。于是我就选了计算机专业&#xff0c;然后在大四的时候开始找工…

权限提升:漏洞探针.(Linux系统)

权限提升&#xff1a;漏洞探针. 权限提升简称提权&#xff0c;由于操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;比如通过 Web 漏洞拿到的是 Web 进程的权限&#xff0c;往往 Web 服务都是以一个权限很低的账号启动的&#xff0c;因此通过 Webshel…

同一云厂商同一内网云服务器中使用CentOS 7.6安装Kubernetes集群

查看Linux发行版版本号 cat /etc/redhat-release查看版本号。 更改yum源 参考我写的博客。 主节点操作系统参数配置和软件安装 cat >> /etc/hosts <<OFF&#xff0c;将你的两台云服务器的内网IP和对应的主机名写到/etc/hosts。 需要修改“/etc/fstab”&…

Redis监控步骤get!Google精髓的四大法则直接掌握

Redis也是对外服务&#xff0c;所以Google四个黄金指标同样适用&#xff0c;还从延迟、流量、错误、饱和度分析Redis关键指标。 1 延迟 选择Redis是想得到更快响应速度和更高吞吐量&#xff0c;所以延迟数据对使用Redis的应用程序至关重要。 1.1 如何监控延迟 ① 客户端应用…

C++基础——运算符详解

详解运算符 初识运算符位运算认识位运算的相关运算符。能实现什么样的操作&#xff1f;及实现原理。 比较运算符逻辑运算符赋值运算符 初识运算符 运算符分为5大类&#xff1a;算数运算符、赋值运算符、复合赋值运算符、比较运算符、逻辑运算符。算数运算符就是加减乘除运算&a…

bytetrack 多目标跟踪 学习笔记

效果&#xff1a; ByteTrack在遮挡情况下ID不丢失演示 最近几天在看Bytetrack,感觉自己的学习方法有点问题, 应该先断点跑通&#xff0c;总体把握 然后完全理解算法代码的每一行,可以自己复现(这个就很难,看github的大佬把python转C 好羡慕) 所以如果学习Bytetrack,需要: 了…

【Git】Git(分布式项目管理工具)在Windows本地/命令行中的基本操作以及在gitee中的操作,使用命令行、图形化界面,进行提交,同步,克隆

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

菜鸡shader:L1基于兰伯特原理的玉石、条纹、点阵材质

目录 玉石材质条纹材质点阵效果 这里就简单说下原理吧&#xff0c;使用unity很久之前的一个插件shaderforge&#xff0c;最近几年好像在unity资源商店已经不再维护了&#xff0c;但是有shader forge的官网&#xff1a;在这&#xff0c;碰到节点不会的时候可以查一下官方文档&am…

手把手,带你发布你的第一个npm包

我们在编写项目的时候&#xff0c;都会引入很多很好用的工具包&#xff0c;例如VueX、axios、Router、Element UId等。这些包很好用&#xff0c;安装引入也很方便。那如果我们也想发布一个我们自己的工具包&#xff0c;在以后编写项目时&#xff0c;直接引入我们自己的工具包要…

干货 | 正确引用参考文献的6大技巧

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐&#xff5e; 对于学术研究而言&#xff0c;正确引用参考文献非常重要。参考文献不仅展现了自己的学术水平&#xff0c;同时也给研究定位&#xff0c;突显研究在前人研究基础上作出的贡献。 …

牛客_华为_HJ32 密码截取

HJ32 密码截取 647. 回文子串 516.最长回文子序列 ## 这不就是 最长回文子串&#xff01;&#xff01; ## 回文子串有两种模式 ## ABA ##CAACst input() n len(st) ## 双指针 def func(s,i,j,n):res 0while i>0 and j<n and s[i]s[j]:i-1j1return j-i-1 ## 由于i j…

五本计算机必读书籍总结

一、计算机组成原理 思维导图&#xff1a; 1、计算机系统概述 主要讲授信息的数字化表示、存储程序与冯诺依曼体制&#xff1b;计算机的诞生和发展&#xff1b;计算机系统的层次结构和硬件系统组织&#xff1b;计算机的主要性能指标。 2、数据的表示、运算与校验 主要讲授数值…

C语言中链表中经典面试题

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

扩展 VirtualBox 已分配磁盘的方法

扩展 VirtualBox 已分配磁盘的方法 第一步&#xff1a;用VirtualBox命令行调整已分配磁盘的大小第二步&#xff1a;用windows磁盘管理工具扩展磁盘空间 第一步&#xff1a;用VirtualBox命令行调整已分配磁盘的大小 "c:\Program Files\Oracle\VirtualBox\VBoxManage.exe&q…

3年经验程序员聊聊外包项目,总结了6个典型的问题该如何解决

我是一名老程序员&#xff0c;接了项目&#xff0c;接外包项目已经有3年多的经验了。今天我想分享一些接项目的经验给大家。 第一&#xff0c;辞职去接外包&#xff0c;好吗&#xff1f;有很多人幻想辞职了全职去接外包&#xff0c;但我并不太建议这样做。我建议大家先把自己的…

计算机基础必读书籍

一、计算机组成原理 思维导图&#xff1a; 1、计算机系统概述 主要讲授信息的数字化表示、存储程序与冯诺依曼体制&#xff1b;计算机的诞生和发展&#xff1b;计算机系统的层次结构和硬件系统组织&#xff1b;计算机的主要性能指标。 2、数据的表示、运算与校验 主要讲授数值…

一个go http和grpc客户端库

大家好&#xff0c;我是peachesTao&#xff0c;今天是五一假期的第4天&#xff0c;首先祝大家劳动节快乐。今天给大家推荐一个统一http和grpc客户端调用的库&#xff0c;名为prpc&#xff0c;github地址&#xff1a;prpc&#xff0c;该库是我公司根据最佳实践总结开发出来的&am…

【C++进阶之路】类和对象(上)

文章目录 一.面向对象和面向过程二.类的引入——结构体三.类的定义1.类定义的两种方式在类里面定义函数在类外定义函数——类域 2.访问限定符3.封装——面向对象的三大特性4.类的实例化 四.类对象模型求一个类的大小 五.this指针基本认识代码解读 一.面向对象和面向过程 面向对…

【移动端网页布局】流式布局案例 ③ ( 实现搜索栏功能 | 伪元素选择器 | 子绝父相 | 外边距塌陷处理 | 二倍精灵图处理方案 )

文章目录 一、搜索栏样式及核心要点1、实现效果2、自动伸缩搜索栏实现3、搜索栏父容器设置4、搜索栏左右两侧的按钮盒子5、搜索栏盒子6、二倍精灵图处理方案 二、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、搜索栏样式及核心要点 1、实现效果 上一篇博客中 , 完成…