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 单端摆幅,调小电流或电阻就行。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 单端输出高电平 VOH | VDD - 200 mV ~ VDD - 50 mV | 取决于电流和电阻匹配 |
| 单端输出低电平 VOL | VDD - 600 mV ~ VDD - 400 mV | 下管完全导通时的电压 |
| 差分输出摆幅(峰峰值) | 400 mV ~ 1.6 V | 常见的 800 mV 差分摆幅最常用 |
| 输出共模电压 VCM | VDD - 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 还是 0,电流都差不多,电源干扰小。
但是代价也很明显:静态功耗一直存在。我记得有次给客户做 16 通道的 28 Gbps 芯片,光 CML 输出级的功耗就占了整个芯片的三分之一。为了省电,后来改用占空比控制的休眠模式,但难度又上来了。
曾经踩过的坑:有一次我把 CML 输出直接接到 LVPECL 输入上,没加直流耦合调整。结果共模电压差了将近 500 mV,接收端根本识别不出来信号。折腾了两天才找到原因——CML 是 VDD 参考,LVPECL 是 VCC-1.3 V 参考,电平体系不同!后来我都在板上标注出每种接口的共模范围,再也不凭感觉连线了。
4.4 一张图看懂 CML 结构
下图为 CML 驱动器的基本电路结构和电平关系,我画了好几次才把标注调整到不打架。你对着电路看参数,会更有感觉。
小技巧:如果你从示波器上看到 CML 差分波形峰峰值只有 300 mV,先别怀疑芯片坏了。测一下输出共模——如果共模偏离理论值太多,很可能是电源电压不准或者负载电阻不对。我遇到过有人把 50 Ω 终端焊成了 75 Ω,眼图直接塌了。
4.5 与 LVPECL 的关键差异
在调试现场,区分 CML 和 LVPECL 是基本功。别看都是差分电流逻辑,电气参数差距能让你的高速链路彻底罢工。
| 特性 | CML | LVPECL |
|---|---|---|
| 电源电压 | 1.2 V, 1.8 V 常见 | 3.3 V, 2.5 V 常见 |
| 输出共模 | VDD - 0.4 V 左右 | VCC - 1.3 V 左右 |
| 单端摆幅 | 200 mV ~ 800 mV | 600 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 虽然电流模式抗噪,但对电源和地的瞬态响应依然敏感,去耦电容不能省。