SerDes 概述与基本架构
为什么我们需要串行传输?
做高速接口设计的人,几乎天天跟 SerDes 打交道。说白了,SerDes 就是并串转换加物理传输的一套解决方案。早期芯片内部总线大多用并行——数据线多、时钟线多,几十根线拉着跑。但到了 Gbps 级别,并行的问题就全暴露了:
- 信号偏移(Skew)——每根线延迟不一样,数据到达时间参差不齐
- 串扰(Crosstalk)——线多了互相干扰,眼图关得死死的
- 功耗和面积——大量的 I/O 焊盘和驱动,代价太高
这时候 SerDes 就变成了必然选择。把多路并行数据变成一串高速差分信号,用一对线就搞定。我最初接触这个是在一个 FPGA 项目上,板子空间紧张,20 对 LVDS 走线根本排不开,换成 4 路 SerDes 后,走线马上清爽了。嗯,代价是设计复杂度转移到了 PHY 层。
高速串行传输的基本原理
串行传输不是简单地把数据排成队发出去就完事。它有几个核心机制:
- 差分信号——用一对线传互补电平,抗共模噪声能力强。我记得有一次调试时发现眼图上下不对称,查了半天是差分线走线不等长,导致共模转差模噪声。
- 时钟数据恢复(CDR)——接收端不再单独收时钟,而是从数据边沿里提取时钟。这要求数据流必须有足够多的跳变,所以需要加扰码(Scrambling)或者 8b/10b 编码。
- 均衡(Equalization)——信道有低通特性,高频衰减严重。发送端做去加重,接收端做 CTLE/DFE,把眼图“打开”。这部分后面有专章讲,这里先提一句。
- 编码与同步——比如 8b/10b 把 8 位数据扩成 10 位,保证直流平衡和足够跳变,同时提供 COMMA 字用于字节对齐。
我把这些机制画成一个简单的传输链路图,方便你理解整体框架:
SerDes 的典型架构:PCS、PMA、PMD
你可能看过 IEEE 802.3 或者 OIF 标准,里面把 SerDes 划成了三层。我个人的习惯是把这三层理解为“协议处理层”“模拟物理层”“连线接口层”。
PCS(物理编码子层)
这一层负责数据的编码、解码、扰码、对齐以及链路状态管理。比如 8b/10b 编码、64b/66b 编码都在这里做。你在项目中调试链路起来时,EC(Error Counter)通常就是 PCS 层的统计。
我遇到过一个坑:某个标准要求加扰多项式必须匹配,否则链路训练永远过不去。那段时间我天天盯着 PCS 的 scrambler 初始化值,后来发现是两边种子不一样。嗯,折腾了一周。
PMA(物理介质接入子层)
PMA 把 PCS 传来的并行数据做并串转换,然后送给 PMD 去驱动差分线。反过来,接收端 PMA 接收差分信号,做 CDR 恢复时钟,做初步均衡。这是模拟和数字的边界。
- 发送方向:并行→串行,加去加重
- 接收方向:CDR + CTLE + DFE(通常 DFE 也在 PMA 里)
PMD(物理介质相关子层)
PMD 直接跟物理介质打交道。它定义输出摆幅、共模电压、上升时间、抖动模板。比如 PCIe Gen3 要求差分输出摆幅 800~1200mV,这些全是 PMD 参数。不同介质(背板、电缆、光模块)对应不同的 PMD 子层。
| 子层 | 主要工作 | 典型标准 |
|---|---|---|
| PCS | 编码、解码、对齐、错误检测 | 8b/10b, 64b/66b, 128b/130b |
| PMA | 并串转换、CDR、CTLE/DFE | OIF CEI-28G, 56G |
| PMD | 驱动电平、共模、抖动、去加重 | IEEE 802.3ap, PCIe Base |
主流 SerDes 标准简介
面试时经常被问到:你熟悉哪些 SerDes 标准?其实大部分高速互连标准底层都是 SerDes,只是上层协议不同。我给你列个表,方便对比:
| 标准 | 速率范围 | 编码方式 | 典型应用 |
|---|---|---|---|
| PCIe | 2.5 GT/s ~ 32 GT/s (Gen5) | 8b/10b → 128b/130b | 芯片互联、GPU、SSD |
| SATA/SAS | 1.5 ~ 6 Gbps / 12 Gbps | 8b/10b | 硬盘、存储扩展 |
| USB 3.x | 5 / 10 / 20 Gbps | 8b/10b + 扰码 | 外设、扩展坞 |
| 10G/25G/100G Ethernet | 10.3125 / 25.78125 / 103.125 Gbps | 64b/66b, RS-FEC | 数据中心、交换 |
| JESD204B/C | 12.5 / 32 Gbps | 8b/10b | ADC/DAC 数据接口 |
我的小建议:面试时别只背速率,要能说出不同标准在均衡策略上的差别。例如 PCIe Gen3 开始使用 DFE + CTLE,而 100G 以太网还加了 FEC 来对抗噪声。我曾经被问到“为什么 SATA 不用 DFE?”,答案是它的信道损耗远小于背板,CTLE 就够用了。
避坑指南
我曾经犯过的错误:刚接触 SerDes 时,以为只要选一个标准 SerDes IP 就能跑通。结果在系统集成时发现 PCS 层与 MAC 的接口协议不匹配(比如 AXI-Stream 和 XGMII 的握手方式不同),导致链路一直上不去。所以选型时一定看清楚 PCS 侧的数字接口协议,还有 PMA 侧支持的参考时钟频率。
另外,不同标准的 PMA 模拟参数是 不能直接互换 的。PCIe 的 TX 去加重系数和以太网的预加重系数差异很大,强行替换可能导致眼图闭合。我建议你在项目初期就建立一张“均衡参数映射表”,把各标准的 CTLE 增益、DFE 抽头数、TX 摆幅都列出来,设计时逐一核对。
好了,第一章先讲到这里。SerDes 的世界从这一张图开始展开,后续我们会深入均衡器结构、眼图测量方法和工程调试技巧。面试官最喜欢问的“什么是 DFE 的收敛算法”也会在后面详细拆解,别急。