电气特性验证:电平标准、驱动能力与信号完整性
电气特性验证,说白了就是检查芯片之间能不能「好好说话」。
我刚开始做硬件验证时,总觉得只要逻辑功能对了就行。直到有一次,一块板子上的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 电气特性验证知识体系
2.6 验证测试清单
在实际项目中,我会按以下步骤进行电气特性验证:
- 查阅数据手册:确认发送端和接收端的电平标准、驱动电流、输入阈值
- 测量静态电平:用万用表或示波器测量空闲状态下的信号电平
- 抓取动态波形:用示波器观察信号上升/下降时间、过冲、振铃
- 检查阻抗匹配:用 TDR(时域反射计)测量传输线特性阻抗
- 验证时序裕量:在 worst-case 条件下测量建立时间和保持时间
- 温度循环测试:在 -40°C 到 +85°C 范围内重复上述测试
我的习惯:每次改版后,我都会先跑一遍电气特性验证,再跑功能测试。因为电气问题往往比逻辑问题更难定位。早发现,早解决。