4. 电源域与电源管理单元

在 Zynq 器件中,功耗并不是一个“整芯片统一开关”的简单问题。芯片内部被划分为多个相对独立的电源域,每个域可以有不同的供电电压、上电顺序和关断策略。理解这些域的边界与相互关系,是进行低功耗设计的第一步。如果只关注逻辑优化而忽略电源域结构,往往会在系统待机时发现功耗远高于预期,原因通常就出在某些域无法被真正关断,或者上电时序设计不当导致漏电增加。

PS 电源域划分

处理系统(PS)部分的电源域划分较为细致,主要围绕 ARM 处理器核心、片上存储器、外设接口和调试逻辑展开。典型 Zynq-7000 器件的 PS 供电引脚包括 VCCPINT、VCCPLL、VCCPAUX、VCCDDR 等,它们分别对应不同的内部域:

  • VCCPINT:为 PS 内部逻辑核心供电,通常为 1.0V。该域包含 Cortex-A9 处理器核心、L2 缓存控制器、中央互连等。它是 PS 中功耗占比最大的域,也是动态功耗管理的重点对象。
  • VCCPLL:为 PS 内部的锁相环和时钟生成电路供电,通常为 1.8V。PLL 对电源噪声敏感,因此该域通常需要独立的 LC 滤波,且不宜频繁开关。
  • VCCPAUX:为 PS 辅助逻辑供电,通常为 1.8V,涵盖部分系统控制寄存器、复位逻辑和低带宽外设接口。
  • VCCDDR:为 DDR 存储控制器 I/O 供电,电压取决于 DDR 类型(如 DDR3 为 1.5V)。该域与外部存储器直接相连,其功耗与访问频率和总线利用率强相关。

这些域之间并非完全独立。例如,关闭 VCCPINT 会导致处理器核心停止工作,但 VCCPAUX 仍需保持供电以维持唤醒逻辑和复位控制。因此,PS 的低功耗策略通常是在保持辅助域供电的前提下,尽可能降低核心域电压或关闭部分外设时钟。

PL 电源域

可编程逻辑(PL)部分的电源域相对简单,但同样关键。PL 的主要供电包括 VCCINT(内部逻辑核心,通常 1.0V)、VCCAUX(辅助逻辑,通常 1.8V)以及 VCCO 组(I/O bank 供电,电压由接口标准决定)。PL 的一个显著特点是其电源域可以按 bank 划分,不同 bank 可以有不同的 VCCO 电压,从而支持多种 I/O 标准。

在低功耗设计中,PL 的 VCCINT 域是动态功耗的主要来源。当 PL 中没有设计逻辑运行时,可以通过关闭 PL 时钟或使用部分重配置来降低功耗。但需要注意,VCCAUX 域通常不能随意关断,因为它为 PL 的配置存储器和全局控制逻辑供电。如果 VCCAUX 掉电,PL 的配置信息会丢失,重新上电后需要重新加载比特流。

PMU 功能

电源管理单元(PMU)是 Zynq 中负责协调各电源域状态的核心模块。它通常位于 PS 内部,通过一组寄存器与软件交互。PMU 的主要功能包括:

  • 电源域状态控制:PMU 可以控制 PS 内部各域的时钟门控和电源开关,支持多种低功耗模式,如待机、休眠和深度睡眠。
  • 唤醒源管理:PMU 可以配置多种唤醒事件,如 GPIO 中断、定时器溢出、外部按键等。当系统进入低功耗模式后,PMU 持续监控这些事件,一旦触发则按预定顺序恢复供电和时钟。
  • 上电与掉电时序管理:PMU 内部包含状态机,确保各电源域按照正确的顺序上电和掉电。例如,上电时先建立 VCCPAUX,再使能 VCCPINT,最后释放复位;掉电时顺序相反。
  • 电压与频率调节:部分 Zynq 器件支持动态电压频率调节(DVFS),PMU 可以配合外部电源管理芯片调整 VCCPINT 电压和处理器频率,从而在性能与功耗之间取得平衡。

