4. 多电源轨时序与上电顺序要求
FPGA 往往同时需要 VCCINT 内核电源、VCCAUX 辅助电源、VCCIO 各 Bank 的 I/O 电源,以及用于收发器、DDR 接口、配置电路的独立电源轨。这些电源轨如果同时上电,看似简单,实际上会带来浪涌电流叠加、内部 ESD 结构正向导通、I/O 引脚倒灌等问题。因此,多电源轨 PDN 设计的核心之一,就是明确各轨之间的上电顺序、下电顺序,以及复位释放与配置启动之间的先后关系。
为什么需要 Power Sequencing
FPGA 内部存在大量跨电源域的结构。例如配置逻辑由 VCCAUX 供电,而配置引脚所在的 I/O Bank 由 VCCIO 供电;内核逻辑由 VCCINT 供电,但 I/O 缓冲器由 VCCIO 供电。当某一电源轨先建立、另一轨仍为 0V 时,芯片内部可能出现从已上电域向未上电域泄漏电流的路径,严重时会触发 CMOS 闩锁,导致器件永久损坏。此外,若 VCCIO 先于 VCCINT 建立,I/O 缓冲器的输出级可能处于不确定状态,向外部器件输出错误电平。
因此,厂商数据手册通常会给出明确的 Power-Up 顺序要求。以常见的 28nm/20nm 级 FPGA 为例,典型推荐顺序为:VCCINT → VCCAUX → VCCIO → 收发器/接口电源。下电顺序则通常相反:VCCIO → VCCAUX → VCCINT,或按数据手册规定的顺序执行。需要特别注意的是,不同厂商、不同系列的要求可能不同,必须以具体器件的数据手册和电源时序应用笔记为准。
上电顺序的时序参数
Power Sequencing 不只是“谁先谁后”,还包含时间间隔和斜率要求。常见参数包括:
- 顺序间隔时间 t_seq:前一电源轨达到其稳压阈值后,到下一电源轨开始上升之间的延迟,典型要求为 0.2ms~10ms,具体由器件规定。
- 上升时间 t_ramp:单轨从 10% 到 90% 的上升时间,过快会产生大浪涌电流,过慢可能导致器件在欠压区停留过久。
- 单调性:电源轨上升过程中不应出现明显回落,否则可能触发内部上电复位电路误动作。
- 最大压差:某些器件规定任意两轨之间的电压差不得超过一定值,例如 0.5V 或 1.0V,以防止内部结构正向导通。
这些参数共同决定了电源管理芯片或时序控制器的配置。例如使用带 PG(Power Good)输出的 LDO 或 DC-DC,通过级联方式实现顺序控制:第一轨 PG 有效后,才使能第二轨;第二轨 PG 有效后,才使能第三轨。也可以使用专用时序控制器(如带可编程延迟的 sequencer),或利用 PMBus 数字电源按脚本控制。
Power-Up / Power-Down 与复位释放
FPGA 的复位释放与电源轨状态直接相关。大多数 FPGA 内部有一个上电复位(POR)电路,它监测 VCCINT 和 VCCAUX 是否达到阈值。只有当这些电源轨稳定在阈值以上并保持一定时间后,POR 才会释放,器件才允许开始配置。如果 VCCIO 尚未建立,配置引脚可能无法正确驱动,导致配置失败。
因此,外部复位信号(如 PROG_B、INIT_B、外部系统复位)的释放时机必须晚于所有相关电源轨稳定。常见做法是:用电源时序控制器的“所有 PG 有效”信号作为复位释放的使能条件,再经过 RC 延迟或复位芯片产生干净的复位脉冲。这样可保证 FPGA 在电源完全稳定后才开始配置。
下电时则相反:应先让 FPGA 进入安全状态(如停止配置、I/O 置为高阻),再按顺序关闭电源轨。若下电顺序错误,可能出现 VCCIO 先掉电而 VCCINT 仍存在的情况,导致 I/O 引脚通过外部电路倒灌电流。
配置启动与电源稳定的关系
FPGA 配置过程需要从配置存储器或外部控制器加载比特流。配置时钟(CCLK)和配置数据引脚都位于 I/O Bank,依赖 VCCIO。如果 VCCIO 未达到规定范围,配置接口电平不合法,配置会失败或进入错误状态。因此,配置启动的必要条件是:
- VCCINT 稳定且在 POR 阈值以上;
- VCCAUX 稳定且在 POR 阈值以上;
- 配置所用 I/O Bank 的 VCCIO 稳定;
- POR 释放且 INIT_B 变为高电平;
- 外部复位或 PROG_B 释放,配置控制器开始工作。
在实际调试中,如果发现 FPGA 无法配置,应首先用示波器同时观察 VCCINT、VCCAUX、VCCIO 和 INIT_B 的波形,确认上电顺序和时间间隔是否符合数据手册要求,再检查复位释放是否过早。
实际设计中的时序控制方案
实现多轨时序控制有三种常见方案。第一种是级联 PG:每路电源的 Power Good 输出接到下一路的 Enable 输入,利用 PG 的释放延迟自然形成顺序。这种方式简单,但延迟时间由电源芯片决定,精度有限。第二种是专用时序控制器:如 TI 的 UCD9090、ADI 的 ADM1266 等,可通过 PMBus 或引脚编程设定每路的延迟、顺序和监控阈值,适合多轨复杂系统。第三种是CPLD/FPGA 自身控制:用一个小型 CPLD 或 FPGA 的电源管理逻辑,按状态机控制各轨 Enable,并读取 PG 信号,实现精确到微秒级的时序。
无论采用哪种方案,都应保留每路电源的 PG 信号作为状态反馈,并在调试时用示波器多通道同时捕获。建议至少同时观察 VCCINT、VCCAUX、VCCIO、INIT_B 和配置时钟,确认顺序、间隔和复位释放均符合要求。
关键检查清单
| 检查项 | 要求 | 验证方法 |
|---|---|---|
| 上电顺序 | VCCINT → VCCAUX → VCCIO | 示波器多通道捕获 |
| 顺序间隔 | 符合数据手册 t_seq 范围 | 测量 PG 到下一轨上升的延迟 |
| 上升时间 | 单调、无回落、在允许范围内 | 观察 10%~90% 斜率 |
| 复位释放 | 晚于所有电源轨稳定 | 对比 INIT_B 与电源波形 |
| 下电顺序 | 与上电相反或按手册规定 | 断电时捕获各轨下降波形 |
| 最大压差 | 不超过器件规定值 | 计算任意两轨瞬时差值 |
多电源轨时序不是可选项,而是 FPGA 可靠工作的前提。设计阶段就应确定顺序、间隔和复位释放策略,并在 PCB 上预留足够的测试点。调试阶段用示波器逐项验证,才能避免因电源时序问题导致的配置失败、I/O 异常甚至器件损坏。