SerDes 技术概述
各位工程师朋友,今天我们来聊聊 SerDes。说白了,SerDes 就是把并行数据变成串行数据传出去,再在接收端变回来。你可能会问:为什么不直接用并行总线?我刚开始也这么想,直到有一次调试一块 32 位并行总线,看到信号眼图根本睁不开……那次之后,我才真正理解了串行通信的价值。
串行通信基础
并行传输虽然概念简单——数据位一股脑同时发送,但到了 Gbps 级别,问题就全冒出来了。你有多少根线,信号之间的时滞(skew)就有多大;每根线的走线阻抗不可能完全一致,反射、串扰、功耗,每一项都够你喝一壶。
- 管脚数:并行总线占用太多 I/O,芯片封装和 PCB 布线的成本直线上升。
- 信号完整性:我记得在 5 Gbps 的并行设计中,即使等长控制在 ±10 mil,接收端的采样窗口已经小到几乎容不下抖动。
- 速率上限:并行总线的时钟频率很难超过 1 GHz,而串行链路的单通道速率早已突破 112 Gbps(PAM4)。
串行通信的优势恰恰在于 把复杂变简单
:一对差分线(甚至单根线)就够了,信号用差分传输天然免疫共模噪声,阻抗匹配也更可控。你自己想想,一根线不用管等长,是不是轻松很多?
核心公式:单通道数据吞吐率 = 符号率 × bit/符号(NRZ 为 1,PAM4 为 2)。实际有效吞吐率还要减去编码开销(如 8b/10b 有 20% 冗余,64b/66b 只有 ~3%)。
SerDes 架构怎么搭
一个典型的 SerDes 收发器可以分为发送端和接收端两大部分。我把常用模块列表出来,你在 data sheet 里基本都能找到:
| 功能块 | 作用 | 我踩过的坑 |
|---|---|---|
| PLL(锁相环) | 生成高频时钟,锁定参考源 | 曾经因为供电噪声导致 PLL 输出抖动超标,整板串行链路全部 BER 不合格,最后发现是 LDO 选型不对 |
| Serializer(并串转换) | 把 N 位并行数据串行化为单 bit 流 | 注意时钟域同步,我见过一个设计把 FIFO 深度设太浅,跑大数据包时经常丢字 |
| Driver(驱动) | 输出差分电压摆幅,带预加重 | 预加重系数调太大,远端正反射回来,结果眼图比不加还差 |
| Channel(通道) | PCB 走线、连接器、电缆 | 通道损耗模型如果不包含过孔 stub,仿真结果和实测能差 5 dB |
| Equalizer(均衡器) | 补偿通道损耗,CTLE + DFE | CTLE 增益调高了会把噪声也放大,需要跟 DFE 联合优化——这正是本课程的核心 |
| CDR(时钟数据恢复) | 从数据边沿提取时钟,决定采样相位 | CDR 环路带宽设定不当,遇到长连 0 或连 1 时容易失锁 |
| Deserializer(串并转换) | 恢复出并行数据,并做 word align | 要对齐的 comma 字符万一被均衡器误码改变了位置,就得重新训练 |
这张图把上面说的模块串在一起,你一看就明白了。
我的经验:初次接触 SerDes 时,总以为 CDR 能自动搞定一切。其实 CDR 对输入信号质量有最低要求——眼图必须看到一定高度的开度。否则 CDR 根本锁不住,后面再好的均衡也无用武之地。所以先搞定通道和均衡,CDR 才能发挥作用。
应用场景——你每天都在用
SerDes 已经无处不在。说几个你肯定接触过的:
- PCIe:CPU 和 GPU、NVMe SSD 之间,现在 PCIe 5.0 单 lane 速率 32 GT/s,每条链路少则 4 lane,多则 16 lane。我调过一块 PCIe 4.0 的板子,因为 connector 处阻抗突变,链路训练始终过不了 EQ phase 1,最后发现是插座焊盘反焊导致差分阻抗偏了十几欧。
- SATA / SAS:硬盘接口,6 Gbps / 12 Gbps 串行。
- USB 3.x / Thunderbolt:你插 U 盘背后的 SerDes 在 5~40 Gbps 之间工作。
- 以太网(10G/25G/100G/400G):数据中心内部几乎全是串行链路。我曾经在调试 25G 背板时被链路均衡参数折磨了两周,每天盯着眼图看——最后发现是 TX 预加重系数跟通道回损没匹配好。
- 光纤通信(100G/400G ZR):也是 SerDes + DSP 的高级玩法。
注意:不要以为 SerDes 只是“接口芯片”的事。片上 SerDes 的电源噪声会对整个 SoC 的时序造成影响,PCB 上 SerDes 走线旁边不能走高频开关节点(比如 buck converter 的 SW 节点)。这些坑我全都踩过。
为什么我们需要联合优化?
传统的 SerDes 设计把 TX、通道、RX 当作独立模块各自调优。但现实中,预加重、CTLE、DFE 的交互很复杂:你加大 TX 预加重,中高频增益上来了,但信道内的高频回损也跟着变差;你调 CTLE 的零点位置,低频噪声可能被放大。我记得有一次,一个同事单独优化 CTLE 到最佳眼高,结果接上 DFE 后直接收敛到错误符号——因为 CTLE 把码间干扰的相位扭了,DFE 的抽头系数无法适应。那之后,我开始用联合仿真的方法,把 TX 预加重 + 通道 S 参数 + CTLE + DFE 放在同一个仿真环境里扫参数,最后才找到全局最优。
这就是这门课要讲的核心:不是单独调每一个模块,而是综合考虑 TX 驱动、通道、均衡器(CTLE + DFE)、CDR 之间的相互作用,找出让链路误码率最低的参数组合。你想想看,是不是比孤立调试更合理?
一句话总结本章:SerDes 把并行转串行,用一对差分线跑告诉数据;架构包含 PLL、Serializer、Driver、Channel、Equalizer、CDR、Deserializer;应用遍及 PCIe、USB、以太网等;但真正让链路达到最优性能的,是对所有均衡环节的联合优化——这正是我们接下来 29 章要一起攻克的实战内容。