在高速数据传输的电子领域中,接口协议的性能至关重要。本文参考 B 站尤老师 JESD 204B 视频,图片来自 JESD 手册或者 ADI /TI 文档,为大家带来 JESD204B 高速接口协议的详细解析。
JESD204B 是逻辑器件和高速 ADC/DAC 通信的一个串行接口协议。在此之前,ADC/DAC 与逻辑器件交互的接口大致分为低速串行接口(如 I2C 、SPI)、低速并行接口(包含时钟信号和并行数据信号,例如 AD9226、AD9280 等)、LVDS 接口(在低速并行接口的基础上将数据线和时钟线变为差分信号,速度可以达到几百 MHz),演变为 JESD204 高速串行总线。前两种接口的 ADC 和 DAC 在单片机和 FPGA 中使用较为常见,这里不再赘述。下面重点讲解 LVDS 接口的劣势,以及高速 ADC 为何会演变为 JESD204。
首先是 PCB 布局布线的难度。以相同的 16 位 DAC 为例,LVDS 接口需要使用 16 对差分数据线,而 JESD204B 接口只需要使用 4 对差分线(带宽与 LVDS 接口一致),如图 1 所示。

图 1 数据线的差别
从 PCB 布线来看,由于数据线之间还要严格等长,LVDS 需要使用 4 层布线,而 JESD204B 只需要一层布线即可
同时,由于芯片数据引脚减少,芯片的尺寸也可以做得更小,从而缩减 PCB 的面积,如图 3 所示。

LVDS 接口的时序所示,在时钟信号的边沿采集并行数据总线的状态,容易引起信道偏斜。要求各数据线之间严格等长,在时钟边沿能够稳定采集所有数据线的状态。在使用 LVDS 接口的器件时,一般都需要去通过 idelaye 去调节时钟和数据线的相位关系。但如果数据线之间本身就没有对齐,当时钟频率较高时,整个系统很可能调试不出结果。时钟频率越高,数据线对齐的要求越严格,当时钟频率增加到某些值时,PCB 走线可能已经无法完成对齐。
JESD204 接口是在高速 Serdes 的基础上封装得到的,因此数据传输的原理是一样的。如图 5 所示,JESD204 接口并没有随路时钟信号,接收端通过 CDR 技术去调节参考时钟和数据之间的相位关系,每路串行数据均有对应 CDR,各组数据线的 PCB 走线之间不需要等长对齐。
当然,JESD204 相对于 LVDS 也是有劣势的,JESD204 并不能取代 LVDS。由于 JESD204 的接收端需要锁相环给 CDR 提供参考时钟,因此 JESD204 的功耗一般会比 LVDS 高。
另外,JESD204 的接收端有缓冲器来实现多通道数据同步,数据传输延迟也会比 LVDS 大很多,因此在一些对延时比较敏感的系统中,可能还是得使用 LVDS。
JESD204 从发布开始至今有四个版本,分别为 JESD204、JESD204A、JESD204B、JESD204C,目前使用多的是 JESD204B,各个版本之间的差异如下表所示。
功能 | JESD204 | JESD204A | JESD204B | JESD204C |
---|
线速率 (Gbps) | 3.125 | 3.125 | 12.5 | 34.25 |
多 lane | 不支持 | 支持 | 支持 | 支持 |
多 lane 同步 | 不支持 | 支持 | 支持 | 支持 |
多器件同步 | 不支持 | 支持 | 支持 | 支持 |
确定性延时 | 不支持 | 不支持 | 支持 | 支持 |
其中支持确定性延迟是 JESD204B 的特点,JESD204B 链路的确定性延迟定义为串行数据从发送器 (ADX 或 FPGA) 的并行帧数据输入传播至接收器 (DAC 或接收端 FPGA) 并行帧数据输出所需的时间。
JESD204 包含 3 种工作模式,如下所示。其中子类 0 是 JESD204A 的工作模式,不支持确定性延迟。子类 1 通过 sysref 和 sync 实现确定性延迟,子类 2 通过 sync 实现确定性延迟。子类 1 的结构为复杂,也是 JESD204B 使用广泛的模式。
子类 1 的框图所示,时钟芯片同时给发送端和接收端提供 sysref 和 Device Clock,接收端和发送端通过 sysref 去产生与 Device Clock 同步的帧时钟和多帧时钟 LMFC。在链路建立阶段接收端通过拉低 SYNC 信号,去同步多 lane 数据,具体细节在后文的 JESD204B 确定性延迟章节进行讲解。
上图的发送端可以是 ADC 或者 FPGA,接收端可以是 FPGA 或者 DAC,从而实现 ADC 或者 DAC 与 FPGA 的数据传输。不管是发送端还是接收端,主要包含 Transport Layer、Scrambler、Link Layer、Physical Layer 等几部分。
物理层包含了完成高速并 / 串转换的 SDRDES 模块,时钟及时钟数据恢复模块(CDR),也规定了接口的物理电器特性如下表所示。
参数 | LV - OIF - Sx15 | LV - OIF - 6G - SR | LV - OIF - 11G - SR |
---|
线速率 | 312.5M~3.125G bps | 312.5M~6.375Gbps | 312.5M~12.5Gbps |
差分电压 | 500~1000 (mV) | 400~750 (mV) | 360~770 (mV) |
误码率 | ≤ 1e - 12 | ≤ 1e - 15 | ≤ 1e - 15 |
Link Layer 主要包括 8B10B 编解码、数据链路的建立(帧和通道对齐)、使用符号位链路监控。链路建立的过程如所示,具体实现在后文与确定性延时一起讲解。
加扰 (Scrambler) 用于去除数据相关性,例如各个帧同时发送相同的数据,从而减小造成的系统干扰和减小电磁兼容性问题。加扰多项式为 X15 + X14 + 1。

传输层(Transport Layer)的功能是将 AD/DA 的采集到的数据映射到非扰码的八字节的过程,需要理解一些参数的含义。
L:每颗 ADC 或者 DAC 芯片的高速收发器数量。
M:每颗芯片包含 ADC 或 DAC 通道数量。
F:每个高速收发器的每个 frame 包含几个字节的数据。
S:每个 frame 周期内芯片的采样点个数。
CS:每个采样点含有多少 bit 控制位。
表示该芯片包含 8 路(M = 8)分辨率为 11(N = 11)的 ADC,8 路 ADC 的数据通过 4 路(L = 4)高速收发器传输,每个采样点包含 2 位(CS = 2)控制位。ADC 每个采样点的数据需要经过两个时钟才能输出,因此在计算高速收发器线速率时,ADC 分辨率其实可以等效为 16 位。
假设 ADC 采样率为 X,则单个时钟 ADC 的采样数据为 XM16bit,然后需要经过 8B10B 编码,编码后的数据量为 (XM16)/0.8bit = XM20bit,通过 4 路高速收发器输出,每路高速收发器的线速率为 XM20/4 = XM5bps。当采样率为 100MHz 时,每路收发器线速率为 100M×8×5 = 4000Mbps。
ADS42JB49 的传输层所示,2 路 14 位 ADC 通过 4 路高速收发器传输数据,通过上述方式计算每路高速收发器线速率为 X×2×16/0.8/4 = X×10bps。