2. JESD204B 术语与架构:链路层、传输层、物理层
终于到了 JESD204B 最核心的部分——三层架构。说白了,这条高速串行链路就是靠物理层、链路层、传输层各司其职,才能把 ADC 采到的数据安安稳稳地送到 FPGA 里。
我个人习惯把这三层比喻成快递公司:物理层是高速公路和卡车,链路层是分拣中心和运单号,传输层是装箱单和货物清单。你想想看,货车跑得快但箱子装错了,或者运单丢了,数据照样到不了。下面我们一层一层拆开看。
2.1 物理层(PHY)—— 卡车和高速公路
物理层就是最底下的 SerDes 硬核,处理真正的比特流。发送时把 8B/10B 编码后的 10 位并行数据串行化,丢到差分线对上;接收时从线对上把串行信号恢复成 10 位并行码。
我记得第一次调 JESD204B 的时候,板子刚上电,同步死活过不去。量差分信号眼图闭得不行,才发现参考时钟抖动太大了。后来我习惯先用示波器看眼图和时钟抖动,确认物理层干净了再往上层查。嗯,这步省不得。
关键参数就几个,我列个表方便你对照查:
| 参数 | 说明 | 典型值 / 范围 |
|---|---|---|
| 线速率(Line Rate) | 单个 lane 的串行速率 | 最高 12.5 Gbps(JESD204B) |
| 参考时钟 | 给 SerDes PLL 用的 REFCLK | 线速率 / 20 或 / 40,如 10G → 500MHz |
| 8B/10B 编码 | DC 平衡,帮助时钟恢复 | 编码后 10b,编码效率 80% |
| 差分对 | CML 电平,交流耦合 | 通常 0.1μF 隔直电容 |
| 预加重/均衡 | 补偿高频损耗 | 根据板级损耗设置 |
2.2 链路层(Link Layer)—— 分拣中心和运单号
链路层负责建立和维护 FPGA 与 ADC 之间的数据链路。它做了三件事:链路同步、加扰/解扰、码组同步。
- 代码组同步(CGS):一开始,发送端连续发 K28.5 字符(/K/),接收端在比特流中找到逗号序列,确定字符边界。
- 初始通道对齐序列(ILAS):CGS 完成后,发四个多帧的 ILAS。里面包含了链路参数(帧数、多帧数、分辨率等),接收端通过这些参数配置解帧逻辑。
- 加扰/解扰:我建议务必开启。加扰后数据近似白噪声,减少 EMI 和频谱杂散。ADC 芯片一般都有使能位,FPGA 侧用自同步解扰器就能复原。
链路状态机其实不复杂,网上很多状态图。但实际调试时最烦人的问题是:同步失败或者反复断开。有一次我遇到同步一过就断开,查了半天才发现 ADC 侧的地悬浮了。所以检查地回路、差分共模电压、以及参考时钟的相位噪声,都是链路层排查的常见突破口。
2.3 传输层(Transport Layer)—— 装箱单和货物清单
传输层决定了 ADC 采集到的样本怎么填进帧里。它把多通道的采样数据、控制位、填充位按照配置好的映射关系,打成一个个帧。
这里有两个核心概念:帧(Frame) 和 多帧(Multiframe)。
| 概念 | 定义 | 示例 |
|---|---|---|
| 帧(F) | 一个帧包含若干个 8 位字节,是一个基本传输单元 | 4 字节/帧 |
| 多帧(K) | 由 K 个帧组成,用于 ILAS 和 SYSREF 对齐 | K=32 帧 |
| 通道数(L) | 物理 SerDes 通道数 | 4 lanes |
| 转换器数(M) | ADC 内部转换器个数(每通道一个) | 8 通道 |
| 每帧样本数(S) | 每帧携带多少个转换器的样本 | 1 或 2 |
| 样本分辨率(N) | 每个样本的有效位数 | 14、16 等 |
传输层的参数配置(M、L、S、N、CS、F、K、HD)必须在 ILAS 中正确传递,否则接收端无法解析。我见过一个坑:ADC 配置了 12 位样本但填到了 16 位槽里,FPGA 端按 16 位解出来数据全是错的。所以核对配置表时候,别忘了 Octets per Frame 必须和 Samples per Frame × Bits per Sample / 8 对上。
- 传输层的参数一旦配置完,ADC 和 FPGA 必须完全一致,包括 N'(实际传输位宽,如果 N 不是 8 的倍数会填充到 N')
- 我习惯在 ILAS 之后抓一个数据包,用对照表手动数一遍字节偏移,验证映射是否正确。
- 如果 ADC 支持降采样或抽取滤波器,注意输出采样率的变化会影响帧时钟。我曾经因为抽取没关,搞了半天发现数据速率减半,帧对齐标错。
说白了,传输层是最终产生“数据”的地方。前面两层(物理层、链路层)只保证比特流能正确到达,但传的是什么,完全由传输层定义。所以调试 JESD204B 链路时,我会按“物理层 → 链路层 → 传输层”的顺序查。物理层灯亮跑得起速率,链路层能同步并接收 ILAS,最后再确认传输层样本顺序对不对。
这个顺序我很推荐大家用。实际项目中,八成的问题出在物理层(时钟、信号完整性),一成出在链路层(同步、地环路),剩下一成才是传输层配置。所以别一上来就怀疑映射表,先看看眼图好不好,SYSREF 有没有抖动,ILAS 的 K28.0 字符对不对。
好了,以上就是 JESD204B 三层架构的大致脉络。后面调试时你自会体会到我说的每一点。记住:物理层稳,链路层通,传输层对,数据自然就漂亮了。