【国产虚拟仪器】基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集模块设计(二)研究 JESD204B 链路建立与同步的过程

article/2025/10/19 13:54:15
基于 JESD204B 的采集与数据接收电路设计
本章将围绕基于 JESD204B 高速数据传输接口的双通道高速数据采集实现展
开。首先,简介 JESD204B 协议、接口结构。然后,研究 JESD204B 链路建立与同
步的过程。其次,研究基于 JESD204B 子类 1 的多器件同步方案。最后,将完成
双通道同步采集与数据接收设计,包括时钟、采集及数据接收设计。
3.1 JESD204B 协议概述
为应对高采样率、高分辨率数据转换器数据吞吐率提高的状况, JEDEC 协会
制定了一种可用于数据转换器与逻辑器件之间的高速串行通信协议—— JESD204
并不断更新、修订该协议。其中 JESD204 系列协议的第二次修订版—— JESD204B
被各大知名器件厂商(如 ADI TI )广泛应用于高速数据转换器。
相较于之前的两个版本, JESD204B 首先提高了数据传输速率,单通道最高传
输速率为 12.5Gbps ;其次链路收发两端不再采用同一时钟(帧时钟),而是采用
设备时钟,即转换器的采样时钟,逻辑器件的参考时钟,通常这两个时钟的频率
不同;最后引入确定性延时,通过在各链路上实现可重复、可编程延时解决多链
路、多通道之间数据不同步的问题。根据是否支持确定性延时及用于实现确定性
延时的时钟种类, JESD204B 可分为子类 0 、子类 1 及子类 2 。其中只有子类 1
子类 2 支持确定性延迟。 JESD204B 协议的传输示意如图 3-1 所示。

3.2 JESD204B 接口结构
JESD204B 接口由发送端(模数转换器或逻辑设备)接口及接收端(逻辑设备
或数模转换器)接口两部分组成,无论是发送端还是接收端其结构组成一致,都
包括应用层、传输层、数据链路层及物理层 4 个部分。在 JESD204B 协议中并未
定义应用层。但是,常把用于用户设置 JESD204B 链路参数的应用接口称为应用
层。只有发送端与接收端的链路参数一致才能确保 JESD204B 链路正确工作。图
3-2 JESD204B 接口结构框图,发送端与接收端之间对应层级在功能上互为逆过
程。

发送端一侧的传输层根据链路参数将数据生成模块的数据映射为字节、帧、
多帧及通道形式 [23] ,链路参数有 L M F S CS N N’ ,其中 L N’ M F
2.3.1 小节及 2.3.2 小节表示的意义相同, S 则表示每个帧时钟每个转换器有多少
个采样点, CS 则表示每个转换样本包含多少个控制位, N 表示样点分辨率。接收
端侧的传输层则需要将接收的打包数据按照链路参数及映射方式恢复样点。
链路层负责建立 JESD204B 链路,实现链路同步,主要功能有 8b/10b / 解码,
链路同步、建立及监测。这里主要介绍 8b/10b / 解码,链路同步、建立及监测将
在后面小节介绍。 8b/10b 编码方式能够为交流耦合的串行解串链路提供直流平衡,
避免传输数据出现连续 6 位为 0 或为 1 的情况。故 8b/10b 编码方式能够在数据传
输过程中产生足够数量的边沿跳变,使接收端能可靠地恢复数据时钟。 8b/10b
能提供一定的错误检测,当接收端所接收的 10 位字符并不位于 8b/10b 解码器查找
表中时,说明字符中出现数据位错误。
发送端物理层将 8b/10b 编码后的数据串行化并按照通道数据传输速率发送,
接收端物理层则将接收的串行数据并行化并由 8b/10b 解码字节数据。 JESD204B
物理层主要由电流模式逻辑( CML )电平驱动器、预加重器(均衡器)及串行器
(接收端为解串器)构成。发送端采用预加重器补偿信道上由 PCB 材料及信号传
输距离带来的损耗,接收端则采用均衡器校准传输通道的低通响应。接收端的组
成部分还包括时钟检测恢复模块,该模块通过数据传输通道的串行数据流解析出
数据时钟,用于串行数据并行化。
发送端的加扰是一种可选功能,位于传输层及链路层之间。加扰功能对传输
层的 8bits 数据进行加扰,用以消除传输数据中可能存在的频谱尖峰。当发送端选
择使用加扰功能时,接收端则需要对 8b/10b 解码数据进行解扰 [23]
3.3 JESD204B 链路的建立与同步
由前一小节 JESD204B 接口结构可知, JESD204B 链路的建立主要由数据链路
层完成。在正式传输采样数据之前,首先需要经历代码组同步( CGS )阶段,然
后是初始化通道同步(
ILS )阶段 [24] 。初始化帧同步(
IFS )的完成包含在 CGS
ILS 阶段中。 JESD204B 各子类链路建立与同步的区别在于代码组同步完成之后以
何种时钟边沿为基准开启初始化通道同步,子类 0 采用帧时钟,子类 1 2 采用多
帧时钟。图 3-3 JESD204B 子类 1 2 链路同步过程示意。

