14 - IO电源域

🎯 课程目标

1. IO电源域的划分原则

现代SoC通常需要支持多种IO电平标准,每个电平标准对应一个独立的电源域。电源域的划分直接影响IO布局、ESD策略和芯片面积。

1.1 电源域划分的驱动因素

驱动因素影响示例
IO电平标准不同电平需要不同VDDIO3.3V LVTTL、1.8V LVCMOS
功耗域独立开关降低功耗Always-on域、可关断域
模拟/数字隔离噪声隔离需求VDDA(模拟)、VDDD(数字)
热插拔需要电源隔离USB域、PCIe域
安全域安全隔离需求TrustZone安全域、非安全域

1.2 典型电源域架构

┌───────────────────────────────────────────────┐
│              SoC电源域架构                       │
│                                                 │
│  ┌─────────────────────────────────────────┐   │
│  │         Always-On 域 (VDD_RTC)          │   │
│  │         0.9V, 始终供电                    │   │
│  └─────────────────────────────────────────┘   │
│                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐     │
│  │ 核心逻辑  │  │ DDR控制器 │  │ GPU核心  │     │
│  │ VDD=0.8V │  │ VDDQ=1.2V│  │ VDDG=0.7V│     │
│  │ (可关断)  │  │ (可关断)  │  │ (可关断)  │     │
│  └──────────┘  └──────────┘  └──────────┘     │
│                                                 │
│  ┌──────────────────────────────────────────┐  │
│  │              IO Ring                      │  │
│  │  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐   │  │
│  │  │GPIO │  │SPI  │  │USB  │  │DDR  │   │  │
│  │  │3.3V │  │3.3V │  │1.8V │  │1.2V │   │  │
│  │  └─────┘  └─────┘  └─────┘  └─────┘   │  │
│  └──────────────────────────────────────────┘  │
└───────────────────────────────────────────────┘

2. 电源域隔离技术

当某个电源域被关断时,需要隔离该域与活动域之间的信号路径,防止泄漏和错误。

2.1 头部开关(Header Switch)

        VDD (常供)
         │
    ┌────┤────┐
    │  ┌─┴─┐  │
    │  │PMOS│  │  头部开关管
    │  │HSW │  │  栅极由Sleep控制
    │  └─┬─┘  │
    │    │    │
    │  VDD_V │  虚拟电源(开关后)
    │    │    │
    │  [电路] │  可关断域的逻辑
    │    │    │
    └────┤────┘
         │
        VSS

Sleep=0: PMOS导通, VDD_V≈VDD, 域正常工作
Sleep=1: PMOS关断, VDD_V浮空, 域断电

2.2 隔离单元(Isolation Cell)

在可关断域和活动域的边界放置隔离单元,确保关断域的输出不会导致活动域的输入出现非法电平:

隔离单元的三种类型
  1. 与门隔离:输出钳位到0。ISO=1时正常传输,ISO=0时输出强制为0
  2. 或门隔离:输出钳位到1。ISO=0时正常传输,ISO=1时输出强制为1
  3. 锁存隔离:输出保持最后有效值。ISO=1时锁存当前值

2.3 电平转换+隔离一体化

在电源域边界,电平转换和隔离功能通常集成在一个单元中:

* 电平转换+隔离一体化单元
* DIR: A域→B域
* ISO: 隔离使能
* 当A域关断时,ISO=1,输出钳位到安全值

* 正常工作 (ISO=0):
*   B_out = LevelShift(A_in)
*
* 隔离模式 (ISO=1):
*   B_out = 0 (AND隔离) 或 1 (OR隔离)

3. 状态保持策略

当电源域关断时,域内的状态(寄存器值)会丢失。需要在关断前保存状态,上电后恢复。

3.1 保持寄存器(Retention Flip-Flop)

保持寄存器使用始终供电的从锁存器保存关键状态:

3.2 影子寄存器(Shadow Register)

软件可访问的备份寄存器,位于Always-on域:

4. SPICE仿真:电源域开关

* 14-power-domain-switching.sp
* 电源域开关与隔离仿真

* 常供电源
Vdd_always vdd_always 0 1.0

* 可关断电源(通过头部开关)
Vdd_raw vdd_raw 0 1.0

* 睡眠控制
Vsleep sleep 0 pwl 0 1.2 100n 1.2 100.1n 0 400n 0 400.1n 1.2

* 头部开关PMOS
Mp_hsw vdd_v sleep_b vdd_raw vdd_raw pch W=1000u L=0.18u

* Sleep反相
Mp_sb sleep_b sleep vdd_always vdd_always pch W=4u L=0.18u
Mn_sb sleep_b sleep 0 0 nch W=2u L=0.18u

