简介
FPGA功耗作为设计中一个重要环节,经常影响硬件电源设计。XILINX提供XPE作为前期FPGA设计功耗评估工作,本文主要针对工具上的使用和功耗分析展开讲解。
首先说明XPE和Vivado生成的功耗之间的关系如下:
XPE:
用于早期设计阶段(尚未进行综合或布局布线)。
基于用户输入的估算参数(如资源利用率、时钟频率、翻转率等)。
适合快速评估芯片选型、散热方案或电源设计。
Vivado 功耗分析:
用于设计实现后(综合、布局布线完成)。
基于实际设计的网表(Post-Synthesis 或 Post-Implementation)和仿真数据(如 VCD/SAIF 文件)。
结果更精确,但需要完整的工程流程。
XPE使用
首先通过官网下载XPE文件,地址如下:
https://china.xilinx.com/products/technology/power
根据FPGA型号选择需要下载的资料,如下图所示:
下载完成后打开XPE文件,内部可填写IO、BRAM、CLK等功耗,可以根据自己使用资源做系统评估,如下图所示:
打开一个编译通过的Vivado工程,打开综合报告并点击report power,如下图所示:
选择生成XPE文件,如下图所示:
将VIVADO生成的XPE文件导入EXCLE,如下图所示
这样EXCLE会生成一个详细的功耗分析图,如下图所示:
以上展现了不同温度下FPGA运行程序功耗图,有典型功耗,最大功耗,不同温度下的功耗曲线等,可作为功耗设计参考。
耗电分析
CLK功耗
CLK时钟功耗分析:
以上可看出时钟信号驱动的终点(如寄存器、BRAM、DSP等)数量相同时(FANOUT值),时钟频率越高功耗越大。
LOGIC功耗
逻辑功耗如下图所示:
整个逻辑资源在使用率为36%的环境下功耗只有0.14W,说明逻辑功耗是非常不耗电的。
IO耗电功耗
相比较寄存器资源,BUFFER耗电高很多,高达0.68W, 例如一个BUFG驱动1000个触发器的功耗可能远高于这1000个触发器自身的逻辑功耗。其中时钟缓冲器(BUFG):尤其耗电,因需驱动全局时钟树(覆盖整个芯片,扇出可达数千)。
有效减少缓冲区功耗如下:
减少缓冲器功耗:
用局部时钟(BUFR/BUFH)替代全局时钟(BUFG)。
对高扇出信号手动插入缓冲器层级(如BUFG → BUFH → BUFR)。
BRAM功耗
BRAM分Vccint和Vccbram耗电,定义如下:
Vccint:核心逻辑供电,与逻辑资源的使用率、时钟频率、数据翻转率(Toggle Rate)成正比;
Vccbram:块存储器供电,主要来自BRAM的读写操作,影响因素包括:
读写频率(Read/Write Rate)
数据位宽(Width)和深度(Depth)
时钟频率(CLK)
数据翻转率(Toggle Rate,默认12.5%)
优化手段如下:
项目 | VCCINT | VCCBRAM |
---|---|---|
供电对象 | 核心逻辑(CLB、DSP等) | 块存储器(BRAM/UltraRAM) |
主要功耗源 | 逻辑切换、时钟网络 | BRAM读写操作 |
动态功耗 | 高频逻辑下极高 | 高读写频率时显著 |
静态功耗 | 较低(依赖工艺) | 较低(BRAM漏电流) |
优化手段 | 降频、时钟门控、逻辑简化 | 减少读写、使用LUTRAM替代 |
DPS功耗
不同操作模式的功耗排序(从高到低):
乘累加(MACC):最高功耗(需同时激活乘法器和累加器)。
纯乘法(MULT):中等功耗。
逻辑模式(如位操作):功耗最低(接近静态功耗)
DSP 数量 | 数量越多,总功耗线性增加。 |
时钟频率 | 直接比例关系。 |
运算模式 | MACC > MULT > 逻辑模式。 |
数据位宽 | 全精度(27×18)比低精度(18×18)高30%~50%。 |
使能率(EN) | 若DSP非持续工作,可降低有效功耗。 |
DSP 功耗优化方法
(1) 降低频率或分时复用
对非关键路径 DSP 降频(如从500MHz降至250MHz)。
时分复用(TDM)多个任务共享同一 DSP。
(2) 精度优化
使用最小满足需求的位宽(如用18×18替代27×18)。
对定点运算,减少不必要的扩展位宽。
(3) 控制数据活动
减少输入数据的无效变化(如恒定系数乘法时,固定一侧输入)。
使用 使能信号(CE) 关闭空闲 DSP 的时钟。
(4) 架构级优化
流水线化:增加流水线级数可降低每级频率,减少瞬时功耗。
模块化关闭:在动态部分重配置(DPR)设计中,关闭未使用的 DSP 区域。
CLKMGR功耗
始终管理器模块功耗如下:
优化方案如下:
(1)减少不必要的时钟输出:禁用未使用的MMCM/PLL输出通道。
(2)降低输出频率:在满足时序前提下,使用最低可用频率。
(3)动态关断:通过CE(Clock Enable)信号关闭空闲时钟。
(4)选择高效架构:
对低频时钟用PLL替代MMCM。
对全局时钟用BUFGCE(门控时钟缓冲器)减少负载。