一、SerDes技术概述
什么是SerDes?
SerDes,全称Serializer/Deserializer,中文叫串行器/解串器。说白了,就是把并行数据转成串行数据发出去,再在接收端把串行数据转回并行数据。
我刚开始接触这个概念时,觉得这玩意儿不就是个并串转换吗?有什么难的?后来真正做项目才发现,这里面的水很深。SerDes的核心不是转换本身,而是如何在高速下保证数据不出错。
举个例子,你有一个32位的并行总线,时钟频率100MHz。如果直接传,需要32根数据线加1根时钟线。用SerDes后,只需要一对差分线,速率跑到3.2Gbps就行。省引脚、省PCB面积、抗干扰能力还强。
核心要点:SerDes的本质是用时间换空间——用更高的速率换取更少的物理通道。
SerDes在高速通信中的核心地位
现在的通信系统,没有SerDes几乎寸步难行。你想想看:
- 数据中心:服务器之间、交换机之间,全是SerDes链路。100G、400G甚至800G,靠的就是SerDes
- 5G基站:前传、中传、回传,CPRI/eCPRI接口,底层全是SerDes
- 消费电子:USB、HDMI、DisplayPort、PCIe,哪个不是SerDes?
- 汽车电子:车载以太网、摄像头接口,SerDes无处不在
我在一个数据中心项目里遇到过,整块板子16个通道的SerDes全部跑在25Gbps。刚开始调试时,眼图一塌糊涂。折腾了两周才发现,是PCB上的一对差分线等长没做好,差了30mil。就这30mil,让整个链路的误码率从10^-12飙升到10^-6。你说SerDes重不重要?
个人经验:SerDes调试,90%的问题出在物理层——PCB走线、连接器、电源噪声。别一上来就怀疑协议层。
PCS与PMA子层功能划分
SerDes的架构,通常分为两个子层:PCS(Physical Coding Sublayer,物理编码子层)和PMA(Physical Medium Attachment,物理介质连接子层)。
这两个层的关系,我习惯这么理解:
- PCS:负责"数据加工"——编码、解码、加扰、对齐
- PMA:负责"物理搬运"——并串转换、时钟恢复、驱动收发
说白了,PCS处理的是数字域的事情,PMA处理的是模拟域的事情。
PCS子层的主要功能
| 功能模块 | 说明 |
|---|---|
| 8B/10B编码 | 将8位数据编码成10位,保证DC平衡和足够的跳变沿 |
| 64B/66B编码 | 更高效的编码方式,用于10Gbps以上速率 |
| 加扰/解扰 | 打散数据中的长连0或长连1,避免时钟恢复失锁 |
| 对齐标记插入 | 插入特殊字符,用于接收端字节对齐 |
| 通道绑定 | 多通道场景下,对齐各通道的数据 |
嗯,这里要注意:8B/10B编码虽然简单可靠,但开销大(20%)。64B/66B开销只有3%左右,但实现复杂度高了不少。我在一个10G项目里用过64B/66B,那个同步头的检测逻辑,调试起来真是让人头大。
PMA子层的主要功能
| 功能模块 | 说明 |
|---|---|
| 并串转换 | 将并行数据转换成高速串行数据 |
| 时钟数据恢复(CDR) | 从数据流中提取时钟,并采样数据 |
| 发送驱动 | 提供合适的电压摆幅和预加重 |
| 接收均衡 | 补偿信道损耗,包括CTLE、DFE等 |
| 阻抗匹配 | 保证信号完整性,减少反射 |
我曾经调试过一个12.5Gbps的链路,眼图总是闭合的。查了三天,最后发现是PMA的CTLE(连续时间线性均衡器)配置不对。默认的增益曲线跟PCB的损耗曲线完全不匹配。调整了均衡器的零点位置后,眼图一下就睁开了。所以说,PMA的模拟参数,很多时候需要根据实际信道来调。
避坑指南:我曾经在PCS和PMA的接口上吃过亏。两个子层的时钟域处理、数据位宽对齐,一定要仔细检查。特别是跨时钟域的处理,用异步FIFO是最稳妥的。
PCS与PMA的交互流程
数据从上层下来,先到PCS做编码和加扰,然后交给PMA做并串转换和发送。接收端反过来,PMA先做CDR和均衡,恢复出数据,再交给PCS做解码和解扰。
这个流程看起来简单,但实际实现时,每个环节都可能出问题。我建议你在调试时,先确认PMA能正常工作——看CDR是否锁定、眼图是否合格。然后再去检查PCS的编码和解码是否正确。
调试顺序建议:PMA → PCS → 协议层。先物理层,再编码层,最后才是上层协议。这个顺序能帮你快速定位问题。
知识体系结构图
下面这张图,是我自己总结的SerDes知识体系。你看一眼,心里就有谱了:
这张图把SerDes的核心脉络理清楚了。从上到下,先理解SerDes是什么,再拆解PCS和PMA各自干什么,最后落到实际应用场景。你调试的时候,遇到问题就往这图上对应,很快就能定位到是哪个环节出了岔子。
我的建议:把这图打印出来贴工位上。每次调试SerDes链路,先看PMA层有没有锁定,再看PCS层编码对不对。按这个顺序来,能省一半的调试时间。
好了,这一章的内容就到这里。SerDes的概念、地位、以及PCS/PMA的分工,是后续所有调试工作的基础。把这些搞清楚了,后面我们才能聊具体的调试方法和实战技巧。