1. SerDes基础概念:什么是SerDes、为什么需要SerDes、SerDes的基本架构
各位工程师朋友,大家好。我是你们的SerDes调试讲师。
今天咱们来聊聊SerDes最基础的东西。说实话,我见过不少工程师,上来就调参数、看眼图,结果出了问题根本不知道从哪下手。为什么?因为基础没打牢。这一章,我们就从根上把SerDes讲清楚。
1.1 什么是SerDes?
SerDes,全称是Serializer/Deserializer,中文叫串行器/解串器。说白了,就是把并行数据转成串行数据发出去,再把收到的串行数据转回并行数据。
你可能会问:为什么要这么折腾?直接传并行不行吗?
嗯,我刚开始做设计时也这么想。直到有一次,我在一个项目里用并行总线连接两块板子,结果信号线密密麻麻,板子都快成蜘蛛网了。更头疼的是,时钟频率一高,信号之间互相干扰,数据根本收不对。从那以后,我就彻底明白了SerDes的价值。
核心要点:SerDes的本质是串并转换。发送端把多路并行数据合并成一路高速串行数据,接收端再把串行数据恢复成并行数据。
举个例子:假设你要传8位数据,并行方式需要8根数据线+1根时钟线。而SerDes只需要一对差分线(两根线),甚至一根线(单端)就能搞定。节省的IO数量,你想想看,在芯片引脚资源紧张的时候有多重要。
1.2 为什么需要SerDes?
这个问题,我建议你从三个维度去理解:
- 引脚数量受限:芯片封装引脚是有限的。并行总线每增加一位,就多一个引脚。SerDes用一对差分线搞定所有数据,引脚数大幅减少。
- 信号完整性:并行总线频率一高,信号间串扰、时钟偏斜(Skew)问题就来了。SerDes用差分信号传输,抗干扰能力强,而且没有时钟偏斜的烦恼。
- 传输距离:并行总线通常只能走几厘米到几十厘米。SerDes可以走几米甚至几十米(比如光纤通信)。
我记得有个项目,客户要求把摄像头数据从机箱一端传到另一端,距离大概1.5米。如果用并行LVCMOS信号,信号早就变形了。最后用了SerDes,一对差分线搞定,眼图还特别干净。
个人经验:选择SerDes还是并行总线,我一般看两个指标:数据速率和传输距离。速率超过1Gbps或者距离超过10cm,我基本就倾向SerDes了。
1.3 SerDes的基本架构
SerDes的架构,通常分为两层:PCS层(物理编码子层)和PMA层(物理介质接入层)。
我画了一张图,帮你理解这两层的关系:
1.3.1 PCS层(物理编码子层)
PCS层,说白了就是做数字逻辑处理的。它负责把上层送来的并行数据,进行编码、加扰、对齐等操作,然后交给PMA层。
PCS层主要干这几件事:
- 8B/10B编码:把8位数据编码成10位,保证直流平衡,提供足够的跳变沿用于时钟恢复。我刚开始学的时候觉得这编码挺浪费带宽的,后来才知道,没有它,接收端根本没法恢复时钟。
- 加扰/解扰:对数据进行随机化处理,避免出现长串的0或1。你想想看,如果数据全是0,接收端的时钟恢复电路就罢工了。
- 对齐(Alignment):在数据流中插入特定的对齐字符,接收端根据这些字符找到数据的边界。
- 通道绑定:如果有多条SerDes通道,PCS层负责把数据分配到各通道,并在接收端重新组合。
避坑指南:我曾经在一个项目里,PCS层的对齐字符设置得太短,结果接收端经常误判数据边界,导致整个链路频繁重同步。后来我把对齐字符长度从4字节改成8字节,问题就解决了。所以,对齐字符的长度要留够余量。
1.3.2 PMA层(物理介质接入层)
PMA层是SerDes的模拟前端。它负责把数字信号变成模拟信号发出去,再把收到的模拟信号变回数字信号。
PMA层的主要模块:
| 模块 | 功能 | 调试要点 |
|---|---|---|
| Serializer(串行器) | 把并行数据转成高速串行数据 | 注意时钟抖动,会影响数据质量 |
| Deserializer(解串器) | 把串行数据恢复成并行数据 | 需要正确的时钟恢复 |
| CDR(时钟数据恢复) | 从数据流中提取时钟信号 | 锁定时间、抖动容忍度是关键 |
| Driver(驱动器) | 驱动差分线,输出信号 | 摆幅、预加重、去加重参数 |
| Receiver(接收器) | 接收差分信号,放大并判决 | 均衡器设置、灵敏度 |
| PLL(锁相环) | 产生高速时钟 | 相位噪声、锁定范围 |
嗯,这里要注意,PMA层是SerDes里最考验硬件功底的部分。我见过不少工程师,PCS层的逻辑调得挺好,但一到PMA层就抓瞎了。为什么?因为PMA层涉及模拟电路,很多问题不是看代码能看出来的,得上示波器、看眼图。
个人习惯:我调试SerDes时,会先确认PMA层是否正常工作。怎么确认?看CDR是否锁定,看眼图是否张开。如果PMA层有问题,PCS层再怎么调也没用。
1.3.3 PCS层与PMA层的接口
PCS层和PMA层之间,通常有一个标准接口,叫PCS-PMA接口。这个接口传递的是并行数据,但速率已经比上层接口高了不少。
举个例子:一个10Gbps的SerDes,如果PCS层用16位并行数据传给PMA层,那接口时钟就是10Gbps/16 = 625MHz。这个频率已经不低了,PCB布线时要注意等长、阻抗匹配。
警告:PCS-PMA接口的时序非常关键。我曾经遇到一个案例,PCS和PMA来自不同厂商,接口时序不匹配,导致数据偶尔出错。查了三天才发现是接口时序余量不足。所以,不同厂商的PCS和PMA搭配使用时,一定要仔细核对接口时序。
小结
这一章我们讲了SerDes的三个核心问题:
- 什么是SerDes:串并转换器,把并行数据转成串行数据发送,再恢复回来。
- 为什么需要SerDes:节省引脚、改善信号完整性、延长传输距离。
- 基本架构:PCS层做数字逻辑处理,PMA层做模拟信号处理。
记住一句话:PCS层管逻辑,PMA层管信号。调试时,先确认PMA层没问题,再调PCS层。这个顺序,我建议你记下来,以后调试能少走很多弯路。
可可精品资料库