第一讲:SerDes基础概念——从并行到串行的思维转变
大家好,我是你们这门课的讲师。做SerDes系统设计十几年了,面试过上百个候选人。我发现一个规律:基础概念问倒的人最多。不是问题有多难,而是很多人没转过弯来。今天咱们就把SerDes的根儿挖一挖。
到底什么是SerDes?
SerDes,全称Serializer/Deserializer。翻译成中文就是串行器/解串器。说白了,它干的就一件事:把一堆并行数据变成一根线上串着走,到了对面再变回来。
为什么要这么折腾? 你想想看,以前板级通信,DDR内存那种,数据线、地址线、控制线加一起上百根。走个几十毫米还行,要是走个几十厘米?麻烦就来了。信号偏移、串扰、PCB面积,全是问题。
SerDes的思路很直接:用速度换宽度。一根差分线跑几Gbps甚至几十Gbps,替代原来几十上百根并行线。我早期做项目时,客户要在一个背板上走32位并行总线,那200条线排得跟蜘蛛网似的。后来换成4路SerDes,板子瞬间清爽了。
串行 vs 并行:一个表格说清楚
| 对比维度 | 并行传输 | 串行传输 (SerDes) |
|---|---|---|
| 物理连线 | 多根数据线 + 时钟/控制线 | 单对或几对差分线 |
| 时钟方式 | 源同步时钟,有时钟线 | 时钟嵌入数据,无独立时钟线 |
| 信号偏移 | 每根线延迟不同,高速下严重 | 单通道无偏移问题 |
| 串扰 | 相邻线间耦合严重 | 差分对共模抑制,串扰小 |
| PCB面积 | 占用大量走线空间 | 极省面积,可多层简化 |
| 传输距离 | 一般小于10cm | 可达数米(需均衡) |
| 功耗 | 多端驱动,总功耗高 | 单端驱动,但高速时功耗不低 |
| 复杂度 | 协议/时序简单 | 需要CDR/均衡,设计复杂 |
我个人习惯用这个表格开场。面试时我也会问候选人:「你觉得并行和串行哪个更省电?」很多人想当然答串行。其实高速SerDes的PLL、CDR、驱动器功耗加起来并不小。关键要看场景。
SerDes典型架构:TX/RX/PLL/CDR
一个完整的SerDes链路,从发送端到接收端,核心模块就四个。我画了张图帮你快速建立整体感。
我来逐个拆解一下这几个模块。每一个我都踩过坑,讲点实在的。
1. 发送端 TX
- Serializer(串行器):把N位并行数据,用N倍于并行时钟的频率,逐位串行送出。比如10位并行,1GHz时钟,输出就是10Gbps。我见过有人把Serializer和Mux搞混,其实Serializer内部就是一个高速移位寄存器或树形Mux。
- TX Driver(输出驱动器):把串行数据升压升流,驱动PCB过孔和走线。常见的CML(电流模式逻辑)输出,差分摆幅一般400-800mVpp。嗯,这里要注意:驱动强度和预加重系数要匹配通道损耗,不然眼图直接就闭了。
2. 接收端 RX
- RX Front-End(接收前端):包含均衡器。CTLE(连续时间线性均衡)负责补偿高频损耗;DFE(判决反馈均衡)负责消除后标干涉。这是SerDes设计最难啃的骨头,也是本课程的核心。
- CDR(时钟数据恢复):从数据流里把嵌入的时钟提取出来。没有时钟,你怎么知道数据什么时候切换?CDR的原理就是锁相环跟踪数据边沿。我有一次调试一个28G链路,眼图死活睁不开,折腾了两天,最后发现是CDR的环路带宽设错了。
- Deserializer(解串器):把串行数据流按照恢复出的时钟,重新拼接成并行数据字。
3. PLL与CDR的协同
PLL(锁相环)为收发两端提供低抖动的多相时钟。TX需要它产生串行时钟,RX需要它给CDR提供参考。CDR本质上就是一个带相位追踪的PLL。我面试时经常问一个问题:「PLL和CDR都有环路滤波器,一个锁参考时钟,一个锁数据边沿,它们之间的带宽怎么分配?」这是个很好的起点题,后面我们会展开。
4. 传输通道
通道不是电路模块,但它是链路中损耗最大、最不可控的部分。PCB走线、过孔、连接器、电缆,每一项都引入频率相关的衰减。比如FR-4板材,在10GHz时每英寸能掉3-4dB。人眼图闭合,一半的锅要甩给通道。