链路同步第一阶段——代码组同步,主要用于检测串行数据流中的关键字符
边界,同步数据流中的字符边界与接收端字节时钟。接收端通过拉低 SYNC 信号
表示同步请求,发送端则通过发送 /K28.5/ (即 /K/ 字符,其十六进制数为 bc )字符
流表示检测到同步信号,接收端将接收并同步数据流。当接收端接收到至少 4
连续正确的 /K28.5/ 字符时,接收端将通过拉高 SYNC 信号表示取消同步请求。虽
SYNC 拉高,但是发送端仍会发送 /K28.5/ 字符直到发送端的下一个 LMFC 边界
到来时刻,此时代码组同步完成。对于 JESD204B 子类 1 ,在开始代码组同步之前
需要使用 SYSREF 信号指定各设备的帧时钟及多帧时钟边界。
链路同步第二阶段——初始化通道同步,主要用于检测串行数据流的帧边界
及多帧边界,并验证链路参数是否与用户设置一致。初始化通道同步由初始化通
道对齐序列(ILAS)完成,初始化通道对齐序列由多帧构成,根据 JESD204B
同子类的工作模式,多帧个数不同, JESD204B 子类 0 可自定义多帧个数,
JESD204B
子类 1 2 多帧个数则为 4 个。以子类 1 2 为例,初始化通道对齐序列的每个多
帧都以帧开始字符 /K28.0/ (即 /R/ 字符,其十六进制数为 1c )开始,链路同步字符
/K28.3/ (即 /A/ 字符,其十六进制为 7c )结束,特别的,第二个多帧会在开始字符
后跟上一个链路控制数据开始字符 /K28.4/ (即 /Q/ 字符,其十六进制为 9c ),随后
是链路参数具体值(字符 C ),初始化通道对齐序列中未填充位置便使用斜坡数据
(字符 D )进行填充,图 3-4 是初始化通道对齐序列示意。

初始化帧同步存在于 JESD204B 链路建立的各个阶段。代码组同步阶段,发
送端通过发送 /K28.5/ 字符完成帧标识;初始化通道同步阶段,接收端将接收到的
第一个非 /K28.5/ 字符作为一个新帧开始,即图 3-4 中的帧开始字符 /R/ ;接收端还
将根据链路参数 F 估计新帧开始位置。用户数据传输过程中可能会出现帧对齐错
误,为此通过对齐字符 /K28.7/ (即 /F/ 字符,其十六进制为 fc )和 /K28.3/ 字符插入
或替换特定帧,并在接收端验证对齐字符位置方式实现帧对齐监测和纠正。
3.4 基于 JESD204B 的多器件同步
对于多通道采集系统来说,同步指的是多个 ADC 器件同步采样并且采样数据
同步传输,通道之间采样数据的相位差保持稳定。无论是采用 LVDS 并行传输接
口的多 ADC 采集系统,还是基于 JESD204 高速串行接口协议的多 ADC 采集系统
首先都需要保证器件之间的采样时钟相位确定,然后保证采样数据同步传输。基
JESD204B 的多器件采集系统为实现数据同步传输,不仅同 LVDS 并行传输接
口一样采取数据走线匹配方式,而且还引入了两种同步方法:一种是时间戳,一
种是确定性延迟。在实际应用中,最常采用的是第二种方式,即通过实现确定性
延迟完成多器件同步 [25-26]
3.4.1 确定性延迟原理
通常要求基于 JESD204B 的多通道采集系统具有数据延迟在不同上电周期或
重新建立链路时可重复的特性。 JESD204B 标准将确定性延迟定义为样本以帧结构
进入串行发送器与样本以帧结构从串行接收器输出的时间差 [27] ,如图 3-5 所示。

