高速串行链路基础:SerDes 工作原理与拓扑结构
做 SerDes 设计这些年,我经常被问到:「SerDes 不就是把并行转成串行嘛,有什么复杂的?」
嗯,这话对了一半。转并行确实是基本功,但真正的难点在于——怎么保证那根线在几十 Gbps 甚至上百 Gbps 下还能稳定传数据。说白了,SerDes 是一个模拟和数字深度耦合的系统,你得同时搞定高速模拟电路和数字信号处理。
为什么非要用 SerDes?
你想想看,如果不用 SerDes,用传统并行总线会怎样?
- 并行线数多,芯片引脚不够用——PCle Gen5 x16 需要至少 64 根数据线,加上时钟、控制信号,封装根本塞不下。
- 线间串扰严重——频率一高,相邻信号线互相干扰,时序直接炸掉。
- 时钟同步困难——多路并行数据要同时到达,走线长度必须等长,布线工程师要疯了。
我在一个 25Gbps 的背板项目里吃过这个亏。最早方案用了并行总线,结果仿真就通过不了,最后全部改成 SerDes 链路才解决问题。从那以后,我对 SerDes 就有了敬畏心。
SerDes 工作原理
SerDes 的核心理念就一句话:「多条并行变一条高速串行,在接收端再恢复出来」。但藏在这句话背后的是一整套信号处理和时钟恢复的功夫。
发射端(Tx):串行化 + 预加重
- 并行转串行(Serializer):比如 8 位并行数据,用一个高速时钟逐位移位输出,变成 1 位串行流。
- 预加重/去加重(Pre-emphasis / De-emphasis):高频信号在信道里衰减大,发射端故意抬高高频分量,补偿信道损耗。我在 Gen3 时过一个 8.0 Gbps 的背板,不用预加重眼图完全闭合,用了之后眼睛立马睁开。
- 差分输出(Differential Output):用一对互补信号(P/N)传输,抗共模干扰能力强。
接收端(Rx):均衡 + 时钟恢复 + 解串
- 连续时间线性均衡(CTLE):高频增益放大,补偿信道损耗。说白了就是个高通滤波器。
- 判决反馈均衡(DFE):消除符号间干扰(ISI)。它根据前几个比特的判决结果,修正当前比特的判决阈值。我记得在 Gen5 设计时,DFE 的 tap 数从 Gen4 的 4 个增加到了 7 个,因为信道损耗更大,需要更长的记忆长度。
- 时钟数据恢复(CDR):从数据流里提取时钟,同时用这个时钟去采样数据。这是一个典型的反馈环路:相位检测器 -> 环路滤波器 -> VCO -> 再采样。没有 CDR,高速串行链路就根本跑不起来。
- 解串器(Deserializer):1 位串行数据再转回并行,交给逻辑层处理。
高对比度:NRZ vs PAM4
在讲拓扑之前,有必要提一下 SerDes 的两种主流调制方式——因为 Gen4 用 NRZ(也叫 PAM2),Gen5 开始切到了 PAM4。
| 项目 | NRZ (PAM2) | PAM4 |
|---|---|---|
| 每符号比特数 | 1 比特 | 2 比特 |
| 信号电平数 | 2 个 (0/1) | 4 个 (00/01/10/11) |
| 眼图数量 | 1 个眼 | 3 个眼 |
| 相同波特率下的数据率 | 基础 | 2倍 NRZ |
| 抗噪声能力 | 强(眼高为 Vpp) | 弱(眼高为 Vpp/3) |
| 典型应用 | PCIe Gen1~Gen4 | PCIe Gen5~Gen6、400G 光模块 |
为什么要切到 PAM4?说白了,信道带宽不够了。Gen5 要求 32.0 Gbps 数据率,如果用 NRZ 就要跑 32 GBaud,信道损耗太大。用 PAM4 只需要 16 GBaud,损耗直接减半。但代价是信噪比(SNR)下降了 9.5 dB——眼图高度从 Vpp 变成了 Vpp/3。
拓扑结构
SerDes 的拓扑不是只有一种。不同的应用场景,拓扑结构差别很大。
点对点(Point-to-Point)
这是最常见的结构:一个 Tx 直接连一个 Rx,中间最多加个 AC 耦合电容。PCIe 的每个 Lane 就是点对点。我建议新手先从这种结构入手,因为信号链路最简单,分析起来不绕。
- 没有分支,没有反射
- 阻抗匹配最容易做
- 缺点:不能共享同一条总线给多个设备
菊花链(Daisy Chain)
数据从一个节点传到下一个,再传到再下一个。像 SPI 总线或者某些 JEDEC 存储器接口会用。注意,菊花链的延迟是累积的,且中间节点必须支持转发。
有源中继器(Active Repeater / Retimer)
这是长距离或高损耗链路的常用方案。中继器不是简单放大信号,它要重新均衡、重新时钟恢复、再发射出去。在 PCIe Gen5 里,Retimer 几乎成了必选项——因为普通 PCB 走线根本撑不住 32 Gbps 的损耗。
核心结构:SerDes 系统框图
下面这张图是我根据实际项目经验画的 SerDes 基本架构。你看看,从 Tx 侧的并行数据进来,到最后 Rx 侧恢复出并行数据,中间经历了哪些环节。
这张图的流向是从左到右:Tx 侧先把并行数据串行化,再加预加重,然后差分输出到信道。Rx 侧先差分接收,经过 CTLE 和 DFE 均衡,CDR 恢复出时钟和数据,最后解串回并行。
拓扑选择建议
结合我自己的项目经验,给你几个实用的选择准则:
- 短距离板内走线(< 15 英寸):点对点就够,不需要 Retimer。PCB 损耗控制在 20 dB 以内,Gen4 和 Gen5 都适用。
- 中距离背板(15~30 英寸):需要加 CTLE + DFE,甚至考虑 Retimer。我曾经在一个 28 英寸的 Gen4 背板上调试了 3 个月,最后加了 Retimer 才过眼图。
- 长距离线缆/光模块(> 30 英寸):必须用 Retimer 或者光互联。PAM4 调制下,信道非线性、反射、串扰都会被放大,对均衡要求极高。
- 多节点共享总线:考虑菊花链或交换结构。但记住,链路上的每个节点都会增加延迟和抖动预算。
好了,SerDes 基础架构和拓扑就先讲到这里。理解这些核心概念,你后面看 Gen4 和 Gen5 的差异才不会晕。记住一句话:SerDes 的本质是用复杂度的增加换带宽和距离。水平越高的工程师,越懂得怎么在这个复杂度里找到平衡。