2. JESD204B协议基础

做量产测试,你首先得把协议的数据组织方式吃透。否则链路出了问题,你连波形都看不懂。这一节我带你把帧、多帧、行列结构掰开揉碎,配合一些我在产线上踩过的坑,争取一次讲明白。

2.1 帧(Frame)—— 数据传输的基本单元

帧是什么?说白了,它就是在串行链路上一次性传完的一个数据块。JESD204B里,一个帧包含固定数量的字节,这个数量由参数 F(每帧字节数)决定。比如 F=4,那每一帧就是 4 个字节。你想想看,接收端每收到一帧,就知道该按 4 字节去解析。

帧里装的是啥?是采样数据,但未必只装一个样本。参数 S(每帧样本数)告诉你一帧里放了多少个样本。举个例子,如果 S=1,那一个帧刚好放一个转换器样本;如果 S=2,那一个帧就要塞两个样本进去。

笔者的避坑提醒: 我个人习惯在调试板上先检查帧边界。我曾经遇到过一个情况,链路能同步,但数据总是错位。后来用示波器抓了帧时钟,发现时钟抖动导致帧对齐丢失。所以量产测试时,帧对齐的 Margin 一定要留够。

帧的传输频率由帧时钟控制。在链路层,每个帧的开头都有一个字符对齐机会,JESD204B 利用这个特性可以快速完成字节同步。这也是量产测试里常数场景——测链路先看帧边界有没有锁定。

关键参数表:

参数 含义 典型值
F 每帧字节数 1, 2, 4, 8 ...
S 每帧样本数 1, 2, 4
帧时钟 数据传输的基本节拍 由链路速率和 F 决定

2.2 多帧(Multiframe)—— 同步与管理的更高层次

单帧搞不定同步和配置。JESD204B 把若干个连续帧打包成一个多帧(Multiframe),多帧才是链路同步和初始化序列的基本单位。参数 K 定义了每个多帧里包含多少帧。K 的常见范围是 1~32,但实际应用中为了避免同步丢失,通常不会设太大。

多帧有什么用?最重要的两个——ILAS(初始化链路对齐序列)和 对齐监视。ILAS 就是在链路建立阶段,发端连续发送几个多帧,里面携带配置参数(比如 M, L, F, K 等),接收端解析完就能知道链路的完整配置。量产测试里,我会在 ILAS 阶段把参数读回来,和预期配置比对,这是检查链路完整性的第一关。

血泪教训: 我曾经在产线上遇到一批板子的链路间歇性失同步。查了三天,发现是 K 值设得太小,导致多帧边界太密,接收端偶尔丢一个帧就乱了多帧计数。后来把 K 从 4 改成 12,问题解决。所以务必根据线速和时钟质量合理选择 K。

多帧的边界靠 SYNC~ 信号或内部计数器来识别。ILAS 期间,发送端会在多帧的开头发送一个特定的控制字(比如 /A/ 字符),接收端据此锁定多帧对齐。

概念 关键参数 用途
帧 F, S 最小数据块、字符对齐
多帧 K ILAS、对齐监视、同步

2.3 行列结构 —— 从采样到链路的映射

帧和多帧是传输层面的概念,但数据怎么从 ADC/DAC 的样本变成帧里的字节?这就轮到传输层的行列映射了。你可以把整个数据传输想象成一个二维数组——行对应帧索引(0 到 K-1),列对应链路通道(0 到 L-1)。每个格子里放的是某个转换器的某个样本的一部分。

我随便举个例子:假设有 2 个转换器(M=2),1 条链路(L=1),每帧 1 个样本(S=1),每帧 1 个字节(F=1)。那一个多帧里的数据就是 K 个帧,每个帧里放 1 个字节,这个字节要么是转换器0的样本,要么是转换器1的样本?实际上映射规则更复杂,但你看懂了行列结构,就能明白为什么量产测试时要用 PRBS 码型来验证映射对不对。

下面这张图把帧、多帧、行列映射串起来了,我建议你盯着看两分钟,比读一堆文字有效。

JESD204B 帧-多帧-行列结构关系图 帧 (Frame) 1 帧 F 字节 S 个样本 第 2 帧 ... 第 K 帧 ... 多帧 (Multiframe) — 共 K 帧 行列映射 (Row-Column) 行=帧序号,列=链路通道 行\列 Lane 0 Lane 1 ... 帧 0 SampA SampB 帧 1 SampC SampD ... 帧 K-1 SampX SampY 帧按顺序填入行 图例 帧(单帧) 多帧边界(虚线) 行列表头 行号(帧索引) 数据单元(样本内容) 连接 / 指向关系

图里你可以看到:左边是连续帧组成多帧,右边是行列映射表。量产测试时,我用一个已知的 PRBS 码型灌进发端,然后在接收端行列映射完的表格里抓数据,和预期一比对——映射有没有错、字节顺序对不对,一目了然。

关键点: 行列映射在量产测试中是一个经常被忽略的坑。很多工程师只检查链路速度,不检查映射正确性。我建议在产测程序中至少加入以下两步:
1. 在 ILAS 阶段解析配置参数,验证 M/L/F/S/K 是否与设定一致。
2. 用 PRBS 数据填充所有样本,在接收端按行列映射重组后,再做 CRC 校验,确保每个样本落在正确的位置。

最后我把帧、多帧、行列三者的核心差异再整理一下,方便你做笔记:

结构 定义 关键参数 用途
帧 最小数据传输单元 F(字节/帧),S(样本/帧) 字符对齐、字节同步、基本数据块
多帧 连续 K 个帧组成的逻辑单元 K(帧/多帧) ILAS、链路同步、对齐监视
行列映射 将转换器样本按帧索引和链路通道排列的二维映射 M, L, S, F, K 数据重组、验证映射正确性

行,帧、多帧、行列的结构先聊到这儿。下回我们就要进入实际的人机交互测试场景,这些概念会一个不落地用起来。