CML 输出结构和工作原理
先从电流模逻辑说起
CML,全称 Current Mode Logic,中文叫电流模逻辑。你想想看,这名字就已经把核心说透了——它靠的是电流的切换,而不是电压的摆来摆去。
我记得刚接触 CML 那会儿,心里总犯嘀咕:这玩意儿电压摆幅才几百毫伏,能靠谱吗?结果一测眼图,干净得像个乖孩子。说白了,CML 就是拿小摆幅换速度,拿恒定电流换低噪声。
输出级长啥样?
一个典型的 CML 输出级,你拆开来看,就那么几个东西:
- 差分对管:两只 NPN 晶体管(或者 NMOS),基极(栅极)接输入信号。
- 尾电流源:接在发射极(源极)下面,提供恒定电流 ISS。
- 负载电阻:两个等值的电阻 RL,一头接电源 VCC,另一头接到各自的集电极(漏极)。
输出就从两个集电极(漏极)拉出来,记作 VOUT+ 和 VOUT-。
核心要点:CML 的静态功耗几乎是恒定的!不管输出是 1 还是 0,尾电流 ISS 始终在流,只不过从这路换到那路。
工作原理:电流去哪,逻辑就在哪
当 VIN+ 高于 VIN– 时,差分对管 Q1 导通,Q2 关断。尾电流 ISS 全部流过 Q1,经过左侧的 RL 回到 VCC。这时候 VOUT+ 的电压就被拉低到 VCC – ISS × RL;而 Q2 这一侧没有电流,右侧 RL 上没有压降,所以 VOUT– 保持在 VCC。
反过来,当 VIN– 更高时,电流就切换到 Q2,输出极性翻转。两个输出端的电压差就是 CML 的摆幅:ΔV = ISS × RL。通常这个值在 400 mV 到 800 mV 之间。
我的一点经验:我曾遇到一个项目,CML 输出眼图的上升沿明显变慢。最后排查发现是负载电阻 RL 的值偏大了 20%,导致 RC 常数过大。其实 CML 的寄生容性负载非常敏感,调 RL 是控制带宽和摆幅的关键。
关键参数与设计原则
| 参数 | 典型值 | 影响 |
|---|---|---|
| 尾电流 ISS | 10~20 mA | 功耗、摆幅、驱动能力 |
| 负载电阻 RL | 25~50 Ω | 摆幅(ΔV = ISS·RL)、带宽 |
| 输出摆幅 VOD | 300~800 mVpp | 信噪比、接收端灵敏度 |
| 共模电压 VCM | VCC – VOD/2 | AC 耦合电容选择、输入偏置 |
你看这个表,ISS 和 RL 一起决定了摆幅。但 RL 不能随便加大——输出阻抗要和传输线匹配。CML 的输出阻抗基本就等于 RL,所以 50 Ω 电阻很常见。
CML 与 LVPECL 的直观差别(先尝个鲜)
虽然下一章才细讲对比,但这里我忍不住提一句:CML 的共模电压比 LVPECL 低得多,而且 CML 不需要上拉到 VCC – 2V 那么夸张。你在做 AC 耦合时,CML 对耦合电容的耐压要求就友好很多。
曾经翻车的地方:有一块 10 Gbps 的背板,我在中间 AC 耦合电容用了 0402 封装的 0.1 μF。结果信号眼图抖得厉害。后来换成 0603 的 0.47 μF,低频转折点移到了几十 kHz,才稳下来。CML 虽然自身低频响应好,但耦合电容选小了会出低频抖动,别省那点面积。
输出共模偏置与终端匹配
CML 输出通常要求终端电阻从每个输出端到 VCC 或者到地?这个取决于接收器。我个人习惯的做法是:
- 如果接收器是内部偏置型(很多高速 ADC 是这样),直接 AC 耦合,然后让接收器自己偏置共模。
- 如果接收器需要外部偏置,那就用一对电阻从输出端拉到 VCC 或目标共模电压,注意不要和芯片内部的 RL 并联产生额外分压。
说白了,CML 的终端设计比 LVPECL 简单,但你必须知道芯片内部有没有自带 50 Ω 到 VCC。很多 CML 驱动器的输出端已经内置了 50 Ω 上拉,你在外部再加并联电阻反而会把摆幅拉低。
功耗优势在哪里?
CML 的功耗几乎恒定,不随数据率变化。因为无论 0 还是 1,电流都在 ISS 的数值上。这对于高占空比变化的信号特别有利——功耗可预测,散热好做。
我做过一个 12.5 Gbps 的多通道收发器,LVPECL 每通道静态功耗大概是 150 mW 左右,而 CML 能做到 80 mW 以内。差别主要在于 LVPECL 的发射极跟随器要消耗额外的静态电流。
一个记忆小技巧:CML 的功耗 ≈ ISS × VCC,几乎就是尾电流乘以电源电压。你估算的时候拿这两项一乘,八九不离十。
好了,CML 的基本架构和原理就说到这。它结构简单、速度高、噪声低,是很多高速接口的首选。你在实际设计时,记得先看数据手册里是否内置了终端电阻,然后算清楚摆幅和共模点,匹配好耦合电容。做到这些,CML 基本不会给你找麻烦。