一、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(物理介质连接子层) 8B/10B编码 64B/66B编码 加扰/解扰 对齐标记 并串转换 CDR 发送驱动 接收均衡 应用场景 数据中心 5G通信 消费电子 汽车电子

这张图把SerDes的核心脉络理清楚了。从上到下,先理解SerDes是什么,再拆解PCS和PMA各自干什么,最后落到实际应用场景。你调试的时候,遇到问题就往这图上对应,很快就能定位到是哪个环节出了岔子。

我的建议:把这图打印出来贴工位上。每次调试SerDes链路,先看PMA层有没有锁定,再看PCS层编码对不对。按这个顺序来,能省一半的调试时间。

好了,这一章的内容就到这里。SerDes的概念、地位、以及PCS/PMA的分工,是后续所有调试工作的基础。把这些搞清楚了,后面我们才能聊具体的调试方法和实战技巧。

可可精品资料库