⏱️ 第22课 上电时序控制

阶段五:PMU集成 上电时序 Power Sequencing PGOOD

📚 本课目标

  1. 理解多路PMU上电时序的重要性与规则
  2. 掌握时序控制器的数字与模拟实现方法
  3. 学会PGOOD信号与时序窗口的设计
  4. 完成多路上电时序的SPICE仿真验证

1. 为什么需要上电时序?

现代SoC有多路电源,上电顺序错误可能导致:

2. 典型上电时序

时间 ──────────────────────────────────► VDD_CORE ──────▄▄▄▄████████████████ (0.8V, 最先) │ 5ms延迟 │ ▼ VDD_DDR ────────────▄▄▄▄██████████ (1.2V, 第二) │ 5ms延迟 │ ▼ VDD_IO ────────────────────▄▄▄▄████ (1.8V, 第三) │ PGOOD │ ▼ CPU启动 ────────────────────────────────▄▄████

3. 时序控制器实现

模拟实现

T_delay = C × V_th / I_charge

例:C=50pF, V_th=1.2V, I=10nA → T_delay = 6ms

数字实现

T_delay = N_cycles / f_clk

4. PGOOD信号设计

PGOOD(Power Good)信号表示电源轨已稳定:

下一路电源只有在上一路PGOOD有效后才启动。

5. 掉电时序

掉电顺序通常与上电相反:

  1. VDD_IO先关断
  2. VDD_DDR关断
  3. VDD_CORE最后关断

紧急掉电(如过温保护):所有电源同时关断,优先保护器件。

6. SPICE仿真:上电时序

* Power-On Sequencing - Multi-rail PMU * Simulates sequential power-up with delays Vbat 1 0 DC 3.7 * Rail 1: VDD_CORE (first, 0.8V) R1 1 2 1 C1 2 0 10u ic=0 S1 2 2a 10 0 sw1 * Rail 2: VDD_DDR (second, 1.2V) - 5ms delay R2 1 3 1 C2 3 0 10u ic=0 S2 3 3a 11 0 sw1 * Rail 3: VDD_IO (third, 1.8V) - 10ms delay R3 1 4 1 C4 4 0 10u ic=0 S3 4 4a 12 0 sw1 * Loads Rload1 2a 0 2 Rload2 3a 0 3 Rload3 4a 0 5 * Sequencing control (delayed enable) Vseq1 10 0 pulse(0 5 1m 1u 1u 100m 200m) Vseq2 11 0 pulse(0 5 6m 1u 1u 100m 200m) Vseq3 12 0 pulse(0 5 11m 1u 1u 100m 200m) .model sw1 sw(ron=0.1 roff=1meg vt=2.5 vh=0.5) .tran 0.1m 30m 0 0.1m .print tran v(2a) v(3a) v(4a) v(10) v(11) v(12) .end

🏆 仿真结果 ✅ 验证通过

仿真验证了三路电源的顺序上电时序。

62	2.811731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
363	2.821731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
364	2.831731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
365	2.841731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
366	2.851731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
367	2.861731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
368	2.871731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
369	2.881731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
370	2.891731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
371	2.901731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
372	2.911731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
373	2.921731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
374	2.931731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
375	2.941731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
376	2.951731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
377	2.961731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
378	2.971731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
379	2.981731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
380	2.991731e-02	5.000000e+00	5.000000e+00	5.000000e+00	
381	3.000000e-02	5.000000e+00	5.000000e+00	5.000000e+00	


Total analysis time (seconds) = 0.002

Total elapsed time (seconds) = 0.006 

Total DRAM available = 7685.906 MB.
DRAM currently available =  602.223 MB.
Maximum ngspice program size =   21.336 MB.
Current ngspice program size =   12.914 MB.

Shared ngspice pages =   10.887 MB.
Text (code) pages =    6.156 MB.
Stack = 0 bytes.
Library pages =    2.102 MB.

7. 上电时序的故障保护

时序异常情况的处理:

故障检测响应
某路PGOOD超时计时器溢出关断所有已上电路
某路过流OCP检测关断该路,不影响其他路
输入电压跌落UVLO全部关断,重新启动
过温OTP全部关断
看门狗超时计数器溢出复位PMU

8. 上电时序的数字控制器设计

状态机实现:

  1. STATE_IDLE:等待EN信号和UVLO释放
  2. STATE_RAIL1:启动Rail1,等待PGOOD1
  3. STATE_DELAY1:延迟T1
  4. STATE_RAIL2:启动Rail2,等待PGOOD2
  5. STATE_DELAY2:延迟T2
  6. STATE_RAIL3:启动Rail3,等待PGOOD3
  7. STATE_ALL_ON:所有电源就绪,发出SYS_PGOOD
  8. STATE_FAULT:任何异常进入此状态,关断所有电源

