3. 电源域划分与电压调节:多电压域划分策略、DVFS与AVS技术

各位同学,咱们今天聊点实在的。电源域划分和电压调节,说白了就是给芯片的各个模块“分灶吃饭”。你不能让一个跑在1.8V的IO口和一个只需要0.7V的核心逻辑吃同一锅饭,对吧?我当年刚入行时,就吃过这个亏——一个项目为了省事,整个芯片共用一个电压域,结果功耗爆炸,散热片都能煎鸡蛋了。

好,咱们一步步拆解。先看多电压域怎么划,再看DVFS和AVS这两个调压利器。

3.1 多电压域划分策略

为什么要划分电压域?你想想看,芯片里各个模块对电压的要求天差地别:

  • Core(核心逻辑):追求高性能,电压通常最低(0.6V~0.9V),但电流最大。
  • IO(输入输出):要跟外部接口匹配,电压高(1.8V、3.3V),电流小。
  • Memory(存储器):SRAM、寄存器堆,对噪声敏感,需要稳定电压。
  • PLL(锁相环):模拟电路,对电源纹波要求极高,必须单独伺候。

我个人习惯,划分电压域时遵循三个原则:

  1. 功能隔离:不同功能的模块,如果电压需求差异超过0.3V,就坚决分开。
  2. 噪声隔离:数字模块的开关噪声会污染模拟模块。PLL和高速IO必须用独立的LDO或PMIC供电。
  3. 功耗优化:能关掉的模块,单独设一个域。比如摄像头接口不用时,直接断电。

举个例子,一个典型的车规SoC,我建议这样划分:

电压域 典型电压 包含模块 备注
VDD_CORE 0.7V~0.9V CPU、GPU、NPU 支持DVFS
VDD_IO 1.8V/3.3V GPIO、SPI、UART 固定电压
VDD_MEM 1.1V~1.2V SRAM、Cache 低噪声
VDD_PLL 1.8V PLL、DLL 独立LDO
VDD_SAFE 1.2V 安全岛、看门狗 永不掉电

关键点:每个电压域之间必须加电平转换器(Level Shifter),否则跨域信号会出问题。我曾经见过一个设计,忘了在Core和IO之间加Level Shifter,结果IO口输出高电平时,Core那边直接烧了。

3.2 DVFS(动态电压频率调节)原理

DVFS,说白了就是“看人下菜碟”。芯片负载重时,提高电压和频率;负载轻时,降低电压和频率。这样既能保证性能,又能省电。

它的核心逻辑很简单:

// 伪代码:DVFS控制逻辑
while (1) {
    load = get_current_load();  // 获取当前负载
    if (load > HIGH_THRESHOLD) {
        set_voltage(V_HIGH);
        set_frequency(F_HIGH);
    } else if (load < LOW_THRESHOLD) {
        set_voltage(V_LOW);
        set_frequency(F_LOW);
    } else {
        set_voltage(V_MID);
        set_frequency(F_MID);
    }
    sleep(10ms);  // 每10ms调整一次
}

嗯,这里要注意:DVFS不是随便调的。电压和频率必须匹配。频率越高,需要的电压也越高。这个关系叫“F-V曲线”,每个芯片都得实测标定。

我在项目中遇到过一个问题:DVFS切换太快,导致电压还没稳定,频率就上去了,结果芯片直接死机。后来我加了一个“电压稳定等待”机制——每次调压后,等LDO输出稳定了,再调频率。这个坑,你们以后肯定会遇到。

实战技巧:DVFS的切换时间,建议控制在10μs~100μs之间。太快了容易出问题,太慢了又跟不上负载变化。我一般用硬件状态机来实现,比软件中断靠谱得多。

3.3 AVS(自适应电压调节)技术

AVS比DVFS更“聪明”。DVFS是根据负载调压,而AVS是根据芯片的“体质”调压。你想想看,同一批晶圆,有的芯片漏电流大,有的小。如果都用同一个电压,那漏电大的芯片功耗就高,漏电小的又浪费了性能。

AVS的原理是这样的:芯片内部放一个“电压监测环”(Voltage Monitor Ring),实时监测芯片的临界路径延迟。如果延迟偏大,说明电压不够,就调高一点;如果延迟偏小,说明电压有余量,就调低一点。

我画个图,帮你们理解AVS的闭环控制:

AVS自适应电压调节闭环控制 芯片核心 电压监测环 比较器 (目标延迟 vs 实际延迟) AVS控制器 (PID算法) 电源管理 (LDO/PMIC) 闭环流程:芯片核心 → 电压监测 → 比较器 → AVS控制器 → 电源管理 → 调整电压 目标:让芯片始终工作在“刚好够用”的电压上,既省电又保证性能

AVS的好处很明显:

  • 省电:每颗芯片都能找到自己的“最佳电压”,平均能省10%~20%的功耗。
  • 补偿工艺偏差:同一批芯片,性能一致性更好。
  • 适应老化:芯片用久了,延迟会变慢。AVS会自动调高电压,延长寿命。

注意:AVS不是万能的。它依赖电压监测环的精度。如果监测环本身不准,那整个闭环就失控了。我建议在芯片量产时,每颗芯片都做一次“AVS校准”,把监测环的偏差标定出来。

3.4 DVFS与AVS的协同工作

实际项目中,DVFS和AVS经常一起用。DVFS负责“粗调”,根据负载切换电压档位;AVS负责“细调”,在每个档位内微调电压。

举个例子:

  1. 系统检测到负载升高,DVFS把电压从0.7V切换到0.8V。
  2. AVS监测到延迟仍然偏大,再微调0.05V,最终稳定在0.85V。
  3. 负载降低后,DVFS切回0.7V,AVS再微调回0.72V。

这样配合,既能快速响应负载变化,又能精确控制电压。我做过一个项目,用这种方案,芯片的功耗比单纯用DVFS又降了8%。

我的经验:DVFS的切换频率建议在1kHz~10kHz,AVS的调节频率可以慢一些,100Hz~1kHz就够了。太快了反而容易引起振荡。

好了,这一节的内容就这些。记住:电源域划分是基础,DVFS是策略,AVS是精度。三者结合,才能让你的车规SoC既跑得快又吃得少。


公众号:蓝海资料掘金营,微信deep3321