2、Skew定义及对信号完整性的影响

我记得刚开始做PCIe Gen3那会儿,对skew的概念理解还比较浅。总以为只要差分线等长就万事大吉,结果板子回来眼图惨不忍睹。后来才明白,skew这件事,真不是简单的等长能解决的。

2.1 时间偏斜——到底偏了什么?

Skew,说白了就是时间上的错位。同一个时钟沿,本应该同时到达的信号,却因为路径差异、材料差异、甚至温度差异,先后到达了接收端。这个时间差,就是skew。

在PCIe Gen4这种20Gbps的高速总线上,眼图的一个UI(单位间隔)只有50ps。几皮秒的skew,可能就把眼图压瘪了。

我个人习惯把skew分成两大类来理解:

  • 源端产生的偏斜:比如芯片内部时钟分配网络的不平衡,或者PLL锁相环的抖动
  • 传输路径引入的偏斜:PCB走线长度差、介质介电常数波动、过孔结构不对称、连接器耦合差异

一个小经验:很多工程师只关注走线等长,却忽略了内层参考平面的等效介电常数差异。同样长度的走线,如果一层是FR4内层、另一层是半固化片,skew可能差3-5ps。我曾在某款服务器主板上栽过这个跟头。

测量skew的时候,我们通常关注的是上升沿的中点(或者下降沿的中点),因为那是接收端判断数据0/1的关键点。两个信号沿着各自的路径到达,它们的中点时间差就是skew。

2.2 Intra-pair vs Inter-pair skew——两种不同量级的偏斜

这两类skew,影响场景完全不同,调试手段也不同。

对比项 Intra-pair skew(对内偏斜) Inter-pair skew(对间偏斜)
定义 同一个差分对内部,P线和N线之间的时间差 不同差分对之间,对应信号线(如D+ vs D+)的时间差
典型值(PCIe Gen4) 规范要求 < 5ps,实际设计目标 < 3ps 规范要求 < 200ps,但实际设计中越短越好
主要来源 走线等长误差、过孔长度差异、耦合不均匀 各通道路径长度差、跨层参考平面变化、不同连接器延迟
对信号的影响 直接导致差分信号共模转换,严重时眼图完全闭合 影响多通道数据对齐,可能被链路训练重定时补偿
调试难点 皮秒级别,需要高带宽示波器+精确探测 纳秒级别,常用TDR或差分延迟扫描

你想想看,Intra-pair skew就像两个人并排跑步,一个人步子慢了半拍,整个人的姿态都歪了。差分信号就是靠着两个相反相位的信号互相抵消共模噪声的,如果它们到达时间错开,共模抑制比直接下降,反射噪声、辐射都会恶化。

Inter-pair skew则像不同跑道上的运动员先后到达终点。PCIe协议允许一定的对间skew,因为接收端有弹性缓冲(elastic buffer)来做deskew。但超过某些值,就会触发re-timining或造成数据错位。我个人习惯把Inter-pair skew控制在100ps以内,留足裕量。

曾经有个项目,Inter-pair skew实测180ps,链路怎么也训练不到Gen4速率。我带着团队把所有通道的走线长度重新量了一遍,发现其中一对因为走线躲避反焊盘绕了300mil,相当于45ps的延迟差。把那截绕线拉直后,skew降到80ps,链路就稳定了。

2.3 Skew如何导致眼图闭合与误码

眼图就是接收端看到的数据波形叠加。当没有skew时,差分信号的过零点对齐,眼图睁开最大。一旦出现skew,事情就变得麻烦了。

  • Intra-pair skew导致眼高降低:P和N信号到达时间错开,接收端的差分电压幅度会被削减。理论上,skew达到1个UI时,差分信号变成0,眼完全闭合。
  • Intra-pair skew增加抖动:差分信号的过零点偏移,转化为确定性抖动(DJ)。抖动的增大又进一步挤压眼宽。
  • Inter-pair skew影响多比特采样:PCIe接收端同时采样多个通道的数据,如果skew过大,采样时钟不能同时对准所有通道的最佳采样点,误码率飙升。

为什么会这样?我们来看一个简化模型。假设差分信号的P端先到,N端后到Δt,那么在接收端看到的差分电压(P - N)的上升沿会变成两个过零点,中间有一个平台区。这个平台区会造成数据判断的不确定性——如果采样时钟落在平台区,收到的是高电平还是低电平?完全随机。这就是误码的来源。

请注意:Inter-pair skew虽然可以通过接收端deskew补偿一部分,但补偿能力是有限的。PCIe Gen4的弹性缓冲深度一般为5-10个UI,超过这个范围,数据就会丢失。有次我在调试时发现,某对通道因为连接器选型不当,skew累积达到300ps,直接导致链路无法完成宽度训练。

直观理解,请参考下面的框架图:

Skew类型与影响逻辑图 时间偏斜 (Skew) Intra-pair Skew Inter-pair Skew 共模转换增大 眼高降低 / 眼宽变窄 采样点错位 链路训练失败 误码 (BER) 上升 skew越大,眼图越闭合

从上图可以看清脉络:时间偏斜根节点出发,分裂为Intra-pair和Inter-pair两种形态,各自通过不同的机制最终导向误码。值得一提的是,Inter-pair skew在PCIe链路中可以通过弹性缓冲在一定程度上补偿,但补偿窗口有限;而Intra-pair skew几乎无法通过协议层补偿,必须通过硬件设计严格控制。

避坑指南:我曾经遇到一个案例,PCB走线等长控制在0.5mm以内,但Intra-pair skew依然达到7ps。最终定位到问题所在——差分对在BGA区域绕线时,P线和N线分别从不同层穿过,过孔长度差了0.3mm。过孔的寄生电感差异,在上升时间100ps的信号中贡献了约4ps的skew。从此我做严格的内对称:过孔数量必须相等,且同层走线。

2.4 实际调试中的skew判定标准

PCIe Gen4规范在Base Spec中明确给出了skew限值:

  • Intra-pair skew:不超过0.25个UI,即 < 12.5ps(按20GHz UI=50ps)。但绝大多数芯片厂商推荐不超过5ps,才算可靠设计。
  • Inter-pair skew:不超过5个UI,即250ps。但实际设计中,我会压到100ps以内,不然链路训练阶段lost lock风险会上升。

这些数字不是凭空定的。我做过一个仿真对比:Intra-pair skew从0增加到12ps,眼高从500mV降到350mV,眼宽从45ps降到30ps,误码率从1e-15升高到1e-6——整整9个数量级。所以调试时一定要拿着高带宽示波器(至少25GHz)去做精确时间差测量,不要相信什么万用表能测skew。

嗯,这就是skew的基础概念和影响。掌握了这些,你才能在后几章的源头补偿和PCB设计中做出正确判断。