上电与掉电时序对功耗的影响

上电与掉电时序不仅影响芯片能否正常启动,还直接影响漏电和浪涌电流。如果 VCCINT 先于 VCCAUX 上电,PL 内部的 I/O 缓冲器可能处于不确定状态,导致瞬间大电流甚至损坏器件。同样,如果掉电时 VCCAUX 先于 VCCINT 掉电,也可能引发类似问题。因此,Xilinx 在数据手册中明确规定了各电源域的推荐上电顺序,通常为:VCCPAUX → VCCPINT → VCCDDR → VCCO。

从功耗角度看,正确的时序可以避免“反向偏置”漏电。当某个域尚未上电而相邻域已经上电时,如果两者之间存在信号连接,电流可能通过 ESD 保护二极管形成意外通路,产生额外漏电。这种漏电在待机模式下尤为明显,可能使系统功耗增加数毫安甚至数十毫安。因此,在系统级设计中,电源管理芯片的上电顺序配置必须与 Zynq 的要求一致。

在实际项目中,建议使用带有可编程上电顺序的 PMIC(如 TI 的 TPS65086 或 Maxim 的 MAX77696),并在 PCB 布局时确保各域的去耦电容靠近对应引脚。上电顺序的验证可以通过示波器同时抓取 VCCPAUX、VCCPINT 和 VCCDDR 的上升沿,确认它们之间的时间间隔符合数据手册要求。

下面用一张信号链与状态关系图来梳理 PS/PL 电源域、PMU 控制路径以及上电顺序之间的依赖关系。图中左侧为电源输入,中间为 PMU 与各域,右侧为受控对象,箭头方向表示供电或控制流向。

Zynq 电源域与 PMU 控制关系 外部 PMIC VCCPAUX 1.8V VCCPINT 1.0V VCCDDR 1.5V VCCO / VCCINT PMU 电源域状态控制 唤醒源管理 上电/掉电时序 DVFS 协调 复位释放控制 PS 核心域 Cortex-A9 / L2 / 互连 VCCPINT PS 辅助域 PLL / 复位 / 唤醒逻辑 VCCPAUX / VCCPLL DDR 域 DDR 控制器 / PHY VCCDDR PL 逻辑域 可编程逻辑 / BRAM / DSP VCCINT / VCCAUX 推荐上电顺序 1. VCCPAUX 2. VCCPINT 3. VCCDDR 4. VCCO / VCCINT 掉电顺序相反 避免反向偏置漏电 防止 I/O 不确定状态 减少浪涌电流 时序偏差建议 相邻域间隔 < 10ms 总上电时间 < 50ms 电源输入 PMU 控制 PS 域 PL 域 时序约束

从图中可以清晰看到,PMU 位于电源输入与各域之间,承担着“总调度”的角色。PS 核心域和辅助域虽然同属 PS,但辅助域通常需要保持供电以支持唤醒功能,而核心域可以在待机时关闭或降压。PL 域则相对独立,但其 VCCAUX 与 PS 的 VCCPAUX 可能存在关联,设计时需要确认具体器件的电源引脚定义。

在实际功耗优化中,一个常见的误区是只关注动态功耗而忽略静态漏电。当系统进入待机模式时,如果某些域没有正确关断,或者上电时序导致体二极管导通,静态电流可能从微安级上升到毫安级。例如,某设计在待机时测得 PS 部分电流为 15mA,远高于数据手册标称的 2mA。排查后发现,VCCPINT 在待机时并未完全关断,而是处于 0.6V 的中间电平,导致核心逻辑处于亚阈值导通状态。修正 PMIC 的关断时序后,待机电流降至 2.3mA。这个例子说明,电源域管理不仅是“开和关”的问题,还涉及关断的彻底性和时序的精确性。