2. SerDes系统架构:发送端(TX)与接收端(RX)的基本组成、PLL与CDR的作用、时钟数据恢复原理

各位同学,咱们今天聊聊SerDes的系统架构。说实话,很多刚入行的工程师一上来就盯着协议栈或者均衡算法,反而把最基础的收发端结构给忽略了。我个人习惯是,先把整个链路拆成两半——发送端(TX)和接收端(RX),然后再看中间那条“线”上发生了什么。

你想想看,SerDes说白了就是并串转换加高速传输。但为什么它这么难?因为高速信号在传输过程中会变形、会抖动、会衰减。所以TX和RX各自有一套“看家本领”来对抗这些物理效应。

核心一句话:TX负责把并行数据变成高速串行流,并保证信号质量;RX负责从受损的信号中把数据和时钟都恢复出来。

发送端 TX 传输通道 接收端 RX 并行数据 Serializer TX Driver PLL PCB走线 / 电缆 信号衰减 + 抖动 RX Frontend Equalizer CDR Deserializer 恢复数据 图:SerDes系统典型架构(TX → 通道 → RX)

2.1 发送端(TX)的基本组成

TX这边,我习惯把它分成三个模块来看:Serializer(并串转换器)、PLL(锁相环)和Driver(输出驱动器)。

  • Serializer:把N位的并行数据(比如8位、16位)转成1位的高速串行流。嗯,这里要注意,Serializer内部通常用移位寄存器或者MUX树来实现。我在一个10Gbps的项目里用过MUX树结构,当时为了控制时序收敛,折腾了好几个版本。
  • PLL:提供高速时钟。TX的PLL负责把参考时钟倍频到串行数据速率。比如你要跑10.3125Gbps,参考时钟可能是156.25MHz,PLL就得做66倍频。
  • Driver:把串行数据驱动到传输线上。这里涉及电压摆幅、预加重(Pre-emphasis)、去加重(De-emphasis)等参数。说白了,就是让信号在出去之前先“预变形”,抵消通道的衰减。

我的经验:调试TX时,别光看眼图。先确认PLL锁定状态,再看Serializer的输出有没有毛刺。我曾经花了两天查一个眼图闭合的问题,最后发现是PLL的环路滤波器电容焊错了。

2.2 接收端(RX)的基本组成

RX这边比TX复杂一些。因为信号经过通道后已经“面目全非”了。RX需要做三件事:均衡、时钟恢复、串并转换。

  • RX Frontend(前端):包括输入缓冲、阻抗匹配、直流偏置等。这部分决定了RX的灵敏度。
  • Equalizer(均衡器):补偿通道的损耗。常见的有CTLE(连续时间线性均衡器)和DFE(判决反馈均衡器)。CTLE负责高频补偿,DFE负责消除码间干扰(ISI)。
  • CDR(时钟数据恢复):从数据流中提取时钟,并用这个时钟对数据进行重采样。这是RX的核心,咱们下面细讲。
  • Deserializer:把恢复后的串行数据转回并行数据,交给下游逻辑。

注意:RX的均衡器不是万能的。CTLE的增益太大反而会放大噪声,DFE的抽头系数需要自适应训练。我曾经在一个25Gbps的项目里,DFE的收敛算法写错了,导致链路始终无法建立——后来发现是初始系数设成了全0。

2.3 PLL与CDR的作用

这两个模块都跟时钟有关,但角色完全不同。我经常跟新人说:PLL是“造钟”的,CDR是“修钟”的。

对比项 PLL(锁相环) CDR(时钟数据恢复)
位置 TX 和 RX 都有 仅 RX 有
输入 参考时钟(如 156.25MHz) 串行数据流(无独立时钟)
输出 高频时钟(如 10.3125GHz) 恢复时钟 + 恢复数据
核心功能 频率合成 + 相位锁定 从数据边沿提取时钟相位
挑战 抖动、锁定时间、环路稳定性 数据跳变密度、抖动容限

你想想看,TX的PLL产生一个干净的时钟,Serializer用这个时钟把数据送出去。但数据经过通道后,时钟信息已经“混”在数据里了。RX的CDR要做的,就是把这个时钟重新“挖”出来。

2.4 时钟数据恢复原理

CDR的原理,说白了就是锁相环的一种变体。但它锁的不是参考时钟,而是数据流中的跳变沿。

典型的CDR结构包含三个部分:

  1. 相位检测器(PD):比较数据跳变沿和本地时钟的相位差。常用的有Hogge PD、Bang-Bang PD等。
  2. 环路滤波器(LF):对相位误差进行滤波,产生控制电压。通常是一个低通滤波器,决定CDR的带宽和响应速度。
  3. 压控振荡器(VCO):根据控制电压调整输出时钟的频率和相位。

工作流程是这样的:

  • 数据进来,PD检测到跳变沿,跟VCO输出的时钟比相位。
  • 如果有偏差,PD输出一个误差信号(比如“超前”或“滞后”)。
  • 环路滤波器把这个误差信号平滑一下,变成VCO的控制电压。
  • VCO调整时钟相位,直到时钟边沿对准数据的中心位置。

关键点:CDR的环路带宽需要精心设计。带宽太宽,会跟踪数据中的高频抖动,反而引入噪声;带宽太窄,跟不上频率变化,会失锁。一般建议带宽是数据速率的1/1000到1/500。

我记得在一个PCIe Gen4的项目里,CDR的环路滤波器用了二阶结构,但积分路径的增益设得太大,导致环路出现了低频振荡。后来我把积分增益降了一半,同时增加了零点补偿,问题才解决。嗯,这种坑踩过一次就记住了。

避坑指南:我曾经在调试CDR时发现,如果输入数据长时间没有跳变(比如连续发送全0或全1),CDR会“漂移”。所以SerDes协议一般都会要求数据做加扰(Scrambling)或8B/10B编码,保证足够的跳变密度。

最后总结一下:TX的核心是PLL+Serializer,保证数据以正确的速率和信号质量送出去;RX的核心是Equalizer+CDR,从受损信号中恢复数据和时钟。这两个端就像一对舞伴,一个负责“发球”,一个负责“接球”,中间的通道就是那个越来越难打的“球场”。

好了,这一章的内容就到这里。下一章咱们聊聊SerDes的编码方式——8B/10B和64B/66B,看看它们是怎么保证DC平衡和时钟恢复的。


可可精品资料库