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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网易云音乐开发--主页静态页面搭建

如何用VScode来开发小程序 wxml和wxss来高亮小程序 窗口设置 轮播图制作 就是通过swiper来设置轮播图 iconfont字体图标使用 这里要借助阿里的iconfonticonfont-阿里巴巴矢量图标库 找到自己喜欢的图标,添加到购物车 添加到项目 这样就可以统一的管理图标的库 …

三分钟教你看懂 spring 官方文档

新手如何学会查看官方文档API 首先进入官网:这里以 spring boot 为例 ,进入spring 官方地址 我们进入 spring boot 这里我们要看文档当然是要 learn 了,所以点进去。 我需要的东西在 IO 模块里面,点 IO 进入 发送邮件是不是有了…

MyBatisPlus代码生成器使用

MybatisPlus特点 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mappe…

Java8新特性函数式编程 - Lambda、Stream流、Optional

1.Lambda表达式 1.1 概述 ​ Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。 1.2 核心原则 可推导可省略 1.3 基本格式 (参数列表)->{代码}例一…

mvn help:effective-pom命令的作用

无论 POM 文件中是否显示的声明,所有的 POM 均继承自一个父 POM,这个父 POM 被称为 Super POM。在pom的继承关系中,子pom可以覆盖父pom中的配置;如果子pom没有覆盖,那么父pom中的配置将会被继承。按照这个规则&#xf…

ChatGLM的搭建过程

本次搭建的是清华大学开源的ChatGLM。源码地址。模型地址。 1、开启BBR加速 如何开启BBR加速可以去看我的这篇文章,Linux开启内核BBR加速。 2、拉取ChatGLM源码和ChatGLM模型 点击这里跳转到源码处。 点击这里跳转到模型下载处。 我这里在下载之前创建了一个目…

大厂都用DevOps!十分钟带你了解自动化在DevOps中的运用

Hi,大家好。DevOps、CI/CD、Docker、Kubernetes……好像全世界都在谈论这些技术,以至于你觉得即将到达NoOps阶段。别担心,在工具和各种最佳实践的浩瀚海洋中感到迷失是正常的,是时候让我们来分析一下DevOps到底是什么了。 一、De…

机器学习随记(5)—决策树

手搓决策树:用决策树将其应用于分类蘑菇是可食用还是有毒的任务 温馨提示:下面为不完全代码,只是每个步骤代码的实现,需要完整跑通代码的同学不建议花时间看;适合了解决策树各个流程及代码实现的同学复习使用。 1 数据…

【Redis7】Redis7 持久化(重点:RDB与AOF重写机制)

【大家好,我是爱干饭的猿,本文重点介绍Redis7 持久化(重点:RDB与AOF重写机制)。 后续会继续分享Redis7和其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 …

每天看一个fortran文件(7)之寻找cesm边界层高度计算代码

自从我把我的代码移到了单独的F90 中,从tphysac.F90中调用后。我发现有很多的变量我没办法调用了,特别是边界层中原先已经算好的变量,比如说我想调用原来模式中的pblh,但是那是在vertical diffusion.F90中计算的,在tphysac中根本调…

[python] 协程学习从0到1,配合案例,彻底理解协程,耗费资源不增加,效果接近多线程

文章目录 前言1.python 生成器1.1 python 生成器概述1.2 关键字yield/yield from1.3 next/send函数1.4 StopInteration异常1.5 利用生成器实现生产者-消费者模型1.6 生成器和协程的关系 2.生成器协程调度器3.python事件驱动编程4.实现协程调度器5.python 协程生态 前言 多进程…

ShardingCore安装笔记

由于本人采用Visual Studio的nuget管理器安装ShardingCore经常出现网络错误的问题,所以采用离线包的方式安装插件。 nueget包下载地址:NuGet Gallery | ShardingCore 7.7.1.8 ShardingCore使用版本7.7.1.7 1、下载各种依赖文件,并存放到系…

JAVA11新特性

JAVA11新特性 概述 2018年9月26日,Oracle官方发布JAVA11.这是JAVA大版本周期变化后的第一个长期支持版本,非常值得关注.最新发布的JAVA11将带来ZGC HttpClient等重要特性,一共17个需要我们关注的JEP,参考文档http://openjdk.java.net/projects/jdk/11/ 181:基于嵌套的访问控制…

HashMap 底层原理///HashMap详解

HashMap超详细探讨 总述从集合出发探讨HashMapCollection接口继承树Map接口继承树 从Map接口来,一步一步深入其中Map接口概述Map接口:常用方法Map接口 Map实现类之一:HashMapHashMap的存储结构HashMap源码中的重要常量JDK 1.8之前JDK 1.8总结…

《花雕学AI》28:革命性的 ChatGPT for SEO——让您的排名飙升 50%!

引言: 如果您想写篇有吸引力的文章,或者您是一个博客和网站的拥有者,那么您一定知道 SEO(搜索引擎优化)的重要性。SEO 可以帮助您提高相应的流量、转化率和收入,但是 SEO 也是一个复杂和耗时的过程&#x…

S3C6410 中的 cascaded irqdomain 之 gpio

文章目录 VIC 中断 与 gpio 中断 的硬件拓扑图描述linux cascaded irq domainirq domain 初始化时获取 IRQ number(软件中断号) 时中断发生时如何调试linux irq domain 实例 VIC domain 与 gpio domain 的硬件拓扑语言描述VIC 与 INT_EINTx 的关系INT_EINTx 与 GPIO的关系INT_E…

数电中需要注意的问题

逻辑函数表达式之间的相互转换 (更多请详见PPT)若题目要求用: 与非门实现逻辑函数,则画卡诺图圈出值为1的然后化简 或非门实现逻辑函数,则画卡诺图圈出值为0的然后化简 与或非门实现逻辑函数,则画卡诺图圈…

c++ 构造函数与析构函数

c构造函数: (1)构造函数名必须与类名相同 (2)无返回值 (3)访问权限符一般设置为public (4)无自定义构造函数,编译器提供默认构造函数,构造函数只调用一次 c析构函数: (1)析构函数与类名相同,前面加~符号 (2)析构…

纯比例控制为什么会存在稳态误差,用纯增益系统举例

warning: 本文仅为个人思考,非常不严谨甚至可能会出现严重错误,请读者仔细甄别,若本文真的存在严重错误,恳请评论区纠正,我看到将会考虑修改或者删除文章 纯比例控制存在稳态误差是由其本质(控制逻辑&#…

精炼计算机网络——物理层(一)

文章目录 前言2.1物理层的基本概念2.2 数据通信的基础知识2.2.1 数据通信系统的模型2.2.3 信道的极限容量 2.3 物理层下面的传输媒体2.3.1 导引型传输媒体2.3.2 非导引型传输媒体 总结 前言 经历了两篇文章的学习,相信读者们一定对计算机网络有了一个基础的了解。接…