高速串行总线基础:差分信号、编码与时钟恢复
做高速串行设计这些年,我越来越觉得,差分信号、编码技术和时钟恢复这三样东西,就像串行总线的三根柱子。你缺一根,整个系统就摇摇晃晃。今天咱们就把这三根柱子拆开看看,到底是怎么撑起上百Gbps传输的。
差分信号:两条线的舞蹈
先聊差分信号。说白了,就是一对儿信号线,一根传正相,一根传反相。接收端拿两个信号的差值做判决。为什么要这么折腾?
共模噪声抑制——噪声同时耦合到两根线上,做差后噪声自己抵消了
电磁辐射更低——两根线走线紧贴,磁场互相抵消
电压摆幅可以很小——LVDS能低到350mV,省电还快
我记得十年前调一块28Gbps背板,单端信号怎么都过不了眼图测试。换成差分对之后,同样一块板子,眼图一下打开了。那会儿才真正理解为什么所有高速串行总线都选差分——PCIe、SATA、USB、以太网,无一例外。
编码技术:把数据变成适合传输的符号
原始数据不能直接往线上送。为什么?连续一串0或1,接收端会失去时钟同步。所以需要编码,保证足够的电平跳变。
常见编码方案有这几种:
| 编码类型 | 开销 | 典型应用 | 我个人看法 |
|---|---|---|---|
| 8b/10b | 25% | PCIe Gen1/2, SATA Gen1/2, USB 3.0 | 经典,但效率低,现在慢慢退役了 |
| 64b/66b | 3.125% | PCIe Gen3, 10G Ethernet | 效率高,同步头只有2bit |
| 128b/130b | 1.56% | PCIe Gen4/5, USB 3.2 | 开销极低,但需要更强的CDR |
| NRZ与PAM4 | — | NRZ用于大多数总线,PAM4用在400GE/PCIe Gen6 | PAM4眼图更复杂,但带宽翻倍 |
我曾经踩过一个坑:项目从PCIe Gen2升级到Gen3,直接换了物理层IP,但没有检查编码方案。结果Gen2用的8b/10b,Gen3换成64b/66b,AC耦合电容值没调,跑起来丢包一大堆。所以各位换协议代际,编码和CDR参数一定要一起审。
时钟恢复:从数据流里“挤”出时钟
发送端不单独传时钟信号。接收端必须从数据流里自己恢复时钟。这就是时钟数据恢复(CDR)干的事。
CDR的基本流程:
- 相位检测器比较数据边沿和本地时钟的相位差
- 环路滤波器(通常是PI控制器或数字滤波器)产生控制电压/数字码
- 压控振荡器或数控振荡器调整时钟相位,锁定到数据眼图中心
这里有个关键概念:抖动容忍度。接收端CDR带宽决定了它能跟踪多快的抖动。带宽太窄,跟不上抖动,误码;带宽太宽,把噪声当成了抖动,也误码。
预加重与均衡:补偿传输损耗
信号在PCB上走过一段路,高频成分衰减远大于低频。结果就是眼图闭合,码间干扰严重。发送端预加重提升高频分量,接收端均衡器再反过来补偿。
常见的均衡结构:
- CTLE(连续时间线性均衡):模拟滤波器,放大高频,压低低频
- DFE(决策反馈均衡):根据之前判决的符号调整当前门限,消除后标
- FFE(前馈均衡):发送端或接收端用抽头延迟线做预补偿
我有一块12.5Gbps的板子,走线长30英寸,厂家Sim结果说眼图还有30%开度。实际打样回来,不加CTLE根本跑不了。加了一级CTLE再加三阶DFE,误码率才降到1e-15以下。板厂仿真很多时候乐观了,留够裕量没错的。
本章知识体系
我画了一张图,把这几块的关系串起来——从发送端数据开始,经过编码、差分驱动、预加重,到接收端均衡、CDR恢复时钟、解码还原数据。顺便也标出了每个环节容易踩的坑。
把链路串起来看
你看这张图,链路不是孤立的。发送端编码保证了足够跳变,CDR才有东西可锁;差分信号抗了共模干扰,均衡才能把闭合的眼图再打开。任何一个环节出问题,最终就是误码率高或者链路训练失败。
还记得TS1/TS2序列吗?它们就是在链路上层协议跑起来之前,先让接收端CDR锁定、均衡器收敛。所以理解本章的基础,后面看序列解析才不会觉得是空中楼阁。
本章小结
- 差分信号抗噪、低辐射,是所有高速串行总线的物理层基础
- 编码保证直流平衡和足够跳变,8b/10b逐步向64b/66b、128b/130b演进
- CDR从数据流提取时钟,环路带宽是关键调优参数
- 预加重+均衡补偿信道损耗,CTLE、DFE、FFE各有适用场景
- 链路调试时,按“编码→差分对质量→CDR锁定→均衡效果”的顺序排查,最省时间
嗯,基础就这些。下次你看到TS1/TS2序列里的某个码型,或者链路训练失败日志,脑子里第一时间反应出来的应该是——编码对了没有?差分对走线等长了没有?CDR锁上了没有?