功耗是数字设计的主要物理特性之一,相比较于ASIC,FPGA是耗电的器件,不适合低功耗设计。本节讨论一般FPGA设计功耗最大化的技术。
在CMOS技术中,动态功耗与门和金属引线的寄生电容充放电有关。
I
=
V
∗
C
∗
f
,
I
是
总
电
流
,
V
是
电
压
,
C
是
电
容
,
f
是
频
率
I=V*C*f, I是总电流,V是电压,C是电容,f是频率
I=V∗C∗f,I是总电流,V是电压,C是电容,f是频率
在FPGA设计中,电压是固定的,降低功耗的技术与C和f有关。
1.1 时钟控制
利用DFF的时钟使能引脚,或利用全局时钟的多路选择器(BUFGMUX)。时钟选通是减少动态功耗的直接手段。
对于FPGA设计来说,选通时钟会引入新的时钟区域,对于时序分析会产生困难。
1.1.1 时钟偏移
选通时钟会带来一定组合逻辑延时,导致时钟到达前后两个DFF的时间不同,有可能导致逻辑某时失效。
1.1.2 控制偏移
通过选通门的延时(dG)加上布线延时将比通过逻辑的延时(dL)大,在FPGA仿真或许并不会出现问题,但是实际上板测试会出现问题。
实现和分析工具必须给出一组约束,或者使用FPGA默认选通时钟的BUFGMUX。
1.2 减少供电电压
一般功耗随着电压的平方减少,降低FPGA电源的供电电压接近最小要求的电压。
1.3 功耗主要来源
1、动态功耗 2、静态功耗:漏电,PN结反向偏置电流,栅极漏电流。
1.4 减少功耗常用技术
- clock gating,把不用的功能模块的时钟信号关闭。ICG: Intergated Clock Gating Cell
- 电压域和动态电压频率调节,芯片分成不同的电压域,挑战需要处理跨电压域信号。采用Level Shifter实现。
- 根据计算任务负荷动态调整电压和频率至能满足需求的最低程度,称为DVFS。
- Power Gating用来减少静态电流。
1.5 低功耗架构
- 并行化(parallelism)和流水线(pipelining)
- 总线编码(bus encoding)给总线上的数据编码通常有助于减少总线上的功耗。
1、反向编码,例如传输0000->1110,会有3个bit跳变,对第二个数据取反操作,就变成0000->0001,4个bit的总线最多同时有两个bit跳变,具体还需要反向条件的算法。
2、 异或编码,针对特定的转换率很高的总线。 - Memory的功耗密度通常低于Logic,leakage控制也比较规范化,有同时两种方案的话优先增加memory.
- 异构计算架构(Heterogeneous Computing),专用型更合适。