在高速数据传输的电子领域中,接口协议的性能至关重要。本文参考 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。