UCD90910电源时序芯片:从架构解析到工程实践的全方位指南

发布时间:2026/7/27 12:55:13
UCD90910电源时序芯片:从架构解析到工程实践的全方位指南 1. 项目概述与核心价值在服务器主板、高端网络交换机或者工业控制器的研发过程中电源设计往往是决定系统稳定性的“暗线”。一块板卡上动辄十几个甚至几十个电压轨CPU核心电压、内存电压、PCIe电压、各种芯片的I/O电压……它们之间的上电、下电顺序如果乱了套轻则系统无法启动重则直接“烟花”烧毁昂贵的核心芯片。早年我们做这类项目要么用一堆逻辑门电路和比较器搭一个笨重的时序控制器要么就得在FPGA或MCU里写复杂的状态机代码调试起来极其痛苦一个参数改动可能就要重新烧录、测试周期很长。后来TI德州仪器推出了UCD90xxx系列电源时序与健康监控芯片算是把这个领域的工程难题给“芯片化”了。我手头这颗UCD90910可以说是这个家族里的“瑞士军刀”。它不单单是一个简单的时序发生器更是一个集成了10轨独立电源时序控制、13路高精度模拟量监控、10路独立风扇PWM控制甚至支持闭环电压裕度测试Closed Loop Margining的片上系统。简单说你把它往板子上一放通过I2C/PMBus接口配置好它就能帮你把电源上电顺序、电压监控、故障保护、风扇调速这些脏活累活全包了还能把运行日志存到自己的Flash里方便你事后分析。它的核心原理是通过一个内置的12位ADC以400ms的周期轮询监测最多13路模拟输入可以是电压、经转换的电流或温度信号并根据用户预设的阈值欠压、过压、警告、故障和逻辑关系来控制最多10个GPIO的输出状态通常用来使能或关闭相应的DC-DC或LDO。其“智能”之处在于它内部有一个可编程的“布尔逻辑构建器Boolean Logic Builder”和状态机可以让你灵活地定义任意电源轨之间的依赖关系例如必须在1.8V稳定后延迟5ms再开启0.8V而不仅仅是简单的延时。这种基于事件如某路电源达到“Power Good”状态而非单纯定时的序列控制更符合实际系统的需求。从工程价值来看这颗芯片解决了几个关键痛点提升可靠性硬件的时序控制和监控比软件方案更及时、更可靠避免了系统死机导致电源管理失控的风险。简化设计将复杂的电源管理逻辑集成到一颗芯片中减少了外围器件数量降低了PCB布局布线的复杂度。支持高级诊断内置的非易失性故障日志能记录最多12次故障的峰值信息和实时状态读取为生产测试和现场故障排查提供了强大工具。实现闭环测试其闭环裕度调节功能允许通过PMBus命令动态、精确地调整某一路电源的输出电压例如调节反馈网络的分压比这对于系统级的“四角测试”验证系统在电压和温度极限下的稳定性至关重要无需手动更换电阻。接下来我将结合数据手册和实际调试经验拆解这颗芯片的设计思路、配置要点和实操中会遇到的各种“坑”。2. 芯片架构与核心功能模块解析要玩转UCD90910不能只把它当黑盒得先理解它的内部架构。从功能框图来看它的核心可以分成几个清晰的部分2.1 监控与ADC子系统这是系统的“感官”。芯片有13个模拟监控输入引脚MON1-MON13它们通过一个多路复用器MUX连接到一个12位、200kSPS的ADC。ADC的参考电压是内部产生的2.5V精度在0°C-125°C范围内为±0.5%。这意味着所有输入到MONx引脚的电压信号都必须通过外部电阻分压网络调整到0-2.5V对于MON10-13有效下限是0.2V的范围内。注意MON1-MON6这六个通道除了连接ADC还额外连接了硬件数字比较器。这是关键硬件比较器的响应时间在80µs量级而ADC轮询一圈所有通道需要54.5ms。因此对于需要快速保护的关键电源轨例如CPU核心电源务必分配到MON1-MON6并配置硬件比较器的阈值。这样一旦发生瞬间的电压尖峰跌落或过冲芯片能近乎实时地触发关断动作而不是等到几百毫秒后的ADC采样。ADC的转换结果会用于电压/电流/温度读取通过PMBus命令主机可以随时读取任何一路监控的实时值。与阈值比较每个监控通道可以配置4个阈值欠压警告UVW、欠压故障UVF、过压警告OVW、过压故障OVF。超过这些阈值会触发状态寄存器置位并可配置相应的故障响应动作。计算“Power Good”状态这是时序控制的基础。每个电源轨可以独立设置“Power Good On”V_PG_ON和“Power Good Off”V_PG_OFF阈值。当电压高于V_PG_ON认为该路电源“稳定”当电压低于V_PG_OFF认为该路电源“失效”。2.2 时序控制引擎与GPIO这是系统的“大脑”和“手脚”。时序控制引擎是一个可编程的状态机它根据以下输入来决定10个Rail Enable通常映射到GPIO的输出使能命令来自PMBus的OPERATION命令或PMBUS_CNTRL引脚的电平。依赖条件可以设置为依赖于其他一个或多个电源轨的“Power Good”状态或者依赖于特定GPI通用输入引脚的电平。定时延迟每个电源轨可以独立配置开启延时TON_DELAY和关闭延时TOFF_DELAY最大可达3276ms。故障信号来自本路或其他路的电压、电流、温度故障。GPIO的灵活性是UCD90910的一大特色。它有多达26个可配置的GPIO引脚但功能有重叠和分组10个Rail Enable这是最核心的功能通常用10个GPIO来直接控制电源芯片的ENABLE引脚。8个多功能PWM/GPIOFPWM1/GPIO5 - FPWM8/GPIO12这些引脚非常强大。它们可以配置为普通的GPIO输入/输出。PWM输出频率可在15.259 kHz 到 125 MHz之间编程。这个PWM可以用于风扇控制下文详述也可以用于生成一个可调的电压基准通过RC滤波给其他电路或者用于闭环裕度调节——直接连接到电源芯片的反馈FB引脚通过调节PWM占空比来微调输出电压。注意PWM3/GPI3和PWM4/GPI4的频率范围更低0.93 Hz 到 7.8125 MHzPWM1和PWM2则是固定的10kHz和1kHz。4个专用GPIPWM1/GPI1 - PWM4/GPI4可作为带固定频率PWM输出的GPIO输入常用于接收来自主处理器的看门狗信号WDI或其它数字状态信号。其余通用GPIO可用于产生系统复位信号SYSTEM_RESET、电源总好信号POWER_GOOD、报警信号WARN或级联控制信号CASCADE等。2.3 风扇控制子系统对于需要散热的系统UCD90910直接集成了完整的风扇控制器最多支持10路独立风扇。它并不是简单地输出PWM而是一个闭环控制系统输入最多10路风扇转速反馈TACH信号通过GPIO引脚输入。芯片会测量TACH信号的频率来计算转速RPM。控制逻辑芯片提供了两种内置算法或者完全由主机通过PMBus直接指定PWM占空比。内置算法通常是“温度-转速”曲线控制。你可以在Fusion GUI里定义最多5个温度-转速设定点芯片会自动在点之间线性插值根据测量的温度可以来自内部温度传感器或外部通过MON输入的温度传感器信号来动态调整PWM占空比从而控制风扇转速。输出使用前述的FPWMx引脚输出25kHz典型值的PWM信号去驱动风扇。支持2线仅PWM、3线PWM TACH GND和4线PWM TACH 12V GND风扇。故障检测可以检测风扇堵转转速低于最低阈值或丢失TACH信号异常并触发报警。2.4 通信与配置接口PMBus/I2C接口是配置和监控的主通道。地址可以通过PMBUS_ADDR0和ADDR1引脚设置悬空、接GND或接VDD。Fusion Digital Power Designer GUI是TI提供的图形化配置工具绝大多数开发工作都在这里完成它通过PMBus与芯片通信将配置下载到芯片的SRAM并可以烧录到内部Flash中固化。JTAG接口主要用于芯片本身的固件更新和深度调试普通应用开发中较少使用。3. 硬件设计要点与外围电路纸上谈兵终觉浅我们来看看怎么把它放到电路板上。原理图设计是成功的第一步这里有几个容易踩坑的地方。3.1 电源与接地处理UCD90910本身需要3.3V供电但分成了三个域V33A (Pin 46)模拟3.3V电源。必须干净建议从系统的模拟3.3V LDO单独引过来并在芯片附近用1µF和0.1µF电容并联去耦。V33D (Pin 45)数字核心3.3V电源。可以与数字3.3V同源但同样需要良好的去耦。V33DIO1 (Pin 7) V33DIO2 (Pin 44)数字I/O口的3.3V电源。这里有个关键点如果GPIO引脚要驱动外部电路例如直接驱动一个MOSFET的栅极其电流就从这个电源域抽取。要确保此路电源能提供足够的电流并且最好与V33D分开避免数字噪声通过电源耦合到核心逻辑。数据手册指出所有输出引脚的总灌电流IOL不应超过12mA总拉电流IOH不应超过48mA。V33FB (Pin 58)这是芯片内部一个3.3V线性稳压器的反馈引脚。仅在你想使用芯片内部的LDO从更高电压如12V产生3.3V给芯片自己用时才需要连接外部电阻分压网络。绝大多数情况下我们直接使用外部提供的3.3V此引脚应悬空NC。如果错误地接地或接电源可能导致芯片不工作或损坏。BPCAP (Pin 47)内部1.8V LDO的旁路电容引脚。必须连接一个0.1µF的陶瓷电容到模拟地AVSS位置要尽可能靠近芯片引脚。接地芯片有多个接地引脚AVSS1/2/3模拟地DVSS1/2/3数字地以及底部的散热焊盘。最佳实践是在芯片下方使用一个完整的接地平面。所有GND引脚包括散热焊盘都直接通过过孔连接到这个地平面。模拟地和数字地在芯片下方单点连接即通过这个共用地平面不要在外部再将它们用磁珠或0Ω电阻分开以免引入不必要的阻抗。3.2 模拟监控输入电路设计这是精度和稳定性的关键。以监控一路12V电源为例我们需要将其分压到2.5V以内。分压电阻计算假设12V nominal我们想让它落在ADC量程中间比如1.2V。那么分压比应为 1.2V / 12V 0.1。选择R1上拉电阻和R2下拉电阻使得 R2 / (R1 R2) 0.1。例如 R190.9kΩ R210kΩ。阻抗匹配与滤波ADC的输入阻抗典型值为1.5MΩMON10-13或更高。为了减小分压电阻本身的热噪声和避免因输入电流导致的测量误差分压网络的等效输出阻抗即R1与R2的并联值应远小于ADC的输入阻抗手册建议小于4kΩ。上例中90.9k∥10k ≈ 9kΩ略高于建议值可以考虑减小电阻值例如用9.09k和1k并联约900Ω但会增大静态功耗需要权衡。低通滤波在分压点与MON引脚之间强烈建议增加一个RC低通滤波器例如一个100Ω电阻串联一个0.1µF电容对地。这可以滤除电源上的高频开关噪声防止ADC采样时出错。滤波器的截止频率应远高于ADC的采样频率200kHz但又足够低以滤除噪声比如设置在10kHz左右。针对MON10-13这几个引脚输入范围是0.2V-2.5V低于0.2V的输入会被视为0.2V。设计时需确保正常工作时电压高于0.2V。电流和温度监控通常使用电流采样放大器如TI的INA196将电流转换成电压信号再送入MON引脚。温度则使用热敏电阻或数字温度传感器如TMP75转换成电压。同样需要注意信号调理和滤波。3.3 数字接口与上拉电阻PMBus/I2C总线PMBUS_CLK和PMBUS_DATA是开漏输出必须在总线上拉电阻到3.3V通常用4.7kΩ。PMBUS_ALERT也是开漏输出同样需要上拉。GPIO配置当GPIO作为输入时如果信号源是开漏输出或可能悬空必须启用内部上拉通过软件配置或添加外部上拉电阻防止浮空输入导致功耗增加或状态不定。复位引脚RESET低电平有效。通常通过一个RC电路如10kΩ上拉0.1µF电容对地实现上电复位也可以连接到一个手动复位按钮或主处理器的GPIO。确保低电平脉冲宽度大于2ms。未使用引脚NCNo Connect引脚应保持悬空。JTAG引脚如果不使用TDI和TMS应通过10kΩ电阻上拉到3.3VTRST应通过10kΩ电阻下拉到地。4. 软件配置实战使用Fusion GUI硬件设计好了灵魂在于配置。TI的Fusion Digital Power Designer GUI是配置UCD90910的唯一推荐工具除非你想直接啃PMBus命令手册。它的界面虽然功能强大但初次接触可能觉得复杂。下面我以一个典型的四路电源12V, 3.3V, 1.8V, 0.8V时序控制为例走一遍核心配置流程。4.1 初始连接与设备识别使用USB转I2C/PMBus适配器如TI的USB-TO-GPIO连接目标板。打开Fusion GUI选择对应的适配器和I2C地址由PMBUS_ADDRx引脚决定。连接成功后GUI会读取设备ID显示为UCD90910。4.2 引脚分配Pin Assignment这是配置的起点告诉芯片哪个物理引脚用来做什么。在“Configure”模式下找到“Pin Assignment”标签页。你会看到一个芯片引脚示意图。分配监控引脚假设我们的12V接在MON13.3V接MON21.8V接MON30.8V接MON4。分别点击这些MON引脚在右侧属性栏“Function”选择“Voltage Monitor”并给它起个有意义的名字如“12V_MON”。分配使能引脚我们需要4个GPIO来控制这4路电源的使能。例如分配GPIO1控制12V电源的ENGPIO2控制3.3VGPIO3控制1.8VGPIO4控制0.8V。在对应GPIO的属性中“Function”选择“Rail Enable”并将其关联到对应的RailRail 1, 2, 3, 4。一个Rail可以包含一个电压监控、一个使能输出还可以关联电流监控、温度监控和裕度调节PWM。分配其他功能如果需要风扇控制将FPWM1引脚功能设为“Fan PWM”将某个GPIO如GPIO13设为“Fan Tach”输入。如果需要看门狗将某个GPI如PWM1/GPI1设为“WDI Input”。4.3 电源轨参数配置Vout Config这是核心配置页为每个Rail设置电气参数和时序逻辑。基本电压参数Vout Command标称输出电压值如12.0。这个值主要用于显示和计算百分比阈值。Vout Margin High/Low裕度测试的目标电压例如5%和-5%即12.6V和11.4V。Power Good On/Off定义电源“稳定”和“失效”的阈值通常设为标称值的±5%-10%。例如对于12VPG_ON设为11.4V95%PG_OFF设为11.0V92%。注意PG_OFF必须略低于PG_ON以防止电压在阈值附近抖动时状态频繁翻转。故障阈值Vout UV Fault/Warning欠压故障/警告阈值。故障通常触发关断动作警告可能只记录日志。例如UV Fault设为10.8V90%UV Warning设为11.2V93%。Vout OV Fault/Warning过压故障/警告阈值。例如OV Fault设为13.2V110%OV Warning设为12.8V107%。勾选“Synchronize margins/limits/PG to Vout”可以方便地以百分比方式同步设置所有相关阈值。时序控制On/Off ConfigTurn On Control选择上电控制方式。“Operation Command”受PMBus命令控制“Pin Based”受PMBUS_CNTRL引脚控制“Auto”则上电即自动开始序列需谨慎使用。Sequence On Dependencies这是实现复杂时序的关键。例如对于1.8V Rail我们希望它在3.3V稳定后再开启。就在这里添加依赖项选择“Rail 2 (3.3V)”条件为“Power Good”。还可以设置“AND”或“OR”逻辑组合多个依赖。Turn On Delay满足所有依赖条件后延迟多长时间再发出使能信号。例如3.3V稳定后延迟2ms再开启1.8V。Turn Off Control和Sequence Off Dependencies下电时序配置逻辑类似。Ton Max Fault Limit发出使能信号后允许电源在多长时间内达到PG_ON状态。如果超时则报“Turn On Fault”。这对于检测电源模块是否失效非常重要。例如设为50ms。Fault Response当该路电源发生UV/OV等故障时采取什么动作。“Shutdown Immediately”立即关闭“Shutdown After Delay”延迟关闭“Shutdown and Restart”关闭后尝试重启“No Response”仅记录。Fault Shutdown Slaves如果本路发生故障可以强制关闭其他哪些电源轨。这用于构建故障传播链。4.4 风扇控制配置在“Fan Configuration”页面为每个风扇通道指定PWM输出引脚和TACH输入引脚。设置温度-转速曲线在“Temperature vs. Speed”表中定义最多5个坐标点。例如(30°C, 20%占空比)(50°C, 50%)(70°C, 100%)。芯片会线性插值。设置故障参数最低转速阈值如500 RPM低于此值认为风扇故障堵转。TACH脉冲数每转通常为2。选择控制模式可以选择“Automatic”根据温度曲线自动控制或“Manual”主机通过PMBus直接设置占空比。4.5 闭环裕度调节配置这是高级功能用于生产测试。在对应Rail的配置中找到“Margining”设置。将“Margin Control”设置为“Closed Loop”。指定一个PWM输出引脚通常是某个FPWMx作为裕度调节输出。这个PWM信号经过一个RC滤波器后会产生一个直流电压连接到目标电源芯片的反馈FB网络通常是串联在反馈分压电阻的上端或下端。设置“Margin High Duty Cycle”和“Margin Low Duty Cycle”对应输出PWM的占空比以产生将电源输出电压调节到Vout Margin High/Low所需的直流电压。配置完成后主机可以通过PMBus发送MARGIN_HIGH或MARGIN_LOW命令UCD90910会自动调整PWM占空比并通过监控输入实时读取电压形成一个闭环直到电压达到目标裕度值。这比手动更换电阻或调整DAC精确和高效得多。4.6 配置下载与固化所有配置在GUI中调整时只是修改了连接后读取到软件中的参数。需要点击“Download to Device”将配置写入芯片的SRAM此时芯片会按照新配置运行。务必进行充分测试测试无误后点击“Store Configuration to Flash”将当前配置固化到芯片的非易失性Flash中。此后每次芯片上电都会自动从Flash加载这个配置运行无需主机干预。5. 调试技巧与常见问题排查即使设计再仔细调试阶段也总会遇到问题。下面是我总结的一些常见坑点和排查思路。5.1 芯片无法通信或无法识别症状Fusion GUI扫描不到设备或连接失败。排查步骤检查电源和复位首先用万用表测量V33A, V33D, V33DIO引脚是否为稳定的3.3VBPCAP引脚对地电压是否为~1.8VRESET引脚是否为高电平2.1V这是最基本的前提。检查I2C上拉PMBUS_CLK和PMBUS_DATA线是否有4.7kΩ上拉到3.3V用示波器测量主机发起通信时数据线是否有波形波形幅度是否正常0V-3.3V检查地址确认PMBUS_ADDR0和ADDR1的硬件连接悬空、拉高、拉低与你在GUI中设置的扫描地址是否匹配。悬空时内部偏置电压约为2.26V逻辑为1接地为0接3.3V也为1。检查接线I2C的SDA和SCL线是否接反连接器是否接触良好5.2 电源时序不正确某一路不开启或顺序错乱症状系统上电后部分电源没有输出或者顺序不符合预期。排查步骤确认配置已生效在Fusion GUI的“Monitor”页面查看各Rail的状态。是“Off”还是“On”如果显示“Off”检查该Rail的“Turn On Control”和“Sequence On Dependencies”配置是否正确。测量GPIO输出用示波器测量作为Rail Enable的GPIO引脚。在上电瞬间它是否按预期变成了高电平或低电平取决于你控制的电源芯片是高使能还是低使能如果没有回到配置中检查。检查依赖条件如果Rail A依赖Rail B的Power Good但A没开启。首先确认B是否已经达到“Power Good”状态。在Monitor页面查看B的电压读数是否超过了设定的PG_ON阈值。常见坑PG_ON阈值设得过高实际电源已经稳定输出但未达到阈值导致依赖条件永不满足。适当调低PG_ON阈值如设为标称值的90%。检查使能信号极性UCD90910的GPIO输出高电平约3.3V低电平接近0V。你控制的DC-DC芯片的EN引脚是高电平有效还是低电平有效如果反了需要在硬件上增加一个反相器如一个三极管或逻辑门或者在软件中配置GPIO的初始输出状态和有效极性如果支持。但注意UCD90910的GPIO通常配置为推挽输出直接驱动逻辑电平转换可能电流不足驱动MOSFET栅极是更常见的做法。5.3 电压监控读数不准或跳动大症状Fusion GUI里读到的电压值飘忽不定或者与万用表测量值有较大偏差。排查步骤检查分压网络计算理论分压比用万用表测量MON引脚对地的实际电压。与理论值是否相符如果不符检查电阻值精度、焊接是否良好。检查ADC参考电压虽然内部VREF精度不错但在极端温度下可能有±1%的偏差。对于精度要求极高的场合需要考虑这个误差。检查噪声用示波器AC耦合观察MON引脚上的波形。是否有高频毛刺或较大的纹波这通常是电源本身的噪声或耦合的开关噪声。务必在分压点后添加RC低通滤波器电阻约100Ω电容0.1µF截止频率约16kHz能有效滤除大部分开关噪声而不影响ADC采样。源阻抗影响如果分压电阻并联值过大接近或超过4kΩADC采样时的瞬时输入电流会导致测量电压瞬间跌落造成误差。减小分压电阻值例如从100k/10k换成10k/1k但要注意功耗。校准Fusion GUI支持输入“External Scale”和“Offset”进行软件校准。你可以用高精度万用表测量实际MON引脚电压和电源输出电压计算出实际的缩放系数和偏移量填入配置中以补偿电阻公差和系统误差。5.4 风扇控制不工作或转速异常症状风扇不转或一直全速转或不按温度曲线调速。排查步骤检查PWM输出用示波器测量FPWMx引脚。是否有25kHz默认的PWM波形占空比是否随温度变化如果没有输出检查引脚配置是否正确是否为Fan PWM功能。检查TACH输入对于4线风扇TACH信号是开漏输出需要上拉电阻通常4.7k-10k到3.3V。用示波器看是否有脉冲序列脉冲幅度是否正常在Fusion GUI Monitor页面能否读到转速RPM读数为0可能意味着TACH信号没接好、没上拉或脉冲极性配置错误有些风扇是每转2个脉冲有些是4个。检查温度源自动调速模式依赖温度读数。确认你配置的温度源内部传感器或外部MON输入是否正确并且读数是合理的。如果温度读数一直是-40或125°C这种极端值说明传感器电路或配置有问题。风扇最小启动占空比有些风扇有最小启动占空比要求比如需要20%的占空比才能启动。如果你设置的温度-转速曲线在低温时占空比太低如10%风扇可能无法启动。确保最低占空比高于风扇的启动阈值。5.5 故障日志Fault Log的使用这是UCD90910最有价值的诊断功能之一。当系统发生异常断电或重启后可以连接Fusion GUI在“Fault Log”页面查看历史记录。日志内容会记录故障类型UV Fault, OV Fault, OT Fault等、故障通道、故障时的峰值电压/电流/温度值、以及时间戳如果使能了RTC。排查应用例如系统在客户现场随机重启回收板卡后连接GUI发现故障日志里记录了一次“Rail 3 (1.8V) UV Fault”峰值电压记录为1.2V。这立刻将问题指向1.8V电源网络可能是负载瞬间过大或电源芯片本身有问题或者PCB布局导致阻抗过大。这比盲目地更换元器件高效得多。最后一点心得UCD90910功能强大初次配置可能会觉得参数繁多。我的建议是采用增量式配置法先只配置最基本的一路电源的监控和使能让它工作起来。然后再逐步添加其他电源轨、设置依赖关系、配置故障响应最后再加上风扇控制和裕度调节等高级功能。每步都进行验证这样可以快速定位问题所在。它的非易失性存储也允许你保存多个不同的配置版本方便在不同测试阶段切换。