4. 抖动预算概念:为什么需要分配预算
好,咱们今天聊个实在的话题。抖动预算,说白了就是一套“分饼”的规则。
你想想看,一条高速链路从发端到收端,中间要经过多少环节。发射芯片的PLL、驱动电路、PCB走线、连接器、背板、线缆、接收芯片的时钟恢复……每个环节都会贡献抖动。如果不做分配,每个人都在拼命优化自己那块,到头来很可能谁的指标都卡死,但系统还是跑不起来。
我十几年前刚入行时,带我的老工程师跟我说过一句话,我到现在还记得:“没有预算的设计,就是没有节制的消费。” 太贴切了。
4.1 什么是抖动预算
先明确概念。抖动预算,就是为高速链路中每个抖动贡献源分配一个允许的抖动上限值,使得这些抖动按某种方式叠加后,仍然落在接收端所允许的总抖动窗口之内。
嗯,这里要注意,我特意用了“按某种方式叠加”。为什么?因为不同抖动成分的叠加方式不一样。随机抖动 (Rj) 是均方根叠加,确定性抖动 (Dj) 是线性叠加。混在一起算总账,不能简单粗暴地求和。
我用一张图来表示抖动预算的整体思路,你看完就明白了。
你看这张图,总抖动预算从最上层开始,先拆成Rj和Dj两条线。Dj里面又细分四个主要成分。最后所有分配结果都要落到具体设计上,而且还得考虑设计目标、工艺环境、以及——最重要的——系统余量。
4.2 为什么要做抖动预算分配
直接说三个核心原因。不多,就三个,但每个都是我在项目里踩过坑才真正理解的。
4.2.1 原因一:必须连接收发两端的“语言”
发射芯片的数据手册里写的抖动,和接收端容忍度里的抖动,不是一个概念。发端关心的是输出抖动,通常是Tj,有时会标Rj和Dj。收端关心的是抖动容忍度,也就是它能承受多大抖动而不出误码。
这两端如果各说各话,中间通道的工程师就很痛苦。我以前在调一个12.5Gbps的背板链路时,发端芯片标称输出抖动2ps,收端声称能容忍3ps。我一看,这不是够用吗?结果一测眼图,闭死了。为什么呢?因为发端的2ps是在理想测试条件下测的,收端的3ps是在缓慢变化的抖动场景下测的。两者根本没对齐。
抖动预算就是解决这个问题的。它建立了一个共同的框架:站在芯片接口的参考点,定义清楚每个节点的抖动约束。这样所有团队才能在一个频道上说话。
4.2.2 原因二:防止“过度设计”和“设计不足”
不做预算,工程师们会怎么做?我见过两种极端。
- 保守派: 每个环节都要求最低抖动,比如锁相环必须小于0.5ps,通道损耗必须小于1dB……结果整个系统成本翻倍,功耗爆炸。
- 激进派: 觉得差不多就行,“我觉得这个通道能跑25Gbps”,结果一量产,良率感人。
我个人习惯的做法是:先把目标误码率(比如10^-12)和UI(单位间隔)定下来,然后从后往前推。从接收端的采样点往回算,看锁相环允许多大抖动,通道允许多大ISI,发射端能容忍多大Pj。这样每个人的指标都是有理有据的,不是拍脑袋的。
4.2.3 原因三:确保量产良率与可靠性
这一点很多人会忽略。设计阶段的抖动预算定好了,但量产时芯片的工艺角在变化,电压在波动,温度在上升。一个刚过线的设计,在-40°C到85°C的范围内可能就挂了。
你想想看,如果一个链路在65°C时还能跑,但到85°C时时钟恢复单元的性能变了,抖动预算超额了,误码率从10^-12跳到10^-6——产品就废了。
我经历过最惨的一次,是一个400G光模块项目。PCB设计时通道间串扰留的余量不够,高温环境下串扰抖动恶化,导致整个模块的批量良率从95%掉到60%。后来复盘分析,就是抖动预算里没给串扰留够额度。
4.3 抖动预算分配的基本步骤
下面我给出一个基本的抖动预算分配流程,你可以当作操作手册来用。
- 第一步:确定系统层级总预算。 这通常由协议决定。比如PCIe 5.0,单通道16GT/s,UI是62.5ps,它规定了总Tj和总Dj的限值。
- 第二步:分解总预算为Rj和Dj。 根据统计规律,一般会先定Dj的上限,剩下的算作Rj。为什么?因为Dj可预测、可控、可优化,而Rj是随机的,只能通过锁相环带宽来管理。
- 第三步:细化Dj到其子成分。 DCD通常由占空比失真引起,ISI由通道带宽不足造成,Pj和Sj则由电源噪声和串扰引入。每个成分的特性不同,分配额度也不同。
- 第四步:考虑工艺、电压、温度角。 就像我之前说的,要给最差的角留余量。
- 第五步:验证和迭代。 仿真跑完看浴盆曲线,看BER是否达标。不达标就回来调整分配。
| 抖动成分 | 来源 | 数学特征 | 对BER的影响 | 分配方法 | 设计手段 |
|---|---|---|---|---|---|
| Dj (确定性抖动) | ISI, DCD, Pj, Sj | 有界,双峰/多峰分布 | 直接决定跟图睁开的高度和宽度 | 通常预先分配一个固定值 | 均衡器、阻抗匹配、屏蔽 |
| Rj (随机抖动) | 热噪声、散粒噪声、相位噪底 | 高斯分布,无界 | 在低BER 时成为主导 | 根据BER所需标准偏差反推 | 锁相环带宽、低相位噪声设计 |
| Tj (总抖动) | Dj + Rj(双狄拉克模型) | 有尾高斯卷积 | 与BER直接关系被BJ建模 | 系统级约束,协议或规格定义 | 全链路协同优化 |
| JSP (抖动模板) | 协议定义的掩码 | 对应UI百分比 | 通过眼图通过与否判定合规 | 硬约束,设计需满足 | 在S参数仿真中验证 |
| JL (相位抖动) | 锁相环的窄带抖动 | 低频有色抖动 | 影响跟踪能力,增加误码风险 | 通常在系统级测试中校准 | 优化锁相环带宽 |
4.4 一个抖动预算分配的现场案例
我拿一个实际案例来说,你感受会更深。
那是一个25Gbps的背板链路,单通道数据速率25.78125Gbps,UI = 38.8ps。协议要求误码率小于10^-12。
第一步:查协议,总Tj在BER=10^-12时不得大于0.3UI,也就是11.6ps。
第二步:我习惯先定Dj。根据经验和通道损耗预估,Dj分配6ps。为什么是6?因为通道损耗在12dB左右,ISI占大头,加上连接器的DCD,再留点余量。
第三步:Dj确定后,Rj的可分配预算就是用Tj减去Dj。但这可不能直接减。因为双狄拉克模型下,Tj = Dj + 2×σ × Q(BER),Q(BER=10^-12) ≈ 7.035。所以Tj = Dj + 14.07×σ,σ是Rj的均方根值。
代入:11.6 = 6 + 14.07×σ → σ = 0.398ps。
这个σ就是Rj的允许值。接下来分配锁相环的相位噪声和电源噪声的贡献。锁相环的相位噪声积分带宽在10kHz~100MHz,要让Rj贡献小于0.3ps,电源耦合引入的Sj小于0.2ps。加起来0.5ps,远超允许值0.398ps了。怎么办?
要么优化锁相环的相位噪声(比如用更高级的电荷泵),要么在电源分配网络上加去耦电容进一步降低电源抖动。我当初的方案是:锁相环Rj 0.28ps,电源Sj 0.1ps,加起来0.38ps,ok了,留了约5%的余量。
这个例子说明什么?抖动预算不是一个静态的数字分配,而是一个动态的、有约束的优化过程。 你分给Dj多了,Rj就紧;你分配了但实现不了,就得回来重新砍Dj的预算。
4.5 小结:为什么要分配预算
其实核心就两句话:第一,分配预算是为了让整个团队朝着同一个目标努力。 没有预算,发射团队做的再好,通道团队可能还不知道要优化什么。第二,分配预算确保了最低的成本和最高的良率。 你设计时多花点时间做预算,比你量产时在产线上一片一片筛片要划算得多。
我见过不少团队,项目初期觉得“先做出来再说,抖动可以后面调”。结果到后期,锁相环的相位噪声已经锁死了,通道的损耗也无法改了,只能压榨接收端的EQ。但那能压榨的空间非常有限。最后只能降速或者换芯片,代价惨重。
所以,抖动预算这件事,我真心建议你在板子还没开始画之前,先花几天时间推一遍。这笔时间投资,回报率极高。