笔试|面试|FPGA知识点大全系列(14)FPGA的低功耗设计


前言

嗨,今天来学习关键路径与路径优化相关问题~
微信关注《FPGA学习者》获取更多精彩内容


42.低功耗设计

对于FPGA或IC设计来说,功耗是一个绕不开的话题,今天我们就来看看,什么是FPGA的功耗?功耗包含哪些部分?又该怎么去降低这些功耗呢?

①功耗的组成:

总的来说,FPGA的功耗主要包含两大部分:静态功耗和动态功耗;

静态功耗:

在关断主电源或系统进入待机模式下产生的电流称为待机电流,由待机电流产生的功耗称之为:待机功耗,即静态功耗。当然,静态功耗也包括电路中由晶体管的漏电流所导致的功耗。

动态功耗:

动态功耗是门电路输出切换时,由逻辑转换所引起的功耗。
动态功耗可以由下式定义:
在这里插入图片描述【注意】此处公式中Vdd求平方。
其中:

S每个时钟通过整个电路的平均转换次数
CL门寄生电容
fclk时钟频率
Vdd供电电压

有的地方还会提出一种IO功耗,指IO翻转时,对外部负载电容进行充放电所消耗的功耗;不过我觉得,IO功耗可以归在动态功耗一类中。
需要提出的是,在大规模的IC设计中,动态功耗占主要地位,在典型的应用中动态功耗约占到了总功耗的80%。

②如何降低功耗?

降低功耗应该在所有设计层次上进行,即系统级、逻辑级和物理级;层次越高对功耗的降低就会越有效。如下图所示:
在这里插入图片描述
下表是各个抽象层次中对功耗降低程度的影响;
在这里插入图片描述

(一)系统级低功耗技术

Ⅰ片上系统方法;
Ⅱ硬件/软件划分;
Ⅲ低功耗软件;
Ⅳ选择处理器;

【注】该部分不是本文重点,详细内容可参考《硬件架构艺术》一书,文末有该书籍获取方法。

(二)体系结构级降低功耗技术

Ⅰ高级门控时钟

在同步数字系统中,时钟分布贡献了整个数字开关功率中的绝大部分,在许多情况下可以通过门控时钟将绝大部分不使用的电路进行关闭。
在这里插入图片描述
上图所示为组合门控时钟电路,插入门控时钟之前和插入之后的功能并没有改变,所以可以用一致性检查工具进行验证。
在这里插入图片描述
上图为时序门控时钟电路,会加入额外的逻辑,该技术并不适用于多位宽数据的情况;使用时序门控时钟最大的挑战在于识别流水线上“多余的”或“不关心”的状态。

[看到好像有点不是太懂的感觉]

Ⅱ动态电压/频率调节

Dynamic Voltage/Frequency Scaling,DVFS;是提高系统能效的流行方法,在对频率不敏感的应用阶段中降低时钟速率和供电电压,可以在性能适度损失的情况下大幅降低功耗。

功耗正比于供电电压的平方,减少供电电压将会使功耗相应降低1/4。但是也会降低系统性能,所以需要作出权衡。

Ⅲ基于缓存的系统体系结构

对大多数DSP应用,快速傅里叶变换算法要求频繁访问系统存储器的数据,这样的存储器能效并不高,增强型FFT结构需要在系统存储器或RAM和处理器之间增加缓存。
目的是在处理器需要之前,预先将相关数据从主存中取到缓存中。

Ⅳ对数FFT体系结构

对于大规模的运算应用,使用对数(Logarithmic Number System,LNS)比使用线性系统更好。LNS在降低平均位元活跃度的同时用加法和减法实现乘除运算,使其效率比线性系统更高。

因此基于LNS实现FFT可能节省大量功耗。
负面影响是加法器和减法器的宽度会增加,导致需要指数级增大的查找表。

Ⅴ电源门控技术
Ⅵ多阈值电压技术
Ⅶ多电压供电技术
Ⅷ存储器电源门控

在存储器不需要读、写操作的时候,处理器通过编程降低其供电电压,使之数据不丢失即可。

(三)寄存器传输级降低功耗

寄存器传输级(RTL)降低功耗,也就是我们通常使用Verilog进行编程的时候需要注意的降低功耗的方法。虽然在大规模的ASIC中,RTL完成时至少80%的功耗已经确定,但是仍然可进行一定的功耗降低。

Ⅰ状态机编码和解码

状态机编码类型中,格雷码最适合低功耗设计,因为其每次发生变化时仅有一位改变;且格雷码设计也消除了组合逻辑中存在毛刺的风险。
另外使用其他编码时,尽量使状态间切换的时候,变化的位数尽量少。

Ⅱ二进制数表示法

使用有符号数在某些应用中,数据切换时比使用补码更有优势。
在这里插入图片描述

Ⅲ门控时钟

