做高速数字芯片设计,避不开差分信号接口。LVPECL 和 CML 就是两个老熟人。我最早接触它们是在一个 10G SerDes 项目中,当时被共模电压搞得焦头烂额——LVPECL 的直流电平比 CML 高了将近 0.6V,直接连上去信号眼图都睁不开。
今天咱们就好好聊聊这两个接口:它们是什么、怎么区分、时序约束要注意什么。
1. LVPECL 与 CML 概述
1.1 从高速接口说起
差分信号是高速传输的老祖宗。两根线互为反相,抗共模噪声、电磁辐射小,还能兼容很低的电压摆幅。在 1 Gbps 以上的数据链路里,差分接口几乎是唯一选择。
LVPECL(Low-Voltage Positive Emitter-Coupled Logic)和 CML(Current-Mode Logic)就是差分家族里最常见的两种。它们都诞生于上世纪 90 年代,但到今天还在大量使用——从 FPGA 的参考时钟输入,到 SerDes 的高速数据线,你总能看到它们的身影。
1.2 LVPECL——低压正发射极耦合逻辑
说白了,LVPECL 是经典 ECL 的低电压版本。它靠三极管差分对里的电流切换来产生输出。
- 输出摆幅:典型值 700 mV(峰-峰差分),比 CML 大一倍。
- 共模电压:约 VCC − 1.3 V。假设 VCC = 3.3 V,共模点大约 2.0 V。
- 功耗:偏高。因为发射极电阻始终有电流,而且摆幅大,驱动级功耗大。
- 输出结构:内部是射极跟随器,无需外接上拉电阻,但通常要求 50 Ω 到 VCC − 2 V 的端接。
- 典型应用:时钟分配、背板信号、高速 ADC/DAC 数据接口。
我记得有个项目,客户要求用 LVPECL 时钟驱动 CML 的 SerDes。我没做电平转换就直接连了,结果接收端一直报失锁。后来量共模点,差了 0.6 V……
1.3 CML——电流模式逻辑
CML 也是差分对结构,但它的输出摆幅小得多,功耗也更低。现在 25 Gbps 以上的 SerDes 几乎都用 CML。
- 输出摆幅:典型值 400 mV(差分),部分低功耗设计可以做到 200 mV。
- 共模电压:约 VCC − 0.2 V。比如 VCC = 1.2 V,共模大约 1.0 V。这个点和 LVPECL 差很大。
- 功耗:比 LVPECL 低 30%~50%。因为摆幅小,且电流只在切换时变化。
- 输出结构:集电极开路(或漏极开路),必须外接上拉电阻到 VCC。
- 典型应用:光纤通信(SFP+/QSFP)、芯片间超短距离互连(die-to-die)。
CML 有个坑——很多人以为它内部已经带端接了,其实没有。输出端必须加上拉电阻到 VCC,否则根本没有电流路径。我曾经在仿真里漏了这个上拉,结果看波形一片混乱。
1.4 两者对比
下面这个表格总结了核心差异,做时序约束前最好背下来。
| 参数 | LVPECL | CML |
|---|---|---|
| 输出摆幅(差分) | 700 mV 典型 | 400 mV 典型 |
| 共模电压 | VCC − 1.3 V | VCC − 0.2 V |
| 功耗 | 较高 | 较低 |
| 最大速率 | ~15 Gbps | > 25 Gbps |
| 输出结构 | 射极跟随器 | 集电极开路 |
| 典型端接 | 50 Ω 到 VCC−2 V | 50 Ω 到 VCC |
| 常用电源 | 3.3 V / 2.5 V | 1.2 V / 1.8 V |
你想想看,如果让 LVPECL 驱动 CML 的输入端,共模点不匹配,摆幅也不对。轻则时序余量变小,重则直接无法工作。
1.5 时序约束中的关键点
做静态时序分析(STA)时,这两种接口带来的问题往往不是门延迟,而是信号完整性。
- 差分对内 skew:两根线如果不等长,skew 会直接吃掉 setup/hold 余量。我一般要求线长差不超过 10 mil。
- 共模稳定性:LVPECL 的共模点随工艺和温度变化,会影响过零点位置。时序模型里要留够裕量。
- 端接反射:CML 的端接如果没做在芯片近端,反射会造成眼图闭合。这种情况下时序约束里的 jitter 值要放大。
- 交叉点位置:某些接收器要求差分信号的交叉点在共模电平附近。如果共模偏了,占空比会失真。
我个人习惯在约束脚本里明确写出差分对逻辑关系:set_pin_relationship -diff_clock_pair,这样工具不会把两根单端线当作独立信号去分析。
下图把 LVPECL 和 CML 的核心要素整理在一起,方便你对照着理解。
理解 LVPECL 和 CML 的电气特性,是后续做时序约束的基础。下一章我们会深入分析它们的输出/输入模型到底长什么样,以及如何在 STA 工具里准确描述这些模型。
记住三个数字:
- LVPECL 共模 ≈ VCC − 1.3 V
- CML 共模 ≈ VCC − 0.2 V
- 摆幅差约 300 mV
这组数字能帮你在一秒钟内判断两种接口能否直连。