第四章 SerDes物理层(PMA)详解:TX架构、RX架构与CDR原理
各位工程师朋友,今天我们来聊聊SerDes物理层,也就是PMA。说实话,很多刚入行的朋友总觉得PMA就是个黑盒子——数据进去,数据出来。但我在调试中吃过不少亏,才明白这里面的门道有多深。
PMA全称是Physical Media Attachment,它负责最底层的信号处理。我习惯把它分成三块来看:发送器(TX)、接收器(RX),以及连接两者的时钟数据恢复(CDR)。咱们一个一个拆开讲。
4.1 发送器(TX)架构
TX的任务很简单:把并行数据转成高速串行信号,再推出去。但简单的事往往最难做好。
典型的TX架构包含这几个模块:
- 并串转换器:把N位并行数据转成1位串行流
- 预加重/去加重:补偿信道损耗
- 输出驱动器:提供足够的驱动能力
- 阻抗匹配网络:减少反射
我个人最关注的是预加重这块。为什么需要它?你想想看,高速信号经过PCB走线,高频分量衰减得厉害。如果不做处理,到了接收端眼图就闭上了。
关键点:预加重本质上是增强信号跳变沿的能量。比如你发"1010"序列,在"1"的起始处多推一点电流,让信号冲上去。这样经过信道衰减后,接收端还能看到完整的眼图。
我在项目中遇到过一个问题:某款芯片的TX预加重设置不当,导致长走线场景下误码率飙升。后来发现是预加重系数配错了——不是越大越好,过冲太大会引起EMI问题。嗯,这里要注意,预加重和去加重其实是同一枚硬币的两面,具体用哪个看协议要求。
输出驱动器方面,常见的架构有CML(电流模式逻辑)和SSTL(短截线串联端接逻辑)。CML在高速场景下更常见,因为它功耗相对可控,而且差分信号抗干扰能力强。
4.2 接收器(RX)架构
RX是TX的逆过程,但难度更大。为什么?因为信号经过信道后已经面目全非了。
RX的核心模块包括:
- 均衡器(EQ):补偿信道损耗
- 判决器:把模拟信号转成数字电平
- CDR:从数据中恢复时钟
- 串并转换器:恢复并行数据
均衡器是RX的灵魂。常见的均衡技术有三种:
| 类型 | 原理 | 适用场景 |
|---|---|---|
| CTLE(连续时间线性均衡) | 模拟滤波器,放大高频分量 | 中等损耗信道 |
| FFE(前馈均衡) | 数字滤波器,调整抽头系数 | 预知信道特性 |
| DFE(判决反馈均衡) | 利用历史判决结果消除码间干扰 | 高损耗信道 |
我建议你在调试时先看CTLE的效果。如果眼图还不行,再开DFE。曾经有个项目,我一开始就开了DFE,结果发现收敛速度太慢,链路建立时间超标。后来改成CTLE+轻度DFE的组合,问题就解决了。
调试技巧:RX的均衡器系数不是随便设的。我习惯先用示波器看接收端的眼图,然后从CTLE的最低增益开始往上调,直到眼图张开到满足规范为止。记住,过均衡和欠均衡一样有害。
4.3 时钟数据恢复(CDR)原理
CDR是SerDes里最精妙的部分,也是我当年花了最多时间啃的模块。说白了,CDR要从数据流里把时钟信息"挖"出来。
为什么需要CDR?因为TX和RX的时钟是独立的。即使标称频率相同,实际总有偏差。如果不做恢复,采样点会慢慢漂移,最终采错数据。
CDR的基本架构有两种:
- 基于PLL的CDR:用锁相环跟踪数据相位
- 基于相位插值的CDR:用数字方式调整采样时钟
我个人更常用相位插值型CDR,因为它数字友好,便于工艺迁移。它的工作流程是这样的:
- 鉴相器检测数据跳变沿与采样时钟的相位差
- 环路滤波器平滑误差信号
- 相位插值器根据误差调整时钟相位
- 采样器用调整后的时钟重新采样数据
这里有个坑——我曾经遇到过CDR锁定时间过长的问题。原因是环路滤波器的带宽设得太窄了。带宽窄了抖动小,但锁定慢;带宽宽了锁定快,但抖动大。这是个典型的trade-off。
注意:CDR对数据模式有要求。如果数据流长时间没有跳变(比如连续发"0000"),CDR会失锁。所以SerDes协议通常都会做加扰处理,保证数据有足够的跳变密度。我在调试PCIe时就被这个问题坑过——加扰器没使能,结果链路死活训练不过去。
CDR的性能指标主要有两个:抖动容限和锁定时间。抖动容限衡量CDR能容忍多大的输入抖动而不失锁;锁定时间则决定链路建立的速度。这两个指标往往是矛盾的,需要根据应用场景做取舍。
4.4 PMA整体知识框架
为了让你更直观地理解PMA内部的结构,我画了一张图:
这张图把PMA的核心模块串起来了。你看,数据从左边的TX进去,经过信道衰减,再到右边的RX恢复。CDR在这里扮演了关键角色——它从数据里提取时钟,再反馈给采样器,形成一个闭环。
实际调试中,我建议你按这个顺序排查问题:先看TX的输出眼图是否合格,再看RX的均衡器设置是否合理,最后检查CDR是否锁定。如果CDR没锁住,后面的一切都白搭。
总结一下:PMA是SerDes的物理基础。TX负责把数据推出去,RX负责把数据捞回来,CDR负责让两者同步。这三者配合好了,你的SerDes链路才能跑得稳。我在多个项目中验证过,只要PMA调好了,上层协议的问题往往迎刃而解。
好了,关于PMA的TX、RX和CDR,今天就聊到这里。这些内容看起来理论性强,但每个知识点背后都有实际项目的血泪教训。希望你能把这些原理吃透,下次调试时少走弯路。