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

news2024/9/29 3:28: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://www.coloradmin.cn/o/486268.html

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

相关文章

linux驱动开发 - 10_阻塞和非阻塞 IO

文章目录 1 阻塞和非阻塞 IO1.1 阻塞和非阻塞简介1.2 等待队列1、等待队列头2、等待队列项3、将队列项添加/移除等待队列头4、等待唤醒5、等待事件 1.3 Linux驱动下的poll操作函数 2 阻塞 IO 实验1、驱动程序编写2、编写测试 APP3、编译驱动程序和测试 APP4、运行测试 3 阻塞 I…

elform 动态 rules

一.使用v-for渲染时 前端由于某些需求场景需要,部分表单的渲染是通过 v-for循环渲染显示,此时如何实现表单验证呢?如下,点击第一行的号可以动态的增加更多行表单,不同于单一固定的表单行[参见下文一般情况下]&#xf…

book-riscv-rev1.pdf 翻译(自用)第一章 操作系统接口

Job of operating system: 操作系统使得多个程序分享一台计算机,提供一系列仅靠硬件无法支持的服务。 管理与抽象低级别硬件(如:文件处理程序不需要关注使用哪种硬盘)使得多个程序分享硬件(programs that can run at…

【代码练习】旋转矩阵题解思路记录分析

题目 给你一幅由 N N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到? 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7…

【C语言】学习

文章目录 前言1. warm up1.1 输出helloworld1.2 示例1.3 C语言程序结构 前言 以后要学习操作系统深度学习了&#xff0c;所以C语言就不可缺少了。 1. warm up 1.1 输出helloworld #include<stdio.h> void main() {printf("Hello World!!"); }std 标准 io输…

JS案例分析-某国际音x-tt-params参数分析

今天我们要分析的网站是&#xff1a;https://www.tiktok.com/selenagomez?langen&#xff0c;参数名字叫x-tt-params。 先来抓个包 这个接口是用户视频列表url&#xff0c;参数叫x-tt-params&#xff0c;该接口中还有其他参数像msToken&#xff0c;X-Bogus&#xff0c; _sig…

Cartesi 2023 年 4 月回顾

查看你不想错过的更新 2023年5月1日&#xff0c;感谢Cartesi生态系统中所有了不起的构建者&#xff01; 在一个激动人心的旅程之后&#xff0c;我们的首届全球线上黑客马拉松正式结束了&#xff01;有超过200名注册建造者参加&#xff0c;见证了所有参与者展示的巨大才华和奉献…

【Android】串口通信的理论与使用教程

Android系统诞生这十几年以来&#xff0c;Android开发工程师岗位经历了由盛转衰的过程&#xff0c;目前纯UI的Android APP已经鲜有公司愿意花费巨资去开发&#xff0c;Android APP开发的业务也仅剩游戏、物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;等…

springcloud:新一代分布式定时任务框架——PowerJob

0. 引言 之前我们讲解过主流的分布式定时任务框架xxl-job&#xff0c;随着技术的迭代更新&#xff0c;更多的定时任务框架也开始出现&#xff0c;今天我们来看一看新一代的定时任务框架PowerJob 1. PowerJob简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#x…

Java设计原则之单一职责原则、开闭原则、里氏代换原则

文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性&#xff08;Maintainability&#xff09;和可复用性&#xff08;Reusability&#xff09;是两个非常重要的用于衡量软件质量的属性&#xff0c;软件的可维护性是指软…

Ubuntu常用命令总结

目录 1&#xff09;安装包命令及下载包命令 2&#xff09;阅读协议内容 3&#xff09;执行sh文件&#xff1a; 4&#xff09;创建虚拟环境 5&#xff09;激活虚拟环境 6&#xff09;虚拟环境中安装包 7&#xff09;安装上传代码工具 8&#xff09;代码上传 9&#xff09…

传输控制协议(TCP)知识点总结

文章目录 传输控制协议&#xff08;TCP)知识点总结介绍数据包格式TCP连接的建立和关闭三次握手四次挥手一张图展示这些过程 其他知识 传输控制协议&#xff08;TCP)知识点总结 维基百科: 传输控制协议&#xff08;TCP&#xff09;是Internet协议套件中的主要协议之一。它起源于…

五种最危险的新兴网络攻击技术

SANS研究所的网络专家揭示了包括网络罪犯和民族国家行为者在内的网络攻击者正在使用的五种最危险的新兴网络攻击技术。在旧金山举行的RSA网络安全会议上&#xff0c;由SANS研究所的几位分析师组成的讨论组讨论了新兴的网络攻击战术、技术和程序&#xff0c;并提供了如何为企业做…

使用GLSL来实现实时滤镜的效果

1. 先来明确几个概念 1.1 OpenGL OpenGL 全称为 Open Graphics Library&#xff08;开放图形库&#xff09;。 是用于渲染 2D 或 3D 图像的跨语言跨平台的应用程序编程接口&#xff0c;用于CPU控制GPU做图像渲染&#xff0c;是一套API。 提供设计人员一个共同的硬件驱动标准…

虚函数、静态绑定和动态绑定

静态绑定 class Base { public:Base(int data) :ma(data) {}void show() { cout << "Base::show()" << endl; }void show(int) { cout << "Base::show(int)" << endl; }protected:int ma; };class Derive : public Base { public…

Go | 一分钟掌握Go | 10 - 反射

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 反射你以为只在Java中有吗&#xff1f;Go也有反射机制&#xff0c;很多…

【JavaEE】应用层自定义协议及UDP协议

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 本篇文章将为大家介绍应用层中UDP协议~~ 在应用层这里&#xff0c;虽然存在一些现有的协议&#xff08;HTTP&#xff09;&#xff0c;但是也有很多情况&#xff0c;需要程序猿自定制协议&a…

OJ 功能介绍 使用手册

目录 服务器配置 OJ界面展示 用户管理 一、批量导入&#xff08;从方便管理角度建议以 学生姓名 作为 用户名 &#xff09; 二、批量生成临时用户 后期修改成需要的用户名和密码 &#xff08;学生登录后修改密码&#xff09; 三、用户自行注册&#xff08;填写邮箱获取验证码…

Nmap入门到高级【第九章】

预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…

【致敬未来的攻城狮计划】— 连续打卡第二十天:RA2E1_UART —— 串口通信例程

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 3.欲速则不达&#xff0c;今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…