4. PolarFire电源与时钟可靠性设计
PolarFire FPGA 的可靠性并不只取决于逻辑设计和时序收敛,电源与时钟这两个“底层基础设施”往往决定了系统在异常条件下的生存能力。电源域划分、上下电时序、监控与复位策略、时钟冗余切换、PLL 锁定监测与失锁恢复,共同构成一个闭环:电源提供稳定工作条件,时钟提供可信节拍,监控与复位负责在偏离时把系统拉回确定状态。本节围绕这五个环节展开,重点说明“怎么划分、怎么约束、怎么监测、怎么恢复”。
电源域划分:按功能与失效影响分层
PolarFire 器件内部存在多个供电轨,典型包括核心电压 VDD(约 1.0V 级)、辅助/IO 相关电压 VDDI/VDD18/VDD25 等,以及收发器、PLL 等模拟电源。划分电源域时不应只按电压值分组,而应按“失效影响”分组:一旦某域掉电,哪些功能必须继续存活?例如安全监控、看门狗、外部通信接口通常需要独立于主逻辑的供电,以便在主域异常时仍能上报或进入安全态。
实践中建议把电源域分为三类:核心计算域(FPGA 内核、DSP、BRAM)、接口域(IO Bank、收发器)、监控与保持域(复位管理、监控逻辑、关键状态寄存器)。监控与保持域应尽量由独立 LDO 或经 ORing 的辅助电源供电,避免与核心域同时跌落。同时要注意 IO Bank 的 VCCO 必须与所连外设电平一致,混压 Bank 需明确每个 Bank 的参考电压,防止上下电过程中出现反灌电流。
上下电时序:约束与实现
PolarFire 对上电顺序有明确要求,通常核心电压先建立、IO 与辅助电压随后,收发器与 PLL 电源按数据手册规定顺序上电。若顺序错误,可能出现闩锁、IO 反灌或配置失败。设计上可用电源时序控制器(如带 PGOOD 级联的 PMIC)或 FPGA 的电源管理引脚实现分级使能。
下电顺序一般与上电相反:先断 IO 与收发器,再断核心。原因是若核心先掉电而 IO 仍有电,IO 引脚可能通过保护二极管向核心灌电流。下面给出一个示例性的时序约束片段,用于说明如何用参数表达“延迟与就绪”关系(数值为教学示例,非实测):
rail_sequence:
VDD_CORE : enable_at = 0ms, pgood_required = true
VDD18_AUX : enable_at = 5ms, depends_on = VDD_CORE.pgood
VDD25_IO : enable_at = 10ms, depends_on = VDD18_AUX.pgood
VDD_XCVR : enable_at = 15ms, depends_on = VDD25_IO.pgood
reset_release: after_all_pgood + 20ms
判断时序是否满足,不能只看“上电完成”,而要观察每个 PGOOD 的建立时刻与复位释放时刻之间的裕量。若复位释放早于所有电源稳定,配置过程可能读到不确定状态,表现为偶发配置失败或 IO 状态异常。
电源监控与复位策略
电源监控通常由外部监控芯片或 FPGA 内部电压监测模块完成。关键参数是阈值与去抖时间:阈值应低于标称电压但高于器件最低工作电压,去抖时间要大于电源纹波周期,避免误触发。例如 1.0V 核心电压可设欠压阈值为 0.92V、去抖 1ms;若纹波峰峰值约 20mV,1ms 去抖足以滤除瞬态跌落而不掩盖真实掉电。
复位策略应分层:上电复位(POR)负责全局初始化;监控复位负责在电压越限时把系统拉回安全态;看门狗复位负责处理逻辑挂死。三者应统一到同一个复位树,明确“谁复位谁”。建议把复位源状态锁存到保持域寄存器,便于事后判断是电源跌落、看门狗还是外部复位导致重启。
时钟源冗余与切换
时钟可靠性依赖冗余与切换。PolarFire 的时钟网络支持多路参考输入,可配置主备时钟源。切换逻辑的核心是切换判据与切换毛刺:判据通常为“主时钟丢失或频率越限”,切换应尽量在时钟切换器内完成,避免组合逻辑产生毛刺。若系统对相位连续有要求,应选择支持无缝切换的时钟器件,或在切换后重新同步。
一个常见做法是:主时钟来自板载晶振,备时钟来自恢复时钟或第二晶振;监控逻辑检测主时钟频率窗口,越限持续一定时间后触发切换,并记录切换事件。切换后需重新确认 PLL 锁定状态,因为参考源变化会导致 PLL 失锁。
PLL 锁定监测与失锁恢复
PLL 锁定监测通常通过 LOCK 信号或锁定检测逻辑实现。失锁可能由参考时钟抖动、电源噪声、温度漂移或切换瞬态引起。恢复策略应分级:先尝试重新锁定,若多次失败则切换到备用参考,再失败则进入安全态并告警。
下面用一张信号链与状态关系图,把电源、时钟、PLL、复位与恢复路径放在同一视图中,便于理解它们之间的因果与切换关系。
从图中可以看到,电源监控不仅直接驱动复位树,还会通过“电源异常触发时钟切换”影响时钟路径;PLL 失锁则同时请求复位和恢复流程。这种交叉关系说明:可靠性设计不能把电源、时钟、复位当作三个独立模块,而应把它们纳入同一套事件与恢复策略。
可执行的检查清单
为便于落地,下面给出一份可直接对照使用的检查清单,覆盖本节五个环节的关键判断点:
| 环节 | 检查项 | 判断依据 |
|---|---|---|
| 电源域划分 | 监控/保持域是否独立供电 | 核心域掉电时监控逻辑仍可工作 |
| 上下电时序 | PGOOD 级联与复位释放裕量 | 复位释放晚于所有电源稳定 ≥20ms |
| 电源监控 | 欠压阈值与去抖时间 | 阈值高于器件最低工作电压,去抖大于纹波周期 |
| 时钟冗余 | 主备切换判据与毛刺 | 切换后无毛刺,频率窗口检测有效 |
| PLL 失锁 | 重锁次数与降级路径 | 连续失败后切备用,再失败进安全态 |
最后需要强调:本节给出的阈值、去抖时间和重锁次数均为教学示例,实际设计必须依据 PolarFire 数据手册的电气规范、板级电源纹波实测结果以及系统对可用性的要求来确定。可靠性设计的价值不在于堆叠保护,而在于让每一层保护都有明确的触发条件、恢复路径和可观测证据。