高速串行链路基础: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 位串行数据再转回并行,交给逻辑层处理。
我个人习惯:看 SerDes 接收端性能好不好,先看它的均衡器配置。CTLE 频响、DFE tap 数、CDR 环路带宽,这三点基本决定了链路能跑多远、多快。

高对比度: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。

我曾经踩过的坑:在 Gen5 项目初期,我们用 NRZ 在 32 Gbps 下做链路仿真,眼图完全没睁开。后来换成 PAM4,16 GBaud 的眼图虽然小,但至少看见缝了。不过 PAM4 对线性度要求极高,必须用 ADC 采样的接收架构,纯模拟 DFE 根本不够用。

拓扑结构

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 侧恢复出并行数据,中间经历了哪些环节。

SerDes 系统核心架构 并行数据输入 (n bit) Serializer 8:1 串行化 预加重 / 去加重 均衡补偿 差分输出 P/N 对 信道 (PCB / 线缆) 差分输入 P/N 对 CTLE + DFE 均衡 (模拟+数字) CDR 时钟数据恢复 解串器 1:n 解串 参考时钟 (来自 PLL)

这张图的流向是从左到右:Tx 侧先把并行数据串行化,再加预加重,然后差分输出到信道。Rx 侧先差分接收,经过 CTLE 和 DFE 均衡,CDR 恢复出时钟和数据,最后解串回并行。

关键点:CDR 是整个 SerDes 的心脏。我见过很多链路跑不上去,不是因为均衡不够,而是 CDR 锁定不稳。带宽太大容易锁不住,太小又跟不上频率漂移,这是个很微妙的折中。

拓扑选择建议

结合我自己的项目经验,给你几个实用的选择准则:

  1. 短距离板内走线(< 15 英寸):点对点就够,不需要 Retimer。PCB 损耗控制在 20 dB 以内,Gen4 和 Gen5 都适用。
  2. 中距离背板(15~30 英寸):需要加 CTLE + DFE,甚至考虑 Retimer。我曾经在一个 28 英寸的 Gen4 背板上调试了 3 个月,最后加了 Retimer 才过眼图。
  3. 长距离线缆/光模块(> 30 英寸):必须用 Retimer 或者光互联。PAM4 调制下,信道非线性、反射、串扰都会被放大,对均衡要求极高。
  4. 多节点共享总线:考虑菊花链或交换结构。但记住,链路上的每个节点都会增加延迟和抖动预算。

好了,SerDes 基础架构和拓扑就先讲到这里。理解这些核心概念,你后面看 Gen4 和 Gen5 的差异才不会晕。记住一句话:SerDes 的本质是用复杂度的增加换带宽和距离。水平越高的工程师,越懂得怎么在这个复杂度里找到平衡。