确定性延迟包括固定延迟和可变延迟两部分。可变延迟由 JESD204B 协议定
义的多个用于数据传输及处理的时钟在每次上电或重新建立链路时相位关系不确
定引起。 JESD204B 子类 0 虽然不需要借助外部电路就可以实现单链路多通道对齐,
但是其在不同上电周期或重新建立链路时链路延迟无法固定,不适用于多链路需
要同步的情况。 JESD204B 子类 1 、子类 2 则通过确定性延迟实现多链路同步,发
送端需使所有通道在某一“确定时刻”同时发送初始化通道对齐序列,接收端各
通道对应的接收缓冲器需在某一“确定时刻”同时释放所有通道数据。无论是发
送端的“确定时刻”还是接收端的“确定时刻”计数单位都是帧时钟。发送端的
“确定时刻”可以是 SYNC 拉高后的第一个多帧边沿,也可以编程为 SYNC 信号
上升之后的几个多帧边沿。接收端的“确定时刻”指多帧边界后的几个可编程帧
周期( RBD RX Buffer Delay ),可编程帧周期取值范围为 1 K 。为确保接收缓
冲器在释放所有通道的数据之前,各通道的数据已全部到达,所有通道中最大延
迟必须小于本地多帧周期, RBD 值与帧周期乘积必须大于数据通道中可能的最大
延迟。
3.4.2 SYSREF 设计
上述确定性延迟要求提及的初始化通道对齐序列发送和接收缓冲器释放时刻
与发送端和接收端中的帧时钟、多帧时钟有关。发送端、接收端的帧时钟、多帧
时钟相位对齐是实现确定性延迟的关键。
JESD204B 子类 1 采用 SYSREF 对齐系统
中各器件之间的帧时钟、多帧时钟相位,如图 3-6 所示 [28]

随着转换器件采样率的提升, SYSREF 相对于器件时钟的建立及保持定时变得
极具挑战,尤其采样率达千兆的器件。本文采用的 ADC12DJ3200 采样率高达
6.4GSPS ,为应对 SYSREF 的建立保持窗口减小的情况,该款 ADC 通过在单通道
模式下使用双边沿采样将输入时钟(器件时钟)频率减小一半的方式达到将
SYSREF 建立保持窗口增加一倍的效果。除了降低输入时钟频率的方式以外,该
ADC 还提供了 SYSREF 窗口以及 SYSREF 自动校准两种功能。通过 SYSREF 窗口
检测 SYSREF 位置(相对于器件时钟)和 SYSREF 采样位置选择辅助用户设计以
满足各种情况下的建立保持时间需求。 SYSREF 自动校准相较于 SYSREF 窗口功
能更易操作,使用孔径时间调整模块基于 SYSREF 相位移动 ADC 采样序列,而不
是基于 ADC 采样序列调整 SYSREF 相位。
SYSREF 窗口功能需按照一定过程实现 [29] 。首先,需给 ADC 芯片提供采样时
钟及 SYSREF SYSREF 捕捉模块使用 SYSREF 窗口确定 SYSREF 相对于设备时
钟的位置,并将该位置值存储在 SYSREF 位置寄存器( SYSREF_POS )中。
SYSREF_POS 寄存器的每一位都代表一个潜在的 SYSREF 采样位置。当
SYSREF_POS 中的某一位被置位,那么相应的 SYSREF 采样位置有潜在的建立或
保持违例。然后,根据 SYSREF_POS 寄存器 值 在 SYSREF 选择寄存器
(SYSREF_SEL)中设置与 SYSREF_POS 相对应的有效采样位置。该采样位置通
常位于两个建立和保持时间都满足的采样位置的中间。 SYREF_SEL 的取值范围为
0 15 ,即 SYSREF 窗口功能仅支持将 SYSREF 设置在前 16 个采样位置。根
SYSREF_POS 数值选择 SYSREF_SEL 位置的示例如表 3-1 ,加粗部分表示可以
选择的位置。 SYSREF_POS 采样位置步进可以通过 SYSREF 放大寄存器
SYSREF_ZOOM )调节。当 SYSREF_POS 0 23 位都为 1 时需要将
SYSREF_ZOOM 设置为 0 ,其他时候都将该值设置为 1
根据上文,为本文采集模块选择满足建立和保持时间的最佳 SYSREF 位置。
SYSREF_ZOOM 设置为 1 ,关闭 SYSREF 自动校正功能,然后读取 SYSREF_POS
值。

