物理层基础知识:SerDes、差分信号、速率与编码

讲JESD204B,绕不开物理层。很多工程师调试链路时只盯着协议层,结果眼图一团糟还不知道为什么。我个人的习惯是——先摸清物理层的脾气,再谈链路建立。

这一节我们就来拆解四个核心概念:SerDes结构、差分信号、数据速率和编码方式。说白了,它们决定了你的信号能不能从发送端完整地跑到接收端。

SerDes结构:收发器的骨架

SerDes是Serializer/Deserializer的缩写。发送端把并行的多路数据转换成高速串行流,接收端再把它还原成并行数据。JESD204B的链路本质上就是一条或多条SerDes通道。

一个典型的SerDes通道包含以下模块:

  • PLL(锁相环):产生高速时钟,频率精度和抖动直接影响眼图质量。
  • TX驱动器:把串行数据驱动到差分线上,输出摆幅、预加重可调。
  • RX均衡器:补偿传输损耗,常见有CTLE(连续时间线性均衡)和DFE(判决反馈均衡)。
  • CDR(时钟数据恢复):从数据流中提取时钟,并调整采样相位。

我在一个12Gbps的项目中遇到过CDR锁定失败的问题。后来发现是TX端的预加重没打开,导致接收端眼图闭合。调试时我习惯先检查PLL锁定状态,再看CDR的锁定指示,这两个锁定了,物理层基本就通了。

个人技巧: 调试初期,可以把SerDes的loopback模式打开,从TX直接环回到RX。如果环回能通过,说明SerDes本身没问题,问题大概率出在通道或连接器上。

差分信号:抗干扰的法宝

JESD204B高速信号走的是差分对(P和N)。差分信号比单端信号有两个明显优势——共模抑制和低辐射。

你想想看,如果外界干扰同时作用在P和N线上,接收端的减法器就会把共模干扰抵消掉。这就是差分信号抗干扰的本质。

实际布线时要注意这两条线必须等长、紧耦合。我记得有一次调一个8Gbps的链路,眼图张开角度总是不够。用示波器一看,P和N的长度差了5mm……改版后眼图马上变干净。

数据速率:别被标称值迷惑

JESD204B标准定义的物理层速率范围很宽,从1Gbps到12.5Gbps(B版),C版甚至支持到32Gbps。但速率不是越高越好。

这里有一个关键公式:

Line Rate = (M × F × N' × 10) / (L × 8)

其中M是转换器个数,F是每帧字节数,N'是样本比特数(包括控制位),L是通道数。那个10是8b/10b编码带来的开销。

实际项目中,我建议你先根据ADC/DAC的采样率和分辨率算出理论线速率,再留出20%~30%的裕量。为什么要留裕量?因为PCB损耗、连接器反射、时钟抖动都会吃掉你的眼图裕量。

JESD204B版本 最高线速率 (Gbps) 典型应用
Rev A 3.125 低速ADC/DAC
Rev B 12.5 中高速转换器
Rev C 32.0 射频直采/雷达

曾经有一个客户用了一款12.5Gbps的SerDes芯片做10Gbps的JESD204B链路,结果眼图一直不过。我带上示波器去现场,发现他们PCB的走线没有做阻抗连续,S参数在10GHz附近有个很大的谐振峰。后来换了低损耗板材,问题解决。这件事让我养成了一个习惯:选型时至少留20%的速率裕量。

编码方式:8b/10b与64b/66b

JESD204B物理层用的是8b/10b编码。每8位数据被编码成10位,额外增加2位用于直流平衡和时钟恢复。

8b/10b编码的好处是:

  • 保证数据传输中0和1的数量大致相等,避免直流偏移
  • 提供足够的跳变沿,让CDR能稳定恢复时钟
  • 内置运行不一致(Running Disparity)检测,可以快速发现单比特错误

编码开销是20%,也就是说实际传输的有效数据速率只有线速率的80%。比如线速率是12.5Gbps,有效数据吞吐量就是10Gbps。

后来JESD204C引入了64b/66b编码,开销降到3%左右,但物理层更复杂。目前主流还是8b/10b,我建议大家先掌握这个。

避坑指南: 我曾经遇到过一个奇怪的现象——链路偶尔会失锁,但不是每次都有。抓了一大堆log后发现,是发送端在发送特定数据模式时运行不一致失衡。解决办法是调整TX端的预编码模式,或者改用SCRamble(加扰)功能来平滑数据模式。

知识结构总览

下面这张图把物理层的四个核心维度串在一起,方便你理解它们之间的关系:

JESD204B物理层知识结构 JESD204B物理层 SerDes结构 差分信号 数据速率 编码方式 PLL / CDR TX/RX均衡 共模抑制 阻抗/等长 线速率公式 版本上限 8b/10b (20%开销) 64b/66b (3%开销) 调试时优先检查:PLL锁定→CDR锁定→眼图模板→误码率

调试时的关注点

有了这些基础知识,调试时你就有方向了。我个人的排查顺序是这样的:

  1. 先看PLL和CDR的锁定状态:设备寄存器里通常有明确的锁定指示位。
  2. 再测眼图:用示波器观察眼高、眼宽、抖动。合格的眼图应该满足JESD204B的模板要求。
  3. 最后跑PRBS(伪随机码)测试:让发送端发PRBS模式,接收端统计误码率。比特误码率低于1e-12才算可靠。
当心: 有些芯片对输入数据格式有要求,比如必须加扰(Scramble)后才能正常锁定CDR。曾经有一个项目,我花了一整天调眼图,结果发现是发送端的加扰没使能……嗯,从那以后我建了个检查清单,每项都不漏。

物理层是JESD204B链路的基础。你把这四个概念吃透了,后续链路建立、眼图测量、抖动分析都会顺很多。