SerDes与高速接口:从原理到实战
各位同学,今天我们来聊聊SerDes。说实话,这是整个交换芯片里最让我又爱又恨的部分。爱的是它决定了芯片能跑多快,恨的是调试起来真能让人掉头发。我在第一颗28G SerDes芯片流片时,就因为这个模块差点延期三个月。
SerDes基本原理
SerDes,说白了就是串行器和解串器的合称。为什么需要它?你想想看,芯片内部总线动辄几十上百位宽,但芯片之间的互联,引脚是稀缺资源。SerDes就是把并行数据转成串行,用一对差分线传出去,到了接收端再转回并行。
我习惯把SerDes分成三个核心模块:
- 发送端(TX):并行数据 → 串行数据 → 驱动输出
- 接收端(RX):差分信号 → 时钟恢复 → 串转并
- 时钟模块:PLL产生高频时钟,CDR从数据中恢复时钟
这里有个关键点:时钟恢复(CDR)。数据本身没有单独的时钟线,接收端必须从数据跳变中提取时钟。我在项目中遇到过,如果数据出现连续长0或长1,CDR就会失锁。所以编码环节特别重要。
核心公式:数据速率 = 并行位宽 × 参考时钟频率 × 倍频系数
举个例子:64位并行数据,156.25MHz参考时钟,20倍频,得到的就是64×156.25M×20 = 200Gbps。嗯,这就是200G SerDes的由来。
PAM4与NRZ编码
NRZ(Non-Return-to-Zero)是最传统的编码方式。每个符号传1比特,高电平代表1,低电平代表0。简单可靠,但到了56Gbps以上,信号衰减太严重了。
PAM4(4-Level Pulse Amplitude Modulation)就不一样了。它用4个电平,每个符号传2比特。同样的波特率下,数据速率翻倍。我参与的第一个400G交换机项目,用的就是PAM4。
| 对比项 | NRZ | PAM4 |
|---|---|---|
| 每符号比特数 | 1 | 2 |
| 信噪比要求 | 低 | 高(约9.6dB更差) |
| 设计复杂度 | 低 | 高 |
| 典型应用 | ≤28Gbps | ≥56Gbps |
为什么会这样?PAM4的4个电平之间间距只有NRZ的1/3,同样的噪声下误码率更高。我曾经调试一块PAM4 SerDes,眼图看起来还行,但误码率就是下不去。后来发现是发送端的线性度不够,三个电平的间距不均匀。
我的经验:PAM4设计时,一定要关注发送端的RLM(Ratio of Level Mismatch)。这个指标低于0.95,基本就没法用了。我一般要求设计目标做到0.98以上。
高速SerDes设计挑战
信号完整性
信号完整性,简称SI。说白了就是信号从发送端到接收端,波形不能变形太厉害。高速信号在PCB上走几英寸,高频分量就衰减得差不多了。
我遇到过最头疼的问题:码间干扰(ISI)。前一个比特的能量没释放完,影响了后一个比特的判断。尤其是在长走线、多过孔的场景下。
解决方案主要有:
- 预加重/去加重:发送端主动增强高频分量
- CTLE(连续时间线性均衡器):接收端补偿信道损耗
- DFE(判决反馈均衡器):消除后标干扰
我曾经在一个项目中,CTLE的增益调得太大,结果把噪声也放大了。嗯,这里要注意,均衡器不是越强越好,要跟信道特性匹配。
避坑指南:我曾经在56G PAM4设计中,忽略了封装效应。仿真时信道损耗只有15dB,加上封装后变成了22dB。结果流片回来,SerDes根本锁不住。从那以后,我要求所有SI仿真必须包含封装模型。
功耗管理
SerDes是交换芯片的功耗大户。一颗56G SerDes,功耗轻松超过500mW。一个交换机芯片集成上百个SerDes,总功耗就是几十瓦。
我习惯从这几个方面入手:
- 电源域划分:模拟电路和数字电路分开供电
- 自适应偏置:根据信道质量动态调整驱动强度
- 时钟门控:空闲通道关闭PLL和CDR
- 工艺选择:先进工艺能有效降低功耗,但成本也高
记得有一次,客户要求整芯片功耗控制在15W以内。我算了一下,SerDes就占了12W。最后通过动态功耗管理,空闲时把SerDes降到低功耗模式,才勉强达标。
知识体系总览
下面这张图,是我自己总结的SerDes设计知识体系。每次带新人,我都会先让他们看这张图。
实战要点总结
最后,我把自己这些年踩过的坑总结一下:
- 仿真要全面:不要只看理想信道,要包含封装、过孔、连接器
- 裕量要留足:PAM4的眼高裕量至少留20%,不然量产时良率堪忧
- 测试要闭环:每个SerDes通道都要做眼图扫描和BER测试
- 功耗要动态:固定功耗设计已经过时了,自适应才是王道
嗯,SerDes这部分内容确实不少。但只要你把基本原理搞懂了,再结合项目实战,慢慢就能找到感觉。我当年也是从一脸懵到逐渐上手,这个过程没有捷径。
公众号:蓝海资料掘金营,微信deep3321