第2章 CML基础:电平标准、直流特性、交流特性

CML——Current Mode Logic,电流模式逻辑。名字听着有点绕,其实说白了就是个差分电流开关。我在第一次接触CML时,总觉得它跟LVPECL差不多,都是差分对,都是正电源供电。后来踩了几个坑才发现,两者在输出结构、终端方式上完全不是一回事。这一章咱们就把CML的家底翻一翻,从电平标准到直流、交流特性,一次说透。你想想看,要是连信号长什么样都搞不清楚,后面做PCB布线、做眼图测试,那是要吃亏的。

2.1 CML电平标准

CML最典型的输出摆幅是400 mV(单端200 mV),共模电压一般设定在VCC−0.2V左右。嗯,这里注意,不同厂家会有小差异,但大差不差。我习惯把CML看成“小摆幅、高共模”的差分信号。具体参数看下表:

参数典型值范围
输出高电平VOHVCC−0.1VVCC−0.16V ~ VCC−0.04V
输出低电平VOLVCC−0.5VVCC−0.56V ~ VCC−0.44V
输出摆幅(差分)400 mV320 mV ~ 480 mV
共模电压VCMVCC−0.3VVCC−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的三块核心内容串起来了:电平标准定出信号幅度和共模;直流特性决定端接和耦合方式;交流特性关乎信号质量。这三者相互影响,设计时缺一不可。

CML接口核心知识体系 电平标准 摆幅400mV, 共模VCC-0.3V 直流特性 输出级·终端·耦合方式 交流特性 眼图·抖动·上升时间 差分摆幅·共模电压 阈值·噪声容限 输出阻抗50Ω(单端) 交流/直流耦合选择 片内终端 vs 片外终端 20%~80%上升时间 RJ·DJ·Tj 眼图模板·眼高/眼宽 设计CML接口:先定电平标准 → 选直流耦合方式 → 用交流特性指标验证

2.5 设计中的几个坑

最后聊几个我实战中遇到的教训,希望能帮你少走弯路。

  • 终端电阻值:CML内部虽然已经集成50Ω,但走线阻抗如果设计成50Ω单端,就没有反射。如果走线阻抗偏了,内部终端并不会自动补偿。记得做阻抗控制。
  • 共模电压漂移:交流耦合看似简单,但接收端偏置电阻的精度会影响共模。我曾经用1%电阻,结果电源波动导致共模偏移了50 mV,眼高掉了30%。后来改成0.1%电阻才稳定。
  • AC耦合电容的位置:尽量靠近接收端放。这样走线在发送端直接反射小,而且电容到接收器输入之间的stub最短。我习惯放在接收器引脚3 mm以内。
  • 不要盲目使用AC耦合:如果你确定发送端和接收端共模一致,且链路很短(<10 cm),直流耦合省掉电容更可靠。一个电容就是多一个故障点。

嗯,这一章的内容先到这儿。CML看着简单,但细节很多。后面章节我们会拿实际芯片来走一遍设计流程,到时候这些基础点都会反复用到。