由表 3-2 ADC1 ADC2 SYSREF_POS 值可知,
ADC1 SYSREF_SEL
设置为 13 可以满足建立保持时间,而 ADC2 SYSREF_SEL 设置为 12 13
能够满足建立保持时间,故可将两个 ADC SYSREF_SEL 的值都设置为 13

3.4.3 基于确定性延迟的多器件同步
JESD204B 子类 1 实现链路确定性延迟的过程如图 3-7 所示 [30] 。首先 SYSREF
指定发送端及接收端的本地多帧时钟边界,发送端在 SYNC 信号拉低后开启链路
建立、同步过程,接收端各通道的接收缓冲器缓存有效数据,在接收端所有通道
都接收到有效数据之后,才在其下一个本地多帧边界同时释放所有缓存数据。此
时所有数据通道的数据延迟恰好为一个本地多帧周期,即 RBD K 值,且延迟是
确定、可重复的。当然缓存在接收缓冲器的各通道有效数据也可以在下一个本地
多帧边界之前释放,即 RBD 的值小于 K ,其中最小 RBD 取值对应的延迟称为最
小确定性延迟。
JESD204B IP 核将 0x030 寄存器( RBD )定义为接收端缓冲器延迟,
并为每一个数据通道定义了缓冲调整寄存器( Buffer Adjust )用于指示接收缓冲器
的填充水平。在所有数据通道中找出缓冲调整寄存器最小值,并将该值赋值给 RBD
便可实现最小确定性延迟。

上述 RBD 值调整基于数据通道最大延迟满足小于一个多帧的要求,实际数据
通道的最大延迟可能并不满足此要求。不仅如此,链路还可能出现两个通道的有
效数据分别落在两个相邻本地多帧内的情况。
信迈提供高速数据采集方案。

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

相关文章

JESD204接口调试总结——JESD204C协议的介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结——JESD204C协议的介绍 前言JESD204C变化总结新术语传输层数据链路层物理层 第二部分64b/66b和64b/80b链路层多块(MB)和扩展多块(EMB)同步字64b/66b链路…

JESD204B 和 JESD204C 之间的差异

JESD204 标准 JESD204规范定义了实现协议数据流的四个关键层,如图9所示。 传输层映射样本和已帧、已解码的字节之间的转换。可选的扰乱层对八位元进行扰动/解扰动,分散谱峰值以降低电磁干扰(EMI)。数据链路层处理链路同步、设置和维护,并对…

纸上谈兵_JESD204B

文章目录 基本概念优点子类协议结构链路参数传输层映射方式测试模式 数据链路层对齐字符替换与还原数据链路建立与维护 物理层 时钟器件时钟帧时钟/多帧时钟调整时钟各时钟关系图各协议层时钟使用情况 Xilinx IPPortsBasic Generic Clocking SchemesSubclass 1 OperationRx exa…

【JESD204系列】三、JESD204B标准分层

JESD204B 作为一种分层规范,在规范中共定义了四个层,分别为应用层,传输层,数据链路层和物理层。各层分别执行各自的对应的功能,最终通过四个层的联合,将数据高速无误的进行传输。 【JESD204系列】三、JESD2…

【高速总线】JESD204B简介

