3、高速SerDes原理:从架构到实战
各位同学,今天我们来聊聊SerDes。说实话,这是整个光通信系统里最核心、也最容易让人头疼的部分。我当年刚接触SerDes时,看着那一堆缩写——PCS、PMA、PMD、CDR——简直像在看天书。但后来在项目中摸爬滚打,才慢慢理解了这些模块到底在干什么。
说白了,SerDes就是并串转换器。它把并行数据转成高速串行流,再在接收端转回来。但真正做起来,远不止这么简单。
3.1 SerDes基本架构:PCS/PMA/PMD
一个完整的SerDes链路,通常分为三层:PCS、PMA和PMD。我习惯把它们比作一个快递系统——PCS负责打包贴标签,PMA负责装车运输,PMD则负责最后的路段配送。
核心架构图:SerDes三层模型
先说说PCS。这一层负责数据的编码和成帧。为什么要编码?你想想看,如果数据流里连续出现一堆0或一堆1,接收端怎么恢复时钟?所以我们需要编码来保证足够的跳变。8B/10B和64B/66B就是干这个的。
PMA层呢,负责真正的并串转换和时钟生成。这里有个关键器件——PLL(锁相环)。我记得有次调试一个10G链路,PLL怎么也锁不住,折腾了两天,最后发现是电源纹波太大。嗯,这种坑踩过一次就记住了。
PMD层最贴近物理介质。在光通信里,它负责把电信号转成光信号,再在接收端转回来。这部分对信号完整性要求极高,一点阻抗不匹配都会导致眼图闭合。
3.2 8B/10B与64B/66B编码
这两种编码方式,我分别用过很多次。8B/10B是经典方案,64B/66B则是更高效的替代。
编码效率对比
| 编码方式 | 效率 | 额外开销 | 典型速率 | 应用场景 |
|---|---|---|---|---|
| 8B/10B | 80% | 25% | 1-10 Gbps | PCIe Gen1/2, SATA, USB 3.0 |
| 64B/66B | 97% | 3.125% | 10-100 Gbps | 10G/25G/100G以太网 |
8B/10B的原理很简单:每8位数据映射成10位码字。多出来的2位用于保证DC平衡和足够的跳变。我刚开始学的时候,觉得查表法很笨,后来自己写了个Verilog实现,才发现这里面门道很多——运行不一致(RD)的控制就是个精细活。
个人经验:8B/10B编码器里,RD状态机一定要用Moore型,别用Mealy型。我吃过亏——Mealy型在高速下容易产生毛刺,导致误码率飙升。
64B/66B就聪明多了。它只加2位同步头,效率高出一大截。同步头"01"表示数据,"10"表示控制字。为什么不用"00"和"11"?因为连续相同的位不利于时钟恢复。你看,设计者早就替你想到了。
不过64B/66B也有代价——它的同步头只有2位,抗干扰能力不如8B/10B。在信噪比差的场景下,我建议还是用8B/10B更稳妥。
3.3 预加重与均衡技术
信号在传输过程中会衰减,尤其是高频分量。这就是为什么高速信号看起来像被"抹平"了一样。预加重和均衡就是用来对抗这个问题的。
预加重是在发送端做的。简单说,就是人为地增强信号的高频分量。我习惯用三抽头FFE(前馈均衡器)来实现。它的系数设置很关键——设大了会过冲,设小了没效果。
预加重效果示意
均衡是在接收端做的。常见的有CTLE(连续时间线性均衡器)和DFE(判决反馈均衡器)。CTLE本质是一个高通滤波器,补偿信道的高频损耗。DFE则更聪明——它根据之前的判决结果来消除码间干扰。
避坑指南:我曾经在一个25G项目中,DFE的抽头系数怎么调都不收敛。后来发现是CTLE的增益设得太高,把噪声也放大了。记住:CTLE和DFE要配合着调,先调CTLE让眼图睁开,再用DFE消除残余ISI。
3.4 CDR工作原理
CDR(时钟数据恢复)是SerDes接收端的灵魂。没有它,数据就白传了。
CDR要干两件事:从数据流里提取时钟,然后用这个时钟去采样数据。听起来简单,做起来难——因为数据流里没有专门的时钟线,时钟信息是"藏"在数据跳变里的。
典型的CDR结构是PLL型的。它包含三个部分:
- 鉴相器(PD):比较数据跳变和本地时钟的相位差
- 环路滤波器(LF):滤除高频噪声,生成控制电压
- 压控振荡器(VCO):根据控制电压调整输出频率
我常用的CDR架构是Alexander型鉴相器。它只需要三个时钟相位——早、中、晚——就能判断出时钟是快了还是慢了。这种结构在10G以下速率非常好用。
CDR锁定过程
CDR的锁定时间是个关键指标。太快了容易误锁,太慢了又影响链路建立。我一般把环路带宽设在数据速率的1/1000左右。比如10Gbps的链路,环路带宽10MHz左右比较合适。
调试技巧:测试CDR性能时,别只看锁定时间。要看抖动容限——就是CDR能容忍多大的输入抖动而不失锁。我习惯用正弦抖动注入法,从低频到高频扫一遍,画出抖动容限曲线。如果曲线在某个频率点突然掉下来,说明环路滤波器参数需要调整。
好了,关于SerDes的基本原理,今天就讲到这里。这些内容看起来多,但真正用起来,你会发现它们都是环环相扣的。编码影响CDR的锁定性能,预加重和均衡决定了链路的误码率,而整个架构的选择又取决于你的应用场景。下次我们聊具体的设计实现时,你会更深刻地理解这些模块是如何协同工作的。