2. JESD204链路分层架构与数据流

JESD204B/C 把一条高速串行链路拆成三个职责清晰、彼此解耦的层次:传输层(Transport Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。理解这三层的关键,不是记住名字,而是搞清楚"一个采样点从 ADC 内部走到 FPGA 内部,中间被谁改成了什么样子"。下面按数据自下而上、再自上而下的顺序展开。

一、三层职责划分

传输层负责"采样数据如何映射成帧"。它把来自转换器(ADC/DAC)的多个通道、多位宽样本,按配置参数 M(转换器数)、L(通道/链路数)、F(每帧每通道的八位组数)、S(每帧每转换器样本数)、N(转换器分辨率)、N'(打包位宽)组织成一组组八位组(octet)。传输层不关心电气特性,只关心"哪个样本的哪几位放在哪个八位组的哪个位置"。典型例子:一颗双通道 14 位 ADC,M=2、N=14、N'=16、L=4、F=2、S=1,意味着每个转换器每帧送 1 个样本,样本被补零到 16 位后拆成 2 个八位组,两个转换器共 4 个八位组,正好分给 4 条链路各 1 个八位组。

数据链路层负责"八位组如何变成可靠的串行码流"。它做四件事:加扰(Scrambler)、8B/10B 或 64B/66B 编码、对齐字符插入与对齐监控、多帧/多块(Multiframe/Multiblock)结构维护。链路层还要处理同步请求(SYNC~)、初始通道对齐(ILAS)序列、以及错误检测(如 8B/10B 的 disparity 错误、64B/66B 的同步头错误)。

物理层负责"比特如何在差分对上传输"。它包含 SerDes、发送均衡(FFE)、接收均衡(CTLE/DFE)、时钟数据恢复(CDR)、预加重与去加重、以及眼图相关的电气指标。物理层只认 0/1,不认帧结构。

记忆口诀:传输层管"内容排布",链路层管"编码与对齐",物理层管"电气与时钟"。

二、8B/10B 编码与加扰

8B/10B 编码把 8 位数据映射成 10 位码字,保证直流平衡(running disparity 收敛)和足够的跳变密度,使接收端 CDR 能持续提取时钟。它同时提供 K 字符(如 K28.5 逗号字符)用于对齐和同步。JESD204B 在链路速率较低时使用 8B/10B;JESD204C 在高速时改用 64B/66B,编码开销从 25% 降到 3.125%。

加扰在编码之前进行,用自同步 LFSR(多项式通常为 1 + x^14 + x^15)对八位组做异或,目的是打散长连 0/长连 1 和周期性图案,降低 EMI 并帮助 CDR。加扰是可选但强烈建议开启的,收发两端必须一致。注意:加扰不改变数据长度,只改变比特图案。

三、对齐与多帧结构

链路建立分三步:代码组同步(CGS)——接收端拉低 SYNC~,发送端持续发 K28.5,接收端找到逗号字符后拉高 SYNC~;初始通道对齐(ILAS)——发送端连发 4 个多帧,包含对齐字符 R 和配置参数(M、L、F、S、N、N'、K 等),各链路据此对齐;数据传输——进入正常帧流。

多帧由 K 个帧组成,K 取值 1~32(JESD204B 常用 K=32)。每帧以帧对齐字符 /F/(K28.7)结尾,每个多帧以多帧对齐字符 /A/(K28.3)结尾,ILAS 期间用 /R/(K28.0)和 /Q/(K28.4)。这些对齐字符让接收端能持续监控帧边界,一旦失配就重新同步。

JESD204 三层数据流与帧结构 传输层 Transport M/L/F/S/N/N' 映射 样本 → 八位组 数据链路层 Data Link 加扰 LFSR 8B/10B 或 64B/66B 对齐字符 /F/ /A/ /R/ /Q/ 物理层 Physical SerDes / FFE / CTLE CDR / 差分对 帧 / 多帧结构 帧 0:D0 D1 … /F/ 帧 1:D0 D1 … /F/ ⋮ 帧 K-1:D0 D1 … /F/ 多帧尾:/A/ K 个帧 = 1 个多帧 K 取值 1~32 ILAS 用 /R/ /Q/ 接收端处理链 CDR 恢复时钟 → 采样比特 10B→8B 解码 / 解扰 对齐监控:/F/ /A/ 匹配 多链路 deskew 对齐 传输层逆映射 → 样本 链路建立状态迁移 ① CGS 代码组同步 ② ILAS 初始对齐 ③ 数据传输 ④ 失步重同步

四、一个可复现的配置示例

假设使用 AD9250(双通道 14 位 ADC),采样率 250 MSPS,配置为 M=2、L=4、F=2、S=1、N=14、N'=16、K=32,线速率 5 Gbps,采用 8B/10B。计算过程如下:

每帧每链路八位组数 F = 2
每帧总八位组 = L × F = 4 × 2 = 8
每帧样本数 = M × S = 2 × 1 = 2
每样本打包位宽 N' = 16 bit = 2 octet
每帧有效载荷 = 2 × 2 = 4 octet
帧周期 = 1 / (250 MSPS / S) = 1 / 250 MHz = 4 ns
线速率 = 5 Gbps → 每链路每帧比特 = 5 Gbps × 4 ns = 20 bit
8B/10B 后每链路每帧码字 = 20 / 10 = 2 个 10B 码字
即每链路每帧传 2 个八位组,与 F=2 一致 ✓

配置时需保证 L × F × 10 / 8 = 线速率 × 帧周期,否则链路无法建立。实际调试中,若 SYNC~ 一直拉低无法拉高,优先检查 CGS 阶段是否收到 K28.5;若 ILAS 后进入数据态又频繁失步,检查 K 值是否两端一致、加扰开关是否匹配。

五、常见排障对照

现象可能层级检查点
SYNC~ 始终为低物理层 / 链路层差分对极性、CDR 锁定、K28.5 发送
ILAS 后立即失步链路层K 值、加扰、F/L 配置一致性
数据错位但链路稳定传输层M/S/N/N' 映射、通道顺序
眼图闭合、误码率高物理层FFE/CTLE 参数、走线损耗、参考时钟抖动
注意:8B/10B 与 64B/66B 不可混用;JESD204B 默认 8B/10B,JESD204C 支持 64B/66B。切换编码方式时,K 值、对齐字符定义和 ILAS 结构都会变化,必须同步修改两端配置。

把三层职责、编码加扰、对齐字符和多帧结构串起来看,JESD204 的本质就是:传输层定义"数据长什么样",链路层定义"数据怎么可靠地走",物理层定义"数据在什么介质上以什么电气形式走"。任何一层配置错误,都会在最终样本上表现为错位、丢帧或误码。