第1章:高速串行收发器(SerDes)原理
各位同学,今天咱们来聊聊SerDes。说实话,这玩意儿是FPGA高速设计的核心,也是很多工程师的「拦路虎」。我记得刚入行那会儿,第一次调10G SerDes,眼图死活睁不开,折腾了整整两周。后来才发现,原来是PCB走线的一个过孔阻抗不连续。嗯,这种坑,我希望你们能少踩一些。
1.1 SerDes架构概览
SerDes,说白了就是Serializer/Deserializer的缩写。它的任务很简单:把并行数据转成串行数据发出去,再把收到的串行数据转回并行。但简单背后,藏着不少门道。
一个典型的SerDes架构包含以下几个关键模块:
- PLL(锁相环):负责产生高速时钟,我习惯叫它「心脏」
- CDR(时钟数据恢复):从数据流中提取时钟,相当于「耳朵」
- Serializer(串化器):并转串,把宽位宽数据压缩成高速串流
- Deserializer(解串器):串转并,把高速串流还原成宽位宽数据
- TX/RX均衡电路:补偿信道损耗,让信号能跑得更远
核心要点:SerDes的本质是「用频率换宽度」。并行总线虽然宽,但频率上不去;串行总线虽然窄,但能跑到几十GHz。你想想看,一根线跑25Gbps,比32位并行总线跑800MHz效率高多了。
下面这张图是我自己画的SerDes架构框图,帮你理清各模块的关系:
1.2 PLL与CDR:时钟的「发」与「收」
先说说PLL。PLL的作用是生成一个低抖动、高精度的高速时钟。我个人习惯把PLL分成三部分:鉴频鉴相器(PFD)、环路滤波器(LF)和压控振荡器(VCO)。
这里有个关键点:PLL的抖动性能直接影响SerDes的眼图质量。我在一个10G项目中,就因为PLL的环路带宽设置不当,导致输出时钟的相位噪声超标,眼图闭合了将近20%。后来把环路带宽从1MHz调到500kHz,问题才解决。
实战技巧:选择PLL带宽时,我一般遵循「输入参考时钟的1/10到1/20」这个经验值。比如参考时钟100MHz,PLL带宽设在5-10MHz比较合适。带宽太宽,噪声抑制差;太窄,锁定时间太长。
再说CDR。CDR要从数据流中恢复出时钟,这比PLL生成时钟难多了。为什么?因为数据流里没有专门的时钟信号,全靠数据跳变沿来提取。
CDR的两种主流架构:
- 基于PLL的CDR:用PLL跟踪数据边沿,适合连续数据流
- 基于相位插值的CDR:用数字方式调整采样相位,灵活性更高
我记得有一次调试25G SerDes,发现CDR老是失锁。查了半天,原来是数据流中连续相同的bit太多(比如64个0),CDR没有跳变沿可参考,相位跑飞了。后来加了8B/10B编码,保证最大连续相同bit不超过5个,问题迎刃而解。
注意:CDR对数据模式有要求。如果数据流长时间没有跳变,CDR会「漂移」。所以高速SerDes通常需要加扰码或编码(如8B/10B、64B/66B),保证数据有足够的跳变密度。
1.3 预加重与均衡:给信号「补补身子」
信号在PCB上跑,就像人跑马拉松——距离越长,衰减越厉害。高频分量的衰减尤其严重,这就是所谓的「趋肤效应」和「介质损耗」。
预加重和均衡,就是给信号「补补身子」:
| 技术 | 位置 | 作用 | 我常用的参数 |
|---|---|---|---|
| 预加重(Pre-emphasis) | 发送端 | 增强高频分量,补偿信道衰减 | 3-6dB,视信道长度而定 |
| 去加重(De-emphasis) | 发送端 | 降低低频分量,相对增强高频 | -3到-6dB |
| CTLE(连续时间线性均衡) | 接收端 | 线性放大高频,抑制低频噪声 | 增益峰值在信号频率的1/2处 |
| DFE(判决反馈均衡) | 接收端 | 消除码间干扰(ISI) | 5-15个抽头 |
我曾经在一个项目中,PCB走线长度达到30英寸,信号衰减超过15dB。光靠TX端的预加重根本不够,必须配合RX端的CTLE和DFE。调试时我先把CTLE的增益调到最大,然后逐步降低,同时观察DFE抽头系数的收敛情况。嗯,这个过程有点像调收音机——找到那个「甜点」位置。
1.4 眼图分析:信号质量的「体检报告」
眼图,说白了就是把多次采样的波形叠加在一起。为什么叫眼图?因为看起来像一只睁开的眼睛。
眼图能告诉我们什么?
- 眼高:信号幅度的裕量,越高越好
- 眼宽:采样时序的裕量,越宽越好
- 抖动:信号边沿的不确定性,越小越好
- 眼图闭合度:眼睛睁得越大,信号质量越好
我判断眼图是否合格,一般看三个指标:
- 眼高 ≥ 信号摆幅的70%
- 眼宽 ≥ 1个UI(单位间隔)的60%
- 总抖动 ≤ 0.3 UI
经验之谈:眼图闭合不一定是SerDes本身的问题。我遇到过好几次,眼图不好看,结果发现是电源纹波太大,或者参考时钟的抖动超标。所以调试时,先检查「外围环境」,再调SerDes参数。
1.5 常用速率标准
不同速率对应不同的应用场景。我整理了一张表,方便你对照:
| 速率 | 典型标准 | 编码方式 | 有效数据率 | 我常用的场景 |
|---|---|---|---|---|
| 1Gbps | 千兆以太网(1000BASE-X) | 8B/10B | 1.0 Gbps | 控制面通信、低速背板 |
| 10Gbps | 10G以太网(10GBASE-R) | 64B/66B | 10.3125 Gbps | 数据中心、基站回传 |
| 25Gbps | 25G以太网(25GBASE-R) | 64B/66B | 25.78125 Gbps | 5G前传、高性能计算 |
| 100Gbps | 100G以太网(4×25G) | 64B/66B | 103.125 Gbps | 核心路由、云互联 |
你可能会问:为什么10G以太网的线速率是10.3125Gbps,而不是正好10G?因为64B/66B编码引入了2bit的开销,66/64 = 1.03125,所以10G × 1.03125 = 10.3125G。这个细节,很多新手会忽略。
说到25G,我个人觉得这是目前性价比最高的速率。为什么?因为25G SerDes可以直接用现有的PCB材料和连接器,不需要换昂贵的超低损耗板材。我在好几个项目里都用25G,调试难度比100G低不少,但带宽又够用。
选型建议:如果你的项目对成本敏感,优先考虑25G SerDes。如果追求极致带宽,100G PAM4是方向,但调试复杂度会高一个数量级。嗯,这个咱们后面章节再细聊。
好了,这一章的内容就到这里。SerDes的原理说复杂也复杂,说简单也简单——无非就是「发出去、收回来」这六个字。但每个环节都有坑,希望我踩过的那些坑,能帮你少走些弯路。
本章核心要点回顾:
- SerDes架构:PLL生成时钟,CDR恢复时钟,Serializer/Deserializer完成并串转换
- 预加重和均衡是补偿信道损耗的关键手段,TX和RX要配合使用
- 眼图是信号质量的直观反映,眼高、眼宽、抖动是三个核心指标
- 不同速率标准有不同编码方式和应用场景,25G是目前性价比最优的选择
公众号:蓝海资料掘金营,微信deep3321