上面介绍过门控时钟,这里主要从编码角度来对门控时钟进行说明。编码过程中应当考虑一下后端工具是否可以在环境设置的加入门控时钟。这里主要是举例说明,先看如下的RTL代码以及逻辑实现:
在这里插入图片描述
这种写法,综合出来是32个mux2,但如果换成下面的方式,则会通过一个门控时钟来替换32个mux2,如下:
在这里插入图片描述
这种方式好像挺神奇的,待会写个小程序综合一下试试;
咳咳,打假了,好像两种方式综合出来并没有什么区别,都是:
在这里插入图片描述
或许是因为该D触发器本身有使能端口的原因吧。

Ⅳ独热码电路

使用case多路器时,对其条件编码按照独热码去编写,输出会更快、更稳定,并且会带来低功耗的效果。
在这里插入图片描述

Ⅴ除掉多余转换

在没有设置的默认情况下,总线数据常常会发生没有意义的转换,如果转换后的数据并没有被真正的采样,那么他的转换就是多余的。
在这里插入图片描述
如图,上图中,如果load_out没有使能,那么load_op也不应该使能,否则前面电路的操作就是冗余操作;
在这里插入图片描述
改为上述电路后,sel为0时,仅仅读入A和B的输入,刚好对应的,后端多路器也只会输出这一部分的操作,此时Operation2都没有进行操作,可以节省部分功耗。

Ⅵ资源共享

对于涉及较多算术运算的设计,如果有同样的操作在多处使用,必须避免相应的运算逻辑在多个位置重复出现。
在这里插入图片描述
在多个位置重复出现会增大面积,从而增加功耗。

Ⅶ使用行波计数器来降低功耗

其实所谓的行波计数器就是异步计数电路,如下图所示:
在这里插入图片描述
虽然每个触发器的输出端,都有一定的延迟,但是加上使能信号作为数据的选通输入,可以在一定程度上避免因各个触发器的不同延迟带来的影响。

使用这种电路虽然可以降低功耗,但是会给静态时序分析带来极大的不便之处,对可行性和缺陷覆盖率也会产生影响,使用时应当慎重。

Ⅷ总线反转

当前数据和下一个数据之间的汉明距离大于N/2时,就将下一个数据取反然后再传输,以减少总线上出现转换的位置量,这就是总线反转编码,这种技术对于减少大容量总线上的转换次数很有效;
该技术需要传输一个额外的控制位,以表示所传输的数据是否已反转。
在这里插入图片描述
在这里插入图片描述
【注】虽然感觉数据传输时,状态翻转的总个数降低了,但是编码时每一次都要判断是否需要翻转,后续也需要进行解码,这是不是也会带来功耗的增加呢?

Ⅸ高活跃度网络

将活跃度较高的网络和活跃度较低的网络区分开来,然后将其置于逻辑云中较深的位置。如图x1…xn的变化频率较低,Y是高活跃度网络,因此将逻辑云分成两部分,一个是Y=0,一个是Y=1,通常两份新的逻辑云的规模会有所减小
在这里插入图片描述

Ⅹ启用和禁用逻辑云

在操作大规模逻辑云计算的时候,往往在需要的时候才将其打开,下图中触发器B有使能信号但是触发器A并没有关闭,因为设计中其他地方用到输出,所以是的整个逻辑云启用浪费了能量。一种改进方法是将使能信号移到逻辑云前面,在不需要逻辑云的时候禁用他它,如下所示:
在这里插入图片描述

(四)寄存器级低功耗技术

包括:技术水平、版图优化、衬底偏压、减少氧化层厚度、多氧化层器件、利用定制设计减小电容等等。

③其他设计

可参考@FPGA探索者文章:数字IC笔试题(7)——低功耗设计【静态功耗】【动态功耗】。该文章中大致思路和上述基本相同,只不过表述得更为简洁。

④写在后面

本文参考书籍《硬件架构艺术》,关注公众号,后台回复【硬件架构艺术】获取电子版书籍。

欢迎关注:【FPGA学习者】

往期精彩

笔试|面试|FPGA知识点大全系列(1)
笔试|面试|FPGA知识点大全系列(2)
笔试|面试|FPGA知识点大全系列(3)
笔试|面试|FPGA知识点大全系列(4)
笔试|面试|FPGA知识点大全系列(5)
笔试|面试|FPGA知识点大全系列(6)
笔试|面试|FPGA知识点大全系列(7)之异步FIFO设计
笔试|面试|FPGA知识点大全系列(8)之时序分析
笔试|面试|FPGA知识点大全系列(9)FIFO深度计算详解
笔试|面试|FPGA知识点大全系列(10)跨时钟域问题大全解(上)
笔试|面试|FPGA知识点大全系列(11)跨时钟域问题大全解(下)
笔试|面试|FPGA知识点大全系列(12)复位电路设计
笔试|面试|FPGA知识点大全系列(13)关键路径与路径优化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值