第2章 PCIe电气层基础:差分信号、眼图、抖动
这一章,咱们来聊聊PCIe物理层最核心的三个东西:差分信号、眼图和抖动。你第一次看到PCIe高速信号的眼图时,是不是以为屏幕坏了?怎么一片模糊的“眼睛”还闭着?别急,看完这章你就全明白了。
2.1 差分信号——为什么不用单端?
PCIe从Gen1到Gen6,一直坚持用差分信号传输。为什么?说白了,就两个理由:抗干扰强、信号干净。
差分信号说白了就是“一正一反”两根线(D+和D-),传的是它们的电压差。外界噪声来了,两根线上同时叠加同样的噪声,一减就没了。我个人觉得,这是模拟电路最巧妙的设计之一。
- 共模抑制:外界噪声在两根线上“同向”出现,差分抵消
- 辐射更小:两根线上电流方向相反,电磁场互相抵消
- 电压摆幅小:可以用更低的电压(如800mV)跑更高频率
我在项目中遇到过一件事:有一次调试Gen3链路,发现误码率总是降不下来。示波器一测,单端信号波形还行啊。换成差分探针一看——问题出来了,D+和D-的压摆率不一样,导致差分转换点偏移。从那以后,我每次看信号都要提醒自己:别只看单端,差分才是王道。
| 对比项 | 单端信号 | 差分信号 |
|---|---|---|
| 抗干扰能力 | 弱 | 强(共模抑制) |
| EMI辐射 | 高 | 低 |
| 电压摆幅 | 大(1.8V-3.3V) | 小(0.8V-1.2V) |
| PCB占用 | 1根线/信号 | 2根线/信号 |
| PCIe适用性 | 不推荐 | 必须 |
你想想看,PCIe Gen4的速率已经到16 GT/s,一个UI(单位间隔)才62.5 ps。这么短的时间里,信号的上升沿和下降沿必须精确到皮秒级。差分信号的共模抑制特性,在这时候就是救星。
2.2 眼图——信号质量的“心电图”
眼图是什么?其实很简单:把很多bits的波形叠在一起显示,就能看到一个个“眼睛”。眼睛张开越大,信号质量越好。我个人习惯,每次拿到一块新板子,第一件事就是看眼图——它就像医生的心电图,一眼就能看出信号有没有毛病。
2.2.1 眼图怎么看?
我刚开始做SI仿真时,以为眼图就是看“眼睛是不是睁着”。后来被老师傅骂了一顿:眼图里藏着的信息太多了。关键看四个参数:
- 眼高:代表电压裕量。太小说明噪声太大或信号衰减严重
- 眼宽:代表时间裕量。太小说明抖动或数据相关干扰严重
- 抖动:看眼睛闭合的位置是否“模糊”。模糊越宽,抖动越大
- 上升/下降时间:眼图边缘的斜率控制
| 参数 | 典型PCIe Gen4要求 | 常见问题 |
|---|---|---|
| 眼高 | ≥ 300 mV(差分) | 直流阻容、衰减 |
| 眼宽 | ≥ 0.4 UI | 抖动、ISI |
| 抖动(TJ) | ≤ 0.6 UI | 电源噪声、串扰 |
| 上升时间 | 30 ps ~ 50 ps | 驱动能力、负载 |
2.2.2 眼图闭合的原因
为什么眼图会闭合?我遇到过的情况无外乎以下几种:
- 通道损耗:PCB走线太长或过孔太多,高频分量被衰减——眼高变小
- 反射:阻抗不连续,回波损耗大了——眼图出现“重影”
- 串扰:相邻信号互相干扰——眼图上下出现毛刺
- 抖动:时钟不干净或电源噪声——眼图横向变模糊
有一回我仿真一个Gen5链路,眼图怎么调都不行。折腾了两天,最后发现是DC阻断电容选错了——容值偏小导致低频分量损失太多。换了电容后,眼高从200 mV跳到450 mV。嗯,这种坑你遇到了就会记得很牢。
2.3 抖动——信号的时间“晃动”
抖动的概念,说白了就是信号的边沿不在它应该在的位置。你想想看,理想的时钟边沿应该在T=0、T=1UI、T=2UI……整整齐齐。但实际中,由于各种噪声和干扰,边沿会提前或延后一点点。这个“一点点”就是抖动。
2.3.1 抖动的分类
抖动可以分为两大类,理解这个分类非常重要——因为处理方法完全不同:
- 随机抖动(RJ):高斯分布,没办法完全消除。来自热噪声、散弹噪声等
- 确定性抖动(DJ):有界的,可以定位和优化。下面还能细分:
确定性抖动又分为:周期性抖动(PJ,来自电源纹波或时钟串扰)、数据相关抖动(DDJ,也叫码间干扰ISI)、占空比失真(DCD,上升/下降时间不对称)。
| 抖动类型 | 分布特征 | 来源 | 可消除? |
|---|---|---|---|
| RJ | 高斯、无界 | 热噪声、散弹噪声 | 不能,只能控制 |
| PJ | 周期、离散 | 电源纹波、时钟串扰 | 可以 |
| DDJ | 码型相关 | 通道带宽不足、ISI | 可以 |
| DCD | 占空比偏移 | 驱动不对称、偏置问题 | 可以 |
2.3.2 抖动怎么测?
抖动测量的方法有三种:
- 时间间隔分析(TIA):用高精度计时器直接测边沿位置。精度高但慢
- 示波器眼图法:从眼图中提取抖动,适合工程快速判断
- 误码率扫描(BERT Scan):扫出浴盆曲线,精确评估裕量
我个人做仿真时,最喜欢用BERT Scan看浴盆曲线。它直接把Bit Error Rate画出来,可以一目了然地看到眼图中间那片“安全区域”有多宽。如果浴盆曲线两边陡峭下降后中间还有余量,说明抖动控制得不错。
2.4 本章知识框架
下面我用一张图总结下本章的核心逻辑。你顺着这张图走,就能理解差分信号、眼图和抖动之间的关联:
这一章的内容就是这样。差分信号是基础,打好这个基础才能看懂眼图;眼图是“信号质量窗口”,从中你能识别抖动问题;抖动则是“元凶”,理解了它才能对症下药。记住,在PCIe仿真和测试中,这三个概念永远是绑在一起的——你没法只看其中一个就判断链路的健康状况。