ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

UFS 3.1三路供电设计:电压范围、时序与调试要点

UFS 3.1三路供电设计:电压范围、时序与调试要点 做存储板级设计的朋友应该都体会过UFS 3.1供电这个“看着简单、上手才知道水有多深”的模块。说它看着简单是因为规范层面就三路电VCC、VCCQ、VCCQ2说它水深是因为这三路的电压范围、上电顺序、掉电时序、纹波预算任何一个环节埋雷都会在量产或者高低温测试阶段集中爆发。我自己在几款主控平台和存储扩展板上踩过不少坑这篇就把UFS 3.1供电这点事从头到尾捋一遍重点讲清楚三路电的电压范围、JEDEC对上下电时序的要求以及实际调试时的测量方法给正在做手机、平板、车载或者服务器存储小板的朋友做个参考。1. 为什么UFS 3.1要拆成VCC、VCCQ、VCCQ2三路供电1.1 三路电分别负责哪部分电路UFS 3.1封装里其实集成了好几类差异极大的电路NAND闪存阵列、闪存控制器核心逻辑、M-PHY高速串行收发器以及参考时钟和PLL电路。这些模块的工作电压、噪声敏感度和功耗特性完全不在一个量级所以JEDEC在设计UFS规范时就把供电拆成了三路独立电源轨各管一摊。先看VCC这是主电源轨直接给NAND闪存阵列供电负责读、写、擦除操作时的电荷泵和阵列驱动。纯技术上讲NAND编程和擦除需要在浮栅上建立高电场这个电压通常由内部电荷泵从VCC升压而来所以VCC既要有足够的电压余量还要能扛住突发写操作时的大电流冲击。UFS 3.1并发度比UFS 2.x更高有的颗粒内部一次可以同时操作多个planeVCC上的电流台阶会非常陡。再看VCCQ这是1.2V左右的低压电源轨主要给闪存控制器数字逻辑、内部SRAM、NAND接口I/O供电。控制器的核心逻辑都是低电压CMOS工艺使用1.2V能显著降低动态功耗和开关损耗。最后是VCCQ2标准1.8V给M-PHY物理层、参考时钟缓冲器和PLL等模拟电路供电UFS高速模式下的信号质量很大程度上依赖这路电的纯净度。1.2 三路分离的设计逻辑经常有人问为什么不直接用一路3.3V全部搞定道理其实很简单NAND阵列需要3.3V级别的高电场来完成编程和擦除但控制器逻辑如果也跑3.3V功耗和发热会完全失控而M-PHY模拟前端对电源噪声极度敏感如果和NAND这种大电流动态负载共用电源轨高速信号眼图基本过不了。三路分开本质上是“高电压干粗活、低电压干细活、模拟电图清净”的分工。类比一下就像实验室里大功率设备、精密仪器和信号源要分别接稳压器而不是共用一个插座。UFS 3.1能跑到单通道2.9Gbps甚至Grouped Gear更高的速率M-PHY的供电质量是底层前提VCCQ2这路由任何闪失高速协商就会掉链子。还有一个工程上的原因独立供电轨允许系统在低功耗模式下对某些域单独断电。比如手机进入深度睡眠时可以保留部分VCCQ/VCCQ2域供电用于快速唤醒而VCC可以完全关断来省电。如果三路并一路这个功耗优化空间就没有了。2. 电压范围与关键电气参数规格书之外要盯紧的数字2.1 标准电压范围与容差JEDEC的UFS 3.1规范对三路电源轨都有明确的工作范围做设计时首先要确保在芯片引脚上测到的电压落在这些窗口内。电源轨标准工作范围典型标称值主要负载VCC2.4V ~ 3.6V3.3VNAND阵列、电荷泵VCCQ1.14V ~ 1.26V1.2V控制器数字逻辑、I/OVCCQ21.7V ~ 1.95V1.8VM-PHY模拟前端、PLL、时钟这里我要提醒一句静态电压范围内只能说明“能工作”并不代表“工作得好”。实际项目中至少要留出5%左右的动态余量也就是说把VCC设计在3.3V标称值瞬态跌落时最低不能低于2.9V左右否则就接近欠压保护UVLO窗口边缘了。VCCQ和VCCQ2同理不要贴着上限或下限跑。另外UFS 3.1规范里对不同厂商、不同容量的颗粒VCC的推荐标称值可能略有差异有的老工艺颗粒建议3.0V甚至2.5V。设计前务必以具体型号的数据手册为准不要只盯着公版参考设计看。2.2 电流预算别只看静态参数很多第一次做UFS供电的朋友容易忽略瞬态电流。UFS 3.1的NAND在并发编程时VCC的电流可以瞬间从几十毫安跳到几百毫安甚至接近1A这个电流台阶的上升时间通常在微秒到毫秒量级。如果前级DCDC或者LDO的环路带宽不够VCC电压会出现明显跌落严重时直接触发芯片内部POR复位。我给出一个工程经验值供参考单颗128GB~256GB的UFS 3.1VCC平均工作电流大约200~400mA突发写峰值建议按600mA~1A做设计余量VCCQ按100~300mA算VCCQ2因为主要是模拟电路和时钟缓冲按100~200mA算。如果板上有两颗UFS做RAID或者容量翻倍电流翻倍电源方案要跟着升级。还要注意VCC在启动瞬间的浪涌。给一排大容量的去耦电容充电瞬间电流可能比正常工作电流还大。用PMIC直接给UFS供电时PMIC的软启动时间和限流值要匹配不然每次上电都触发限流保护电压爬不上去设备就枚举失败。2.3 纹波、瞬态响应与去耦纹波指标上VCC和VCCQ的纹波建议控制在50mV以内VCCQ2因为直接给PLL和M-PHY模拟前端供电纹波最好压在30mV以下否则高速信号抖动会超标。去耦不是单纯堆电容。原则是每个电源引脚就近放100nF小电容滤高频远端放2.2uF~4.7uF的大容值电容稳住瞬态。VCC这路由于瞬态电流大至少要保证等效串联电阻低的4.7uF以上容值并且尽量靠近芯片的VCC引脚。用小封装0603和0402混布效果通常比全部用同一封装要好。注意去耦电容不是越大越好。电容太大会拉慢上电爬升斜率如果PMIC又没有配置软启动VCC、VCCQ、VCCQ2之间很容易出现顺序交叉反而不满足时序要求。后面讲时序时会专门展开。3. 上电时序与掉电时序这里最容易翻车3.1 JEDEC对供电顺序到底怎么约束做服务器和通用主板出身的朋友应该对CPU供电时序很熟VCORE最后一路上、PWRGOOD最后拉高、各路供电之间有严格的先后窗口。UFS的上电时序没有CPU那么苛刻但也不是随便接的JEDEC规范里的核心约束可以概括为两条。第一条三路电的爬升顺序原则上不做强制排序但任意时刻VCCQ和VCCQ2的电压都不得高于VCC的有效电平。这句话是关键VCC相当于“底盘”如果VCC还没爬起来VCCQ2或者VCCQ反而先到了1.8V/1.2V芯片内部的ESD二极管就会正偏导通轻则闩锁重则直接损坏电源轨或者IO引脚。第二条从第一路电源轨开始爬升t0到所有电源轨都进入各自的有效电压范围内这个总时间窗口要控制在100ms以内。也就是说三路电谁先谁后可以商量但是不能拖太久。有些工程师用RC延时给EN脚做时序温度和容差一漂100ms窗口轻松超限在高温或者低温下特别容易出问题。3.2 单调爬升与100ms时间窗口除了先后顺序爬升的“波形质量”也很重要。JEDEC要求各路电源在爬升过程中必须是单调的不能出现明显的平台、台阶或者回退。用LDO供电时如果EN引脚的阈值和输出电容配合不好输出电压可能先在中间电平“停一下”再继续爬这种平台在某些芯片看来就像一次欠压复位导致内部状态机错乱。实际项目里我见过一个案例某颗LDO的软启动偏慢输出电容又加了22uF导致VCC爬升用了将近150ms才到3.3V。虽然三路顺序没交叉但总窗口超了100ms结果UFS在上电后频繁出现设备枚举失败只有把电容减小或者换快启动LDO才能稳定复现。所以100ms这条线不能只写在文档里一定要实测验证。时钟和复位也要跟上时序。UFS的M-PHY需要参考时钟常见19.2MHz才能建立高速链路虽然低速模式可以不要参考时钟但正常使用场景下主控端的REF_CLK必须在UFS设备初始化前稳定输出。RESET_N引脚要等各路电源都有效并稳定之后再释放释放太早可能导致芯片内部POR没完成命令发过去石沉大海。3.3 掉电时序与非法掉电掉电时序同样关键尤其是整机突然断电这种非法掉电场景。原则上掉电过程中VCCQ和VCCQ2也不能高于VCC否则同样有二极管导通风险。硬件断电时各路负载电容大小不一样放电速度也不同容易出现某一路掉得快、某一路掉得慢的交错。应对办法很简单如果有PMIC统一管理掉电时建议让三路同时关断让它们自然放电不要做成“VCC先断、VCCQ2后断”这种阶梯式关断。如果是GPIO控制多个独立LDO要确保关断顺序和上电相反或者所有使能脚一起拉低避免某一路提前断电后其他路还挂着。非法掉电后还有一个常见问题大容量去耦电容残留电荷导致VCC下电不彻底。下次上电时UFS内部状态没有完全复位设备行为不可预期。对于车载、工控这类对掉电安全要求高的场景可以考虑加放电回路或者让PMIC在关断时提供主动放电功能。3.4 和CPU/服务器上电时序的对照顺手说一个容易混的概念。很多人是先接触服务器CPU供电时序再来做存储设计的下意识会觉得UFS也要像CPU那样精确到毫秒级的多元时序其实不是。服务器CPU的上电讲究“所有辅助电源先稳定再上VCORE最后PWRGOOD拉高”每一段时序都有严格的T0、T1、T2窗口因为CPU内部是几亿门的数字逻辑任何一轨没到位就上电闩锁风险极大。UFS虽然也是多路供电但它内部有自己的POR电路只要满足“VCCQ/VCCQ2不高于VCC”和“100ms总窗口”这两个条件三路电的顺序可以灵活处理。所以做UFS供电时不用照搬CPU的“VCORE必须最后上”的教条但“先稳定粗电、再上精细电、最后释放复位”的设计思想是一脉相承的。我见过有人为了模仿CPU时序在UFS的VCCQ使能脚前刻意加RC延时结果反而把事情搞复杂了UFS只要满足原则性约束就够了没必要画蛇添足。4. 参考电路与PMIC配置实操4.1 一个完整的电源树设计示例这里给一个相对通用的参考电源树适合单颗UFS 3.1、主控SoC自带PMIC或者外挂小电源管理芯片的场景。电源轨目标电压推荐拓扑去耦电容策略VCC3.3V低压差LDO或小功率DCDC持续能力≥1.5A4.7uF1uF100nF靠近引脚VCCQ1.2VLDO持续能力≥500mA2.2uF100nFVCCQ21.8VLDO持续能力≥300mA2.2uF100nF额外加磁珠滤波可选芯片本身的供电引脚往往不止一组有些大容量UFS会把VCC分成两个或更多引脚设计时每个引脚都要单独去耦不能用一根走线串到底。PCB走线宽度要按峰值电流来算VCC路径至少保证1mm以上走线宽度或者覆铜加宽避免线路电阻造成额外压降。如果选用的PMIC没有内置完整的电源轨时序管理就需要自己用EN脚做控制。我的建议是能用PMIC内部时序配置就千万不要用RC延时RC会随温度和容差漂移批量生产时一致性很差。如果实在要用GPIO控制要确保软件在上电初始化时按正确顺序拉高使能脚并且不要在系统休眠时改变这些GPIO的默认状态否则就会踩到后面说的“深度休眠唤醒丢盘”坑。4.2 PMIC时序配置与测量验证以常见的国产PMIC和参考DCDC方案为例典型配置思路是这样把PMIC的LDO1设为VCC 3.3VLDO2设为VCCQ2 1.8VLDO3设为VCCQ 1.2V然后在PMIC的寄存器里配置上电序列为LDO1先启动间隔约1~5ms后LDO2启动再间隔1~5ms后LDO3启动。这样做的目的是让VCC这个“底盘”先站稳VCCQ2和VCCQ再跟进天然满足“VCCQ/VCCQ2不高于VCC”的原则。配置完不要光看PMIC寄存器有没有写进去一定要拿示波器实测。很多PMIC的软启动时间会叠加额外的延迟寄存器里写的间隔和实际波形不一定完全一致。测量时四通道分别挂VCC、VCCQ、VCCQ2和RESET_N触发源选第一路上升沿示波器时间轴设为20ms/格总观察窗口至少200ms然后重点看三路电是否都在100ms内进入有效带。还有一个细节RESET_N释放的时机最好由主控芯片确认电源稳定后再拉高不要和最后一路电源简单硬连。因为电源稳定不等于芯片内部POR完成如果RESET_N释放得太早UFS内部逻辑还没准备好主机发起的启动命令可能直接丢失。4.3 用示波器实测上电时序的方法具体操作上我建议的测量步骤是这样示波器开满四个通道探头全部用10x衰减挂到UFS芯片侧的电源引脚尽量靠近引脚测不要隔着长长的过孔和走线测。触发通道选VCC触发模式设为上升沿触发电平设在1V左右这样VCC一开始爬升就触发。水平时间轴先设20ms/格总窗口200ms看完整的三路电爬升过程和RESET_N释放时序。打开电压光标分别确认三路电进入各自有效范围的绝对时间点算出总上电窗口是否小于100ms。用电流探头夹在VCC路径上跑一轮持续读写观察大电流台阶下的电压跌落幅度确认没有跌破欠压保护线。实测时最容易忽略的是探头地线过长带来的测量噪声。测量VCCQ2这种对纹波敏感的电源轨时建议用接地弹簧或者尽量缩短地线回路否则示波器上看到的纹波可能有一半是测量噪声会让你误判设计有问题。5. 常见问题排查与避坑清单5.1 五个高频问题的定位思路UFS 3.1供电相关的故障形态上无非“开机不识别”、“运行中掉盘”、“休眠唤醒枚举失败”、“高低温下偶发异常”。下面这几个是我实际见过的高频问题排查思路可以直接抄。第一个上电后UFS完全无法枚举。优先量三路电在芯片引脚上的实际电压特别是有没有VCCQ2。很多人在原理图上看PMIC配置没问题但PCB上某个电源网络存在虚焊、断头或者磁珠脱落导致某一轨没有真正送到芯片。用万用表量通断是不够的必须上电实测电压。第二个拷贝大文件时系统死机或者重启。重点怀疑VCC大电流跌落。把示波器电流探头夹到VCC路径上持续跑读写看电流台阶出现时VCC有没有明显凹陷。如果凹陷超过300mV基本就是去耦不够或者DCDC环路带宽不足需要加大容值、提高DCDC开关频率或者换更大限流的LDO。第三个深度休眠唤醒后偶发性丢盘。这个坑我在早期版本上踩得很深我用一颗GPIO控制的LDO给VCCQ2供电系统进入休眠时软件把GPIO默认拉低VCCQ2先于VCC掉电本身没问题但唤醒时软件先拉高VCCQ2的EN而VCC这路PMIC还没起来导致每次唤醒都偶发违反“VCCQ2不高于VCC”的原则最终表现为休眠唤醒几次就丢一次盘。改成PMIC统一时序管理后问题彻底消失。第四个高低温冲击后设备不稳定。优先看爬升斜率低温下LDO限流可能更紧输出电容充电更慢本来常温下没问题的RC延时在低温下直接超了100ms窗口。这类问题在实验室做高低温循环时才会暴露量产后概率更高所以要提前用最大容差去验算RC时间。第五个走线过长导致VCCQ2纹波过大。VCCQ2给PLL和M-PHY供电如果从PMIC到UFS的走线跨了大半个板子高速信号抖动率会异常。处理方法是把VCCQ2的电源轨尽量走短或者在靠近UFS引脚侧加一组100nF1uF的滤波组合严重时在PMIC输出端串一个磁珠做隔离。5.2 上电时序排查速查表现象优先排查点最可能根因上电无法枚举三路电实测电压、RESET_N释放时机某路供电缺失或时序交叉大文件读写死机VCC瞬态跌落、DCDC环路去耦不足、带宽不够休眠唤醒丢盘EN脚默认状态、关断顺序唤醒时VCC未起、VCCQ2先上高低温偶发不识别爬升斜率、RC延时漂移总上电窗口超100ms高速协商失败VCCQ2纹波、走线长度PLL/M-PHY供电不干净排查时不要只盯一个环节。电源问题常常是“多因一果”比如VCC跌落可能同时由去耦不足、DCDC环路带宽低、PCB走线压降大三个因素叠加产生。所以定位问题时要把示波器波形、PCB Layout、PMIC寄存器配置三方面同时拉起来看不能量到电压正常就草率收工。5.3 关于“省一点”的教训最后多说一句UFS供电上最不值得省的就是PMIC时序管理。用独立LDO加GPIO控制看似省了几毛钱但软件、休眠唤醒、时序容差这些隐含成本会在后期成倍找回来。我早期那版板子为了省一颗PMIC愣是在系统休眠唤醒这个case上调了两周最后换算下来加班时间足够买几百颗PMIC了。供电设计这种基础模块做得“不显眼”才是最高评价——所有精力都应该花在让UFS稳定高效地跑业务上而不是温饱线上的反复救火。希望这篇能把UFS 3.1三路供电的电压范围、上电掉电时序和调试方法讲透大家少走点弯路。
返回列表