4. CML 电气特性:输出电平、输入阈值、电流模式

CML(电流模式逻辑)在高速接口里其实很常见,尤其是 10 Gbps 以上的场景。它的核心思路很简单:用恒定的电流源在差分对里切换,输出摆幅很小,所以能跑得飞快。我刚开始接触 CML 时总觉得它和 LVPECL 差不多,后来踩了坑才明白——两者差别大了去了。

4.1 输出电平——小摆幅,大讲究

CML 的输出电平完全由尾电流和负载电阻决定。典型的输出结构是这样的:一对差分晶体管,上面接 50 Ω 电阻到 VDD 或 VCC(通常是 1.2 V),下面接一个尾电流源。电流在差分对之间来回切换,输出端电压就是 VDD 减去电流流过电阻的压降。

举个例子,尾电流设为 16 mA,负载电阻 50 Ω,单端输出摆幅就是 16 mA × 50 Ω = 800 mV(峰峰值)。差分摆幅翻倍,1.6 V 左右。但实际芯片里为了压低功耗和减小串扰,很多 CML 输出只做 400 mV 单端摆幅,调小电流或电阻就行。

参数典型值说明
单端输出高电平 VOHVDD - 200 mV ~ VDD - 50 mV取决于电流和电阻匹配
单端输出低电平 VOLVDD - 600 mV ~ VDD - 400 mV下管完全导通时的电压
差分输出摆幅(峰峰值)400 mV ~ 1.6 V常见的 800 mV 差分摆幅最常用
输出共模电压 VCMVDD - 400 mV 左右靠电阻分压或反馈维持

我个人的调试习惯:测 CML 输出时别只看峰峰值,一定要看共模电压。有一次项目里 25 Gbps 眼图总闭合,查了半天发现是输出共模偏了 200 mV,接收端输入阈值不对。电压表一测就现原形。

4.2 输入阈值——差分对的门限

CML 接收端就是个差分放大器,输入阈值取决于管子的跨导和偏置。真正重要的是阈值电压的范围——因为你得保证发射端出来的电平落在这个区间里。

典型的 CML 输入阈值参数:

  • 差分输入灵敏度:50 mV ~ 100 mV(最差的也能分辨 100 mV 的差分信号)
  • 允许的输入共模范围:VDD - 1.2 V ~ VDD - 0.2 V(以 1.2 V 电源为例)
  • 输入偏置电流:微安级,基本可以忽略

这里有个关键点——CML 接收端通常内置 50 Ω 终端电阻到 VDD,所以输入端就自动端接了。嗯,这一点和 LVPECL 需要外部偏置电阻完全不同,别搞混了。

核心公式(其实都来自欧姆定律):

Vdiff_pp = 2 × I_tail × R_load
VCM = V_DD - I_tail × R_load

I_tail 是尾电流,R_load 是单端负载电阻。记住这两个参数,CML 电平就算完了。

4.3 电流模式——为啥叫"电流模式"?

说白了,CML 的思维是“靠电流切换来产生电压变化”,而不是像 CMOS 那样靠电源轨对地硬推。尾电流源把电流固定住,差分对管像开关一样把电流导向左边或右边。所以输出端的电压变化只是电流流过电阻的副产品。

这种设计带来的好处:

  1. 速度快——晶体管不进入饱和区,没有存储效应,切换时间可以做到皮秒级。
  2. 噪声低——电流恒定,电源纹波对输出影响小,共模抑制比高。
  3. 功耗稳定——不管输出是 1 还是 0,电流都差不多,电源干扰小。

但是代价也很明显:静态功耗一直存在。我记得有次给客户做 16 通道的 28 Gbps 芯片,光 CML 输出级的功耗就占了整个芯片的三分之一。为了省电,后来改用占空比控制的休眠模式,但难度又上来了。

曾经踩过的坑:有一次我把 CML 输出直接接到 LVPECL 输入上,没加直流耦合调整。结果共模电压差了将近 500 mV,接收端根本识别不出来信号。折腾了两天才找到原因——CML 是 VDD 参考,LVPECL 是 VCC-1.3 V 参考,电平体系不同!后来我都在板上标注出每种接口的共模范围,再也不凭感觉连线了。

4.4 一张图看懂 CML 结构

下图为 CML 驱动器的基本电路结构和电平关系,我画了好几次才把标注调整到不打架。你对着电路看参数,会更有感觉。

CML 驱动器结构与电平关系 VDD R1 50Ω R2 50Ω OUT- OUT+ M1 M2 ITAIL GND 输出电平标尺(VDD=1.2V) VDD=1.2V VOH ≈ 1.0V VOL ≈ 0.8V 200 mV (单端) VCM=0.9V ITAIL = 16 mA → 单端摆幅 800 mV ITAIL = 8 mA → 单端摆幅 400 mV

小技巧:如果你从示波器上看到 CML 差分波形峰峰值只有 300 mV,先别怀疑芯片坏了。测一下输出共模——如果共模偏离理论值太多,很可能是电源电压不准或者负载电阻不对。我遇到过有人把 50 Ω 终端焊成了 75 Ω,眼图直接塌了。

4.5 与 LVPECL 的关键差异

在调试现场,区分 CML 和 LVPECL 是基本功。别看都是差分电流逻辑,电气参数差距能让你的高速链路彻底罢工。

特性CMLLVPECL
电源电压1.2 V, 1.8 V 常见3.3 V, 2.5 V 常见
输出共模VDD - 0.4 V 左右VCC - 1.3 V 左右
单端摆幅200 mV ~ 800 mV600 mV ~ 1.0 V
终端方式50 Ω 到 VDD(内置或外置)50 Ω 到 VCC - 2 V(戴维南等效)
功耗低(几 mW 到十几 mW)高(几十 mW)
最大速率> 40 Gbps< 10 Gbps 较多

我最怕的就是项目文档里只写“差分信号”,没标接口类型。有一次硬件联调,板子上 CML 输出通过 AC 耦合电容传给 LVPECL 输入,结果共模偏置完全不对,信号因为超出输入范围而失真。后来我强制要求在原理图上用不同颜色标注 CML 和 LVPECL 的网络名,再也没出过这类问题。

4.6 调试要点清单

  • 第一步:查电源电压。CML 的 VDD 精度要求 ≤ ±5%,否则输出共模会偏离。
  • 第二步:量输出共模。用万用表测差分对正端到地的直流电压,应该在 VDD - 0.4 V 附近(以 1.2 V 电源为例)。
  • 第三步:用示波器看差分眼图。CML 眼图应该干净、对称、抖动小。如果眼图上下沿不对称,检查电流源匹配。
  • 第四步:确认负载电阻。CML 输出要求外部或内部 50 Ω 到 VDD,少一个电阻都会导致共模和下踢。
  • 第五步:检查 AC 耦合电容值。用于 CML 时,耦合电容建议 ≥ 100 nF,否则低频分量会被衰减,导致码型依赖性抖动。

曾经掉进的一个坑:某次 12.5 Gbps 项目,CML 输出眼图看起来很好,但误码率就是下不去。最终定位发现是 PCB 走线过孔残留的寄生电感太大,导致输出波形回勾(ringback)。我后来在输出靠近芯片的地方加了一对 0.1 μF 去耦电容到 GND,误码率一下子清零。所以记住——CML 虽然电流模式抗噪,但对电源和地的瞬态响应依然敏感,去耦电容不能省。