第2章 CML基础:电平标准、直流特性、交流特性
CML——Current Mode Logic,电流模式逻辑。名字听着有点绕,其实说白了就是个差分电流开关。我在第一次接触CML时,总觉得它跟LVPECL差不多,都是差分对,都是正电源供电。后来踩了几个坑才发现,两者在输出结构、终端方式上完全不是一回事。这一章咱们就把CML的家底翻一翻,从电平标准到直流、交流特性,一次说透。你想想看,要是连信号长什么样都搞不清楚,后面做PCB布线、做眼图测试,那是要吃亏的。
2.1 CML电平标准
CML最典型的输出摆幅是400 mV(单端200 mV),共模电压一般设定在VCC−0.2V左右。嗯,这里注意,不同厂家会有小差异,但大差不差。我习惯把CML看成“小摆幅、高共模”的差分信号。具体参数看下表:
| 参数 | 典型值 | 范围 |
|---|---|---|
| 输出高电平VOH | VCC−0.1V | VCC−0.16V ~ VCC−0.04V |
| 输出低电平VOL | VCC−0.5V | VCC−0.56V ~ VCC−0.44V |
| 输出摆幅(差分) | 400 mV | 320 mV ~ 480 mV |
| 共模电压VCM | VCC−0.3V | VCC−0.36V ~ VCC−0.24V |
| 输入阈值 | VCC−0.3V±50 mV | — |
为什么要这么高共模?因为CML驱动器的输出级是射极跟随器(或者源极跟随器),需要恒流源提供偏置。共模高了,输出摆幅才能对称,终端电阻也好匹配。我曾经在项目中用直流耦合连LVPECL,发现共模差了0.4V,信号直接削顶。后来改成交流耦合,加个偏置网络才搞定。
2.2 直流特性
CML的直流特性,核心就是输出级结构和终端匹配。先看输出级:
典型CML输出级结构(简化):
VCC
│
R1
├───── OUT+
│
Q1 │ Q2
┌────┴────┐
│ │
│ I_SS │
└────┬────┘
│
GND
两个差分对管Q1、Q2,公共射极接恒流源I_SS。R1、R2是上拉电阻,阻值通常50Ω(直接到VCC)。所以输出阻抗是50Ω单端,差分100Ω。这一点跟LVPECL完全不同——LVPECL输出是开路的,需要外部端接到VCC−2V。CML自带终端电阻,省事很多。
避坑提示:我曾经遇到过一块FPGA的CML输出,手册上写“内部终端50Ω到VCC”,结果我还在板上放了一排并联电阻。测出来的信号幅度只有一半,直流电平也偏了。后来发现内部已经有终端,外部再加就是负载过重。所以看手册一定要仔细:CML的终端通常已经在片内,外部只做交流耦合即可。
直流耦合时,接收器输入也必须匹配。典型CML接收器输入阻抗也是100Ω差分。直连的话,电平刚好兼容。但如果是跨芯片、跨板卡,我建议用交流耦合,隔掉直流偏置差异,然后在接收端用电阻拉到合适的共模电压。
终端网络对比
| 耦合方式 | 发送端 | 接收端 | 注意事项 |
|---|---|---|---|
| 直流耦合 | 内部50Ω到VCC | 内部100Ω差分 | 共模必须匹配;不支持不同电源 |
| 交流耦合 | 内部50Ω到VCC | 外部100Ω差分 + 偏置电阻 | 隔直电容选值:>100 nF(10 Gbps以下) |
警告:交流耦合时,隔直电容不能太小,否则低频分量会被衰减,导致数据图案的基线漂移。对于PRBS31信号,建议电容≥1 μF。另外,电容的ESR要低,最好用X7R或C0G材质。
2.3 交流特性
CML的交流特性主要体现在上升/下降时间、抖动、眼图模板这几个方面。为什么要关心这些?因为高速时钟接口的时序裕量本来就不大,稍微有点过冲或振铃,就可能误码。我个人习惯先看数据手册里的典型眼图,再结合自己的链路预算。
上升/下降时间
CML由于摆幅小(400 mV),上升时间通常比LVPECL快。典型值:20%~80%上升时间约30~50 ps(10 Gbps级别)。这个值跟输出级晶体管的速度和负载电容有关。如果你带的负载电容太大(比如过长的PCB走线、多个接收器并联),上升时间会明显变慢。
经验值:对于5 Gbps以上的信号,负载电容每增加1 pF,上升时间大约增加8~12 ps。所以布局时尽量让走线短、过孔少,接收器最好只接一个。
抖动
CML的随机抖动(RJ)主要来源于器件热噪声和电源噪声。确定性抖动(DJ)通常来自阻抗不连续、串扰和码间干扰(ISI)。我曾在调试一块25 Gbps SerDes时,发现接收端的眼图闭合严重,测抖动有5 ps。仔细查,发现过孔背钻没做,走线阻抗变成85Ω,反射产生了ISI。换用更好的PCB厂,抖动降到1.2 ps,问题解决。
关注两个指标:
- 总抖动(Tj):通常要求 ≤ 0.3 UI(以数据速率对应的单位间隔)。
- 确定性抖动(Dj):≤ 0.15 UI。
眼图模板
眼图是交流特性的综合体现。CML标准的眼图模板由多段折线组成,规定了眼高、眼宽、眼交叉点位置。我一般用示波器做眼图测试,设置好触发条件(时钟恢复或外部触发),采集至少100万个UI,然后叠加模板看余量。
对于10 Gbps CML,典型眼图要求:
- 眼高 ≥ 200 mV(差分)
- 眼宽 ≥ 0.6 UI
- 交叉点(Crossing Percentage)在45%~55%之间
2.4 CML接口知识体系
下面这张图把CML的三块核心内容串起来了:电平标准定出信号幅度和共模;直流特性决定端接和耦合方式;交流特性关乎信号质量。这三者相互影响,设计时缺一不可。
2.5 设计中的几个坑
最后聊几个我实战中遇到的教训,希望能帮你少走弯路。
- 终端电阻值:CML内部虽然已经集成50Ω,但走线阻抗如果设计成50Ω单端,就没有反射。如果走线阻抗偏了,内部终端并不会自动补偿。记得做阻抗控制。
- 共模电压漂移:交流耦合看似简单,但接收端偏置电阻的精度会影响共模。我曾经用1%电阻,结果电源波动导致共模偏移了50 mV,眼高掉了30%。后来改成0.1%电阻才稳定。
- AC耦合电容的位置:尽量靠近接收端放。这样走线在发送端直接反射小,而且电容到接收器输入之间的stub最短。我习惯放在接收器引脚3 mm以内。
- 不要盲目使用AC耦合:如果你确定发送端和接收端共模一致,且链路很短(<10 cm),直流耦合省掉电容更可靠。一个电容就是多一个故障点。
嗯,这一章的内容先到这儿。CML看着简单,但细节很多。后面章节我们会拿实际芯片来走一遍设计流程,到时候这些基础点都会反复用到。