多电源域芯片中,各电源的上电顺序至关重要。错误的顺序可能导致:偷电(通过ESD二极管意外供电)、闩锁、栅氧过压、功能异常。
偷电(Power Sneak)是指某个电源域通过寄生路径(主要是ESD二极管)被意外供电的现象:
偷电场景:
VDDIO (已上电, 3.3V)
│
┌────┤────┐
│ ESD_up │ 正向偏置!
│ (二极管) │ Vf ≈ 0.7V
│ │
├───PAD────┤
│ │
│ ESD_dn │ 反向偏置
│ (二极管) │
└────┤────┘
│
VDD (未上电)
结果:VDDIO→ESD_up→PAD→内部电路→VDD
VDD被"偷电"到 VDDIO - Vf ≈ 2.6V
核心域意外上电!
通用的上电顺序规则:
┌──────────────────────────────────────────┐
│ 上电顺序约束图 │
│ │
│ Step 1: VSS (地) │
│ │ │
│ ▼ │
│ Step 2: VDDIO (3.3V IO电源) │
│ │ │
│ ├──→ Step 3a: VDDA (3.3V 模拟) │
│ │ │
│ └──→ Step 3b: VDDQ (1.8V DDR) │
│ │ │
│ ▼ │
│ Step 4: VDD (1.2V 核心) │
│ │ │
│ ▼ │
│ Step 5: VDDC (0.8V CPU) │
│ │
│ 断电顺序:相反(后上先断) │
└──────────────────────────────────────────┘
在ESD二极管路径上增加串联二极管,提高偷电所需的正向压降:
* 防偷电串联二极管
* PAD → D1 → D2 → VDDIO
* 偷电需要:VDDIO - 2×Vf = 3.3 - 1.4 = 1.9V
* 仍可能偷电到1.9V!
* 更好的方案:使用ESD钳位替代二极管
* ESD钳位只在快速dV/dt时导通
* 正常上电(慢速)不会触发
RC触发电源钳位只在ESD事件(快速电压变化)时导通,正常上电不触发,自然防止偷电。
POR电路在电源电压达到稳定阈值后产生复位信号,确保内部电路从已知状态开始工作。
* 15-por-circuit.sp
* 上电复位电路仿真
* 慢速上电(模拟实际上电)
Vdd vdd 0 pwl 0 0 1m 1.2
* 电阻分压检测
R1 vdd detect 500k
R2 detect 0 500k
* detect = VDD/2 = 0.6V when VDD=1.2V
* 比较器(简化为反相器链)
Mp1 a detect vdd vdd pch W=2u L=0.18u
Mn1 a detect 0 0 nch W=1u L=0.18u
Mp2 b a vdd vdd pch W=8u L=0.18u
Mn2 b a 0 0 nch W=4u L=0.18u
Mp3 por_b b vdd vdd pch W=16u L=0.18u
Mn3 por_b b 0 0 nch W=8u L=0.18u
* POR输出
Mp4 por por_b vdd vdd pch W=16u L=0.18u
Mn4 por por_b 0 0 nch W=8u L=0.18u
* 滤波电容
Cpor por 0 1p
.tran 0.1u 2m
.measure tran vdd_thresh FIND V(vdd) WHEN V(por)=0.6 RISE=1
.measure tran por_delay TRIG V(vdd) VAL=1.08 TARG V(por) VAL=0.6 RISE=1
.print tran V(vdd) V(detect) V(por)
.end
POR电路仿真结果:
热插拔(Hot-Plug/Hot-Swap)场景下,IO可能在芯片电源未上电时就收到外部信号。这需要专门的IO设计来承受过压和偷电。
* 热插拔IO关键设计
* 1. 输出驱动管使用IO域厚栅氧器件
* 2. 上拉ESD二极管串联限流电阻
* 3. VDDIO电源检测控制输出使能
* 4. 输入路径使用钳位电路保护核心域
* 过压保护
Rovr pad vddio_sense 10k ; 限流电阻
Dovr vddio_sense vddio dclamp ; 钳位到VDDIO
* 电源检测
Mp_det det vddio vddio vddio pch W=2u L=0.35u
Mn_det det vddio 0 0 nch W=1u L=0.35u
* VDDIO=0时det=0, 输出驱动关断
3.3V VDDIO通过ESD上拉二极管(Vf=0.7V)向1.2V VDD偷电。VDD的等效负载为10kΩ,ESD二极管等效电阻为50Ω。计算偷电电压和偷电电流。
VDD节点方程:VDD = VDDIO - Vf - I × R_esd
VDD = I × R_load
I = (VDDIO - Vf) / (R_esd + R_load) = (3.3 - 0.7) / (50 + 10000) = 2.6/10050 ≈ 259μA
VDD = 259μA × 10kΩ = 2.59V(远超1.2V!严重偷电)
一个芯片有4个电源:VDDIO(3.3V)、VDDA(3.3V模拟)、VDDQ(1.8V)、VDD(0.8V)。设计上电序列和防偷电方案。
上电顺序:VDDIO/VDDA(同时) → VDDQ → VDD
防偷电:
完成本课学习,你已经完成了电平转换阶段!掌握了电源域管理!
✅ 已掌握 上电排序 ✅ 已掌握 防偷电 ✅ 已掌握 POR设计 ✅ 已掌握 热插拔
除了POR,完整的电源管理还需要多种监控和保护电路。
UVLO(Under-Voltage Lockout)在电源电压低于阈值时关闭电路,防止异常工作:
* UVLO电路\n* 当VDD < V_trip时,UVLO输出=1(锁定)\n* 当VDD > V_trip + Vhys时,UVLO输出=0(正常)\n\nV_trip ≈ 0.9 × VDD_nom\nVhys ≈ 50-100mV (防止振荡)OVP在电源电压超过阈值时触发保护:
看门狗定时器监控电源管理软件是否正常运行。如果超时未喂狗,自动复位系统。
多电源系统需要专用的排序控制器,确保上电和断电顺序正确:
上电序列控制器:\nStep 0: 等待VSS稳定\nStep 1: 使能VDDIO_33, 等待POR_33\nStep 2: 使能VDDA, 等待POR_A \nStep 3: 使能VDDQ, 等待POR_Q\nStep 4: 使能VDD_CORE, 等待POR_CORE\nStep 5: 释放全局复位, 正常工作\n\n断电序列控制器 (逆序):\nStep 0: 全局复位\nStep 1: 关断VDD_CORE\nStep 2: 关断VDDQ\nStep 3: 关断VDDA\nStep 4: 关断VDDIO_33\nStep 5: 全部关断\n\n每步间隔: 1-10ms (确保上一域稳定)多电源域系统可能出现各种故障,需要系统化的诊断方法。
| 故障类型 | 症状 | 诊断方法 |
|---|---|---|
| 偷电 | 域意外上电 | 测量VDD在关断时的电压 |
| 闩锁 | 电流骤增,芯片过热 | 测量I-V特性,热成像 |
| POR失败 | 上电后逻辑随机 | 检查POR波形和阈值 |
| 域间泄漏 | 功耗高于预期 | 逐域关断测量泄漏 |
| 上电顺序错 | 功能异常或损坏 | 示波器捕获上电波形 |
| 参数 | 符号 | 典型值 | 单位 |
|---|---|---|---|
| IO电压(3.3V) | VDDIO | 3.0-3.6 | V |
| IO电压(1.8V) | VDDIO | 1.62-1.98 | V |
| 核心电压 | VDD | 0.9-1.2 | V |
| ESD二极管Vf | Vf | 0.6-0.8 | V |
| GGNMOS Vt1 | Vt1 | 6-10 | V |
| GGNMOS Vh | Vh | 3-5 | V |
| GGNMOS It2 | It2 | 8-15 | mA/μm |
| SCR Vh | Vh | 1-2 | V |
| SCR It2 | It2 | 50-80 | mA/μm |
| RC钳位时间常数 | τ | 0.5-2 | μs |
| 施密特Vt+ | Vt+ | 2.0 | V |
| 施密特Vt- | Vt- | 1.3 | V |
| 焊盘电容 | Cpad | 2-5 | pF |
| 焊线电感 | Lwire | 1-5 | nH |
| CML驱动电流 | Itail | 4-16 | mA |
| 差分阻抗 | Zdiff | 85-100 | Ω |
| HBM 2kV峰值电流 | Ipeak | 1.33 | A |
| HBM 4kV峰值电流 | Ipeak | 2.67 | A |
| CDM 500V峰值电流 | Ipeak | 5-15 | A |
| LVTTL VIH(min) | VIH | 2.0 | V |
| LVTTL VIL(max) | VIL | 0.8 | V |
I_HBM = V_HBM / R_HBM = V_HBM / 1500ΩV_clamp = Vf + VDD + I×Rbus + V_clamp_internalRC时间常数: τ = R × C谐振频率: f0 = 1/(2π√(LC))差分摆幅: Vdiff = Itail × Rload × 2SSO噪声: V_noise = L × di/dtESD窗口: Window = BVox - margin - (VDD + margin)环路带宽: fBW ≈ fref / (2×N×M)