* 可关断域内逻辑
Mp_inv a_in b_in vdd_v vdd_v pch W=2u L=0.18u
Mn_inv a_in b_in 0 0 nch W=1u L=0.18u

* 隔离单元(AND隔离)
Mn_iso iso_out a_in iso_en 0 nch W=2u L=0.18u
Mp_iso iso_out iso_en_b vdd_always vdd_always pch W=4u L=0.18u

* ISO使能 = Sleep
Viso_en iso_en 0 1.0
Viso_en_b iso_en_b 0 0

* 虚拟电源去耦电容
Cvdd_v vdd_v 0 100p

.tran 0.1n 500n
.measure tran vdd_v_off FIND V(vdd_v) AT=300n
.measure tran vdd_v_on FIND V(vdd_v) AT=450n
.measure tran iso_active FIND V(iso_out) AT=50n
.measure tran iso_clamped FIND V(iso_out) AT=300n
.print tran V(sleep) V(vdd_v) V(a_in) V(iso_out)
.end
✅ 仿真验证结果

电源域开关仿真结果:

5. 电源域与ESD的交互

电源域的划分直接影响ESD保护策略:

⚠️ 关断域的ESD风险

当电源域关断时,VDD_V浮空。ESD电流可能通过ESD二极管注入VDD_V,但无处可去(头部开关关断,电源钳位失去电源参考)!

解决方案:

  1. 在VDD_V和VSS之间放置常驻电源钳位(不需要VDD参考)
  2. 确保头部开关PMOS的体二极管提供ESD电流路径
  3. 在域边界放置域间ESD二极管

6. 练习

📝 练习1:电源域数量设计

一个MCU需要支持:3.3V GPIO、1.8V SPI、1.2V DDR3、0.8V核心、3.3V模拟ADC。设计电源域划分方案,考虑功耗、ESD和面积。

查看答案

建议5个电源域:

  1. VDD_CORE (0.8V) - 核心逻辑,可关断
  2. VDDIO_33 (3.3V) - GPIO+SPI,可关断
  3. VDD_DDR (1.2V) - DDR3,可关断
  4. VDDA (3.3V) - ADC模拟,独立(噪声隔离)
  5. VDD_RTC (1.0V) - Always-on,始终供电

ESD路径:VDDA→VDDIO_33→VDD_DDR→VDD_CORE→VSS

7. 关键要点总结

🔑 本章核心要点
  1. IO电源域按电平标准、功耗域、隔离需求划分
  2. 头部开关和隔离单元是电源域管理的基本组件
  3. 状态保持通过保留寄存器或影子寄存器实现
  4. 可关断域的ESD保护需要特殊处理——关断时ESD路径不能断
  5. 电平转换和隔离通常集成在域边界单元中
  6. 模拟域需要独立电源域,避免数字噪声耦合

🏆 成就解锁:电源域架构师

完成本课学习,你已经掌握了IO电源域的设计策略!

✅ 已掌握 域划分 ✅ 已掌握 隔离技术 ✅ 已掌握 状态保持 ✅ 已掌握 ESD交互

6. 电源域的版图规划

电源域的物理布局直接影响电源完整性和ESD有效性。

6.1 电源环设计

IO Ring中的电源环(Power Ring)为所有IO提供VDDIO和VSS连接:

┌────────────────────────────────────────────┐\n│  VDDIO电源环 (M7宽100μm)                    │\n│  ═══════════════════════════════════════    │\n│  ┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐       │\n│  │IO││IO││IO││IO││IO││IO││IO││IO│       │\n│  └──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘       │\n│  ═══════════════════════════════════════    │\n│  VSS地环 (M7宽100μm)                        │\n│                                              │\n│  去耦电容: 每个电源焊盘旁50-200pF            │\n│  电源钳位: 每200-500μm分布                    │\n└────────────────────────────────────────────┘

6.2 跨域信号布线规则

当信号需要跨越电源域边界时,必须遵守严格的布线规则:

7. 电源域管理软件接口

操作系统通过电源域管理驱动控制各域的开关:

电源域管理API示例
// 电源域控制接口\nstruct power_domain {\n    uint32_t domain_id;    // 域ID\n    bool is_on;           // 当前状态\n    uint32_t voltage_mv;  // 电压(mV)\n    uint32_t depend_mask; // 依赖域掩码\n};\n\n// API\nint pd_turn_on(uint32_t domain_id);    // 开启电源域\nint pd_turn_off(uint32_t domain_id);   // 关闭电源域\nint pd_set_voltage(uint32_t id, uint32_t mv); // 设置电压\nbool pd_is_on(uint32_t domain_id);     // 查询状态