延迟时间可由I2C/SPI寄存器编程。

✏️ 练习

  1. 设计4路PMU的上电时序:0.8V→1.2V→1.8V→3.3V
  2. 计算RC延迟链的参数:延迟5ms, V_th=1.2V
  3. 设计PGOOD检测电路,上下阈值分别为90%和85%
  4. 修改SPICE网表,增加第4路电源和掉电时序
  5. 分析如果VDD_DDR比VDD_CORE先上电5ms,可能出现什么问题

常见问题FAQ

Q1: 上电时序不正确会损坏芯片吗?

会!IO先于Core上电时,ESD保护二极管正偏,可能触发闩锁效应(latch-up),导致芯片烧毁。这是PMU设计中最严重的安全问题之一。

Q2: 软启动和上电时序有什么区别?

软启动控制单路电源的上升斜率(防止浪涌电流);上电时序控制多路电源的启动顺序(防止闩锁)。两者是独立的功能,但通常配合使用。

Q3: PGOOD信号需要滤波吗?

需要。毛刺和噪声可能导致PGOOD误触发。典型滤波:1~10μs RC滤波或数字计数器(连续N个周期满足条件才置位PGOOD)。

上电时序设计实例

规格: 4路PMU (0.8V/1.2V/1.8V/3.3V)

时序要求

顺序电源轨延迟上升时间PGOOD阈值
1stVDD_CORE 0.8V0ms2ms>0.72V
2ndVDD_DDR 1.2V5ms2ms>1.08V
3rdVDD_IO 1.8V10ms2ms>1.62V
4thVDD_RF 3.3V15ms2ms>2.97V

延迟电路参数

I_charge=100nA, V_th=1.2V

T_delay=5ms: C = I×T/V = 100n×5m/1.2 = 417pF

选择C=420pF (可由I2C调节I_charge来微调)

超时保护

每路PGOOD超时=50ms。超时后关断所有已上电路,置FAULT标志。

上电时序进阶分析

时序控制器的状态机设计

完整的时序状态机应包含:

  1. IDLE: 等待EN+UVLO释放
  2. PRECHARGE: 预充电(如有需要)
  3. RAIL_N: 启动第N路,等待PGOOD_N
  4. DELAY_N: 延迟T_N后启动下一路
  5. ALL_ON: 所有电源就绪
  6. SHUTDOWN: 正常关断序列
  7. FAULT: 异常处理(关断所有电源)

I2C可编程时序参数

寄存器功能范围默认值
0x01RAIL1延迟0~50ms5ms
0x02RAIL2延迟0~50ms10ms
0x03RAIL3延迟0~50ms15ms
0x04PGOOD超时10~200ms50ms
0x05软启动时间1~20ms5ms

上电时序的系统级影响

时序错误导致的故障模式

故障模式时序错误后果严重度
闩锁效应IO先于Core上电芯片烧毁致命
总线竞争DLL未锁先发数据功能异常
配置丢失VDD_DDR在控制器前上电数据错误
复位异常时序控制器卡在FAULT系统不启动

上电时序的标准化

不同SoC厂商有自己的时序标准:

上电时序的I2C编程接口

寄存器映射

地址名称位宽功能
0x00CHIP_ID8芯片ID(只读)
0x01CTRL8控制位(EN, MODE等)
0x10RAIL1_DELAY81路上电延迟(0~50ms)
0x11RAIL2_DELAY82路上电延迟
0x12RAIL3_DELAY83路上电延迟
0x20STATUS8各路PGOOD和FAULT状态
0x21FAULT8故障类型和通道
0x30SS_TIME8软启动时间(1~20ms)

时序配置示例

配置3路上电时序:0ms→5ms→10ms

I2C Write: [0x50] [0x01] [0x01] // EN=1 I2C Write: [0x50] [0x10] [0x00] // RAIL1_DELAY=0ms I2C Write: [0x50] [0x11] [0x0A] // RAIL2_DELAY=5ms I2C Write: [0x50] [0x12] [0x14] // RAIL3_DELAY=10ms I2C Write: [0x50] [0x30] [0x05] // SS_TIME=5ms

🏆 成就解锁:时序控制设计师

你已经掌握了PMU上电时序控制的设计方法!

掌握了:时序规则 · PGOOD设计 · 延迟实现 · 掉电顺序 · 异常处理