一、简介 JESD204是一种连接数据转换器(ADC和DAC)和逻辑器件的高速串行接口,支持高达 12.5 Gbps串行数据速率,并可确保 JESD204 链路具有可重复的确定性延迟。随着高速ADC跨入GSPS范围,与FPGA(定制ASIC&am…

JESD204接口调试总结——JESD204B协议的理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结——JESD204B协议的理解 JESD204B建链的步骤 本节内容摘抄于网络上,写的比较明了,故转载于此 内容来源:理解JESD204B协…

JESD204B协议基础知识

目录 1.JESD204B优势 2. 关键变量 3.IP核应用 4.同步 4.1 代码组同步 4.2 初始化多帧序列 4.3 数据传输 1.JESD204B优势 JESD204是基于SERDES的串行接口标准,主要用于数模转换器和逻辑器件之间的数据传输,最早版本的是JESD204A,现在是…

JESD204B 协议解析和参数理解

目录 1. 概述 2. 时钟 3. 同步协议 4. 参数理解 1. 概述 在JESD204接口出现以前,数模转换器的数字接口绝大多数是差分LVDS的接口,这就造成了布板的困难,当PCB的密度很大的时候就需要增加板层从而造成制版的成本。但是JESD204需要…

JESD204B简介(一)-------理论概述篇

JESD204B是一种新型的基于高速SERDES的ADC/DAC数据传输接口。JESD204和JESD204B修订版数据转换器串行接口标准由JEDEC委员会制定,旨在标准化并减少高速数据转换器与FPGA(现场可编程门阵列)等其它器件之间的数据输入/输出数目。更少的互连可简…

JESD204B简介

1、SERDES技术 了解JESD204B之前需要先了解SERDES(SERialization/DESerialization)技术,也就是串化和解串,在发送端将多位并行的数据转换为1bit的串行数据,在接收端将串行数据恢复成原始的并行数据。如下图为基于FPGA的…

高速接口----JESD 204B(1)

前言 最近两周在做一些关于高速ADC的东西,也算是接触到了一些新的东西,做技术的,就是要不断地学习新的东西才可以啊。调试的平台是zcu102daq3。daq3是ADI推出的一个高速AD和DA的评估板。上面主要的芯片是ADC芯片AD9680,DAC芯片AD…

gzip chunked

gzip chunked --比天空间-- - mod_gzip和chunked http://www.httpwatch.com/httpgallery/chunked/ When an HTTP client is reading a response message from a server it needs to know when it has reached the end of the message. This is particularly important with per…

http协议里的chunked编码与测试

如果有写过http下载的人,或多或少了解一点chunked编码的传输方式。例如笔者最初不知道这个http传输方式,以前能行的代码有一天就突然不行了,抓包才发现数据异样。 chunked编码 分块传输编码(Chunked transfer encoding&#xff09…

c客户端http post chunked协议上传到服务器demo源码

下面例子中 :c 客户端采用 chunked协议上传到服务器,java 服务器返回的不是chunked 协议 chunked 编码协议格式参考 https://blog.csdn.net/wy5761/article/details/17568851 c 客户端 chunked 完整内容是 Hello, world,how are you 。分了2块上传 Hel…

HTTP CHUNKED

服务端给浏览器发送报文时,必须告诉浏览器报文的大小,这样浏览器可以根据报文大小来判断报文的完整性以及在长连接中确定报文的截尾。但是很多服务器的报文是动态创建的,在发送之前是无法确定其大小的。服务器只有等待内容全部创建后&#xf…

chunked java_HTTP协议的chunked编码

一般情况HTTP的Header包含Content-Length域来指明报文体的长度。如: 有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或者后台需要复杂的逻辑才能全部处理页面的请求,这时用需要实时生成消息长度,服务器…

HTML中chunked解码和gzip解压

chunked编码 chunked编码的的好处 当访问的时动态页面时,服务器则无法预知内容的大小,因此需要一遍产生数据,一边发送数据,将数据分块发送(服务器通过响应头’Transfer-Encoding: chunked’告诉浏览器它将使用chunked编码传输)。…

Android:rxjava简单实现原理(map/flatmap操作符)

rxjava 装饰者模式1、背景2、定义3、特征4、装饰者模式demo rxjava装饰者模式1、rxjava中转换操作符map的简单实现2、rxjava中转换操作符flatmap的简单实现 装饰者模式 1、背景 假设奶茶店有两种茶,果茶(fruit tea)和奶茶(milky tea)&#…

java dataset flatmap_Spark中map和flatMap的區別詳解

本文介紹了Spark中map(func)和flatMap(func)這兩個函數的區別及具體使用。 函數原型 1.map(func) 將原數據的每個元素傳給函數func進行格式化,返回一個新的分佈式數據集。(原文:Return a new distributed dataset formed by passing each element of the…

Spark中flatMap的操作

Test 1: package test.wyh.wordcountimport org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}object TestFlatMap {def main(args: Array[String]): Unit {//建立Spark连接val sparkConf new SparkConf().setMaster("local&quo…