电气特性验证:电平标准、驱动能力与信号完整性

电气特性验证,说白了就是检查芯片之间能不能「好好说话」。

我刚开始做硬件验证时,总觉得只要逻辑功能对了就行。直到有一次,一块板子上的FPGA和DSP死活通信不上,示波器一抓,电平根本不在阈值范围内。嗯,从那以后,我再也不敢跳过电气特性验证了。

2.1 电平标准:TTL、CMOS、LVDS

不同器件可能采用不同的电平标准。混接时,必须确认发送端的输出电平与接收端的输入阈值是否匹配。

2.1.1 TTL 电平

TTL(Transistor-Transistor Logic)是经典的双极性工艺电平标准。我个人习惯用 5V 供电的 TTL 器件做调试,因为它的噪声容限相对宽松。

  • VOH(输出高电平):≥ 2.4V(典型 3.6V)
  • VOL(输出低电平):≤ 0.4V(典型 0.2V)
  • VIH(输入高电平):≥ 2.0V
  • VIL(输入低电平):≤ 0.8V

2.1.2 CMOS 电平

CMOS 电平与供电电压相关。比如 3.3V CMOS,输出高电平接近 VCC,低电平接近 GND。它的噪声容限比 TTL 好,但驱动能力稍弱。

关键对比:TTL 的 VIH 最低 2.0V,而 3.3V CMOS 的 VOH 通常 ≥ 3.0V。所以 3.3V CMOS 驱动 TTL 输入没问题,反过来 TTL 驱动 3.3V CMOS 就可能达不到高电平阈值。

2.1.3 LVDS 电平

LVDS(Low-Voltage Differential Signaling)是差分信号,靠两根线上的电压差传输数据。典型摆幅只有 350mV,共模电压约 1.2V。

我在项目中遇到过 LVDS 走线太长导致信号衰减的情况。后来加了预加重和均衡才搞定。你想想看,差分信号虽然抗干扰强,但对 PCB 走线的等长和阻抗控制要求极高。

标准 供电电压 典型摆幅 传输距离 典型应用
TTL 5V 0~5V <1m 传统逻辑、单片机
CMOS 1.8V~5V 0~VCC <1m 现代 SoC、FPGA
LVDS 3.3V ±350mV >10m 高速串行、视频传输

2.2 驱动能力与扇出

驱动能力,就是输出端口能提供多大电流。扇出,就是一个输出能驱动多少个输入。

我曾经踩过一个坑:用 3.3V CMOS 的 GPIO 直接驱动 8 个 LED 指示灯,结果电平被拉低到 2.0V 以下,逻辑直接乱掉。后来加了缓冲器才解决。

2.2.1 驱动能力计算

驱动能力由数据手册中的 IOH 和 IOL 决定。比如一个输出口 IOH = 4mA,IOL = 8mA,那么它最多能驱动总输入电流不超过 4mA(高电平)或 8mA(低电平)的负载。

经验法则:实际设计中,扇出系数不要超过数据手册推荐值的 80%。留出余量,避免温度或电压波动时出问题。

2.2.2 扇出计算示例

假设一个 TTL 输出驱动多个 CMOS 输入:

  • TTL 输出 IOH = 400μA
  • 每个 CMOS 输入 IIH = 1μA
  • 理论扇出 = 400μA / 1μA = 400 个

但实际还要考虑电容负载和信号上升时间。我一般会留 50% 的余量,也就是最多驱动 200 个。

2.3 上拉/下拉电阻

上拉电阻把信号拉到高电平,下拉电阻拉到低电平。它们的作用是防止浮空输入产生不确定状态。

2.3.1 电阻值选择

电阻值不能太大,否则驱动能力不足;也不能太小,否则功耗大。我常用的经验值:

  • 上拉电阻:4.7kΩ ~ 10kΩ(5V 系统);2.2kΩ ~ 4.7kΩ(3.3V 系统)
  • 下拉电阻:10kΩ ~ 100kΩ

注意:I²C 总线的上拉电阻需要根据总线电容和速度计算,不能随便选。我曾经因为上拉电阻选太大,导致 I²C 时钟上升沿太慢,通信直接失败。

2.3.2 上拉/下拉的应用场景

场景 推荐做法 原因
未使用的输入引脚 上拉到 VCC 或下拉到 GND 防止浮空导致振荡
开漏输出(如 I²C) 外部上拉电阻 提供高电平驱动
复位信号 上拉到 VCC 防止误触发复位
中断信号 上拉到 VCC 确保默认高电平

2.4 信号完整性基础

信号完整性(Signal Integrity, SI)是高速设计中的核心问题。说白了,就是保证信号从发送端到接收端不失真。

2.4.1 反射

反射是信号在传输线上遇到阻抗不连续时产生的回波。反射会导致过冲、下冲和振铃。

我记得第一次调试 DDR 接口时,示波器上看到信号过冲超过 1V,差点烧坏芯片。后来加了源端串联电阻才压住。

反射的根源:阻抗不匹配。发送端输出阻抗、传输线特性阻抗、接收端输入阻抗三者不一致时,就会产生反射。

2.4.2 串扰

串扰是相邻信号线之间的电磁耦合。平行走线越长,间距越小,串扰越严重。

  • 容性串扰:通过寄生电容耦合,主要影响上升/下降沿
  • 感性串扰:通过互感耦合,主要影响信号幅度

我一般会遵循「3W 规则」:线间距至少是线宽的 3 倍。如果空间允许,5W 更好。

2.4.3 时序裕量

时序裕量是信号到达时间与接收端要求时间之间的差值。裕量不足会导致建立时间或保持时间违规。

我曾经在项目中遇到一个奇怪的问题:常温下功能正常,高温下就随机出错。一查,原来是温度导致走线延迟变化,时序裕量被吃掉了。后来加了 PCB 走线长度匹配才解决。

2.5 电气特性验证知识体系

电气特性验证知识体系 电气特性验证 电平标准 TTL / CMOS / LVDS VOH/VOL/VIH/VIL 阈值 驱动能力 IOH / IOL 电流参数 扇出系数计算 上拉/下拉电阻 阻值选择(4.7k~10k) 开漏/浮空/复位场景 信号完整性 反射 / 串扰 / 时序裕量 阻抗匹配 / 3W规则

2.6 验证测试清单

在实际项目中,我会按以下步骤进行电气特性验证:

  1. 查阅数据手册:确认发送端和接收端的电平标准、驱动电流、输入阈值
  2. 测量静态电平:用万用表或示波器测量空闲状态下的信号电平
  3. 抓取动态波形:用示波器观察信号上升/下降时间、过冲、振铃
  4. 检查阻抗匹配:用 TDR(时域反射计)测量传输线特性阻抗
  5. 验证时序裕量:在 worst-case 条件下测量建立时间和保持时间
  6. 温度循环测试:在 -40°C 到 +85°C 范围内重复上述测试

我的习惯:每次改版后,我都会先跑一遍电气特性验证,再跑功能测试。因为电气问题往往比逻辑问题更难定位。早发现,早解决。