聊一聊FPGA低功耗设计的那些事儿

以下是笔者一些关于fpga功耗估计和如何进行低功耗设计的知识:
1. 功耗分析
整个fpga设计的总功耗由三部分功耗组成:1. 芯片静态功耗;2. 设计静态功耗;3. 设计动态功耗。
芯片静态功耗:fpga在上电后还未配置时,主要由晶体管的泄露电流所消耗的功耗
设计静态功耗:当fpga配置完成后,当设计还未启动时,需要维持i/o的静态电流,时钟管理和其它部分电路的静态功耗
设计动态功耗:fpga内设计正常启动后,设计的功耗;这部分功耗的多少主要取决于芯片所用电平,以及fpga内部逻辑和布线资源的占用
显而易见,前两部分的功耗取决于fpga芯片及硬件设计本身,很难有较大的改善。可以优化是第3部分功耗:设计动态功耗,而且这部分功耗占总功耗的90%左右,因此所以降低设计动态功耗是降低整个系统功耗的关键因素。上面也提到过功耗较大会使fpga发热量升高,那有没有一个定量的分析呢?答案当然是有,如下式:
tjmax > θja * pd + ta
其中tjmax表示fpga芯片的最高结温(maximum junction temperature);θja表示fpga与周围大气环境的结区热阻抗(junction to ambient thermal resistance),单位是°c/w;pd表示fpga总功耗(power dissipation),单位是w;ta表示周围环境温度。
以xc7k410t-2ffg900i系列芯片为例,θja = 8.2°c/w,在ta = 55°c的环境中,想要结温tjmax不超过100°c的情况下,可以推算fpga的总功耗:pd <(tjmax – ta)/θja=(100 - 55)/8.2=5.488w,之前估算的20w与之相差太远,因此优化是必不可少的:
1) 降低θja:热阻抗取决于芯片与环境的热传导效率,可通过加散热片或者风扇减小热阻抗
图1
2) 减小pd:通过优化fpga设计,降低总功耗,这也是本文重点讲解的部分。
2. 功耗估计
在讲解低功耗设计之前,介绍一下xilinx的功耗估计工具xpe(xilinx power estimator),xpe主要是在项目初期,处于系统设计,rtl代码并未完善阶段功耗估计时使用,它是一个基于excel的工具,如图2所示,功能做的十分丰富。
图2
在设计完成综合实现后,则可以使用vivado自带的功耗分析工具进行精确计算功耗。打开综合实现后的设计,点击report power即可得到功耗分析的结果,如图3,4所示。
图3
图4
3. 低功耗设计
关于fpga低功耗设计,可从两方面着手:1) 算法优化;2) fpga资源使用效率优化。
1) 算法优化
算法优化可分为两个层次说明:实现结构和实现方法
首先肯定需要设计一种最优化的算法实现结构,设计一种最优化的结构,使资源占用达到最少,当然功耗也能降到最低,但是还需要保证性能,是fpga设计在面积和速度上都能兼顾。比如在选择采用流水线结构还是状态机结构时,流水线结构同一时间所有的状态都在持续工作,而状态机结构只有一个状态是使能的,显而易见流水线结构的功耗更多,但其数据吞吐率和系统性能更优,因此需要合理选其一,使系统能在面积和速度之间得到平衡;
另一个层面是具体的实现方法,设计中所有吸收功耗的信号当中,时钟是罪魁祸首。虽然时钟可能运行在 100 mhz,但从该时钟派生出的信号却通常运行在主时钟频率的较小分量(通常为 12%~15%)。此外,时钟的扇出一般也比较高。这两个因素显示,为了降低功耗,应当认真研究时钟。 首先,如果设计的某个部分可以处于非活动状态,则可以考虑禁止时钟树翻转,而不是使用时钟使能。时钟使能将阻止寄存器不必要的翻转,但时钟树仍然会翻转,消耗功率。其次,隔离时钟以使用最少数量的信号区。不使用的时钟树信号区不会翻转,从而减轻该时钟网络的负载。
2) 资源使用效率优化
资源使用效率优化是介绍一些在使用fpga内部的一些资源如bram,dsp48e1时,可以优化功耗的方法。fpga动态功耗主要体现为存储器、内部逻辑、时钟、i/o消耗的功耗。
其中存储器是功耗大户,如xilinx fpga中的存储器单元block ram,因此在这边主要介绍对bram的一些功耗优化方法。
如图5中实例,虽然bram只使用了7%,但是其功耗0.601w占了总设计的42%,因此优化bram的功耗能有效地减小fpga的动态功耗。
图5
下面介绍一下优化bram功耗的方法:
a) 使用“no change”模式:在bram配置成true dual port时,需要选择端口的操作模式:“write first”,“read first” or “no change”,避免读操作和写操作产生冲突,如图6所示;其中“no change”表示bram不添加额外的逻辑防止读写冲突,因此能减少功耗,但是设计者需要保证程序运行时不会发生读写冲突。
图6
图5中的功耗是设置成“write first”时的,图7中是设置成“no change”后的功耗,bram的功耗从0.614w降到了0.599w,因为只使用了7%的bram,如果设计中使用了大量的bram,效果能更加明显。
图7
b) 控制“en”信号:bram的端口中有clock enable信号,如图8所示,在端口设置中可以将其使能,模块例化时将其与读/写信号连接在一起,如此优化可以使bram在没有读/写操作时停止工作,节省不必要的功耗。
图8
如图9所示为控制“en”信号优化后的功耗情况,bram功耗降到了0.589w
图9
c) 拼深度:当设计中使用了大量的存储器时,需要多块bram拼接而成,如需要深度32k,宽度32-bit,32k*32bit的存储量,但是单块bram如何配置是个问题?7 series fpga中是36kb 的bram,其中一般使用32kb容量,因此可以配置成32k*1-bit或者1k*32-bit,多块bram拼接时,前者是“拼宽度”(见图10),后者是“拼深度”(见图11)。两种结构在工作时,“拼宽度”结构所有的bram需要同时进行读写操作;而“拼深度”结构只需要其中一块bram进行读写,因此在需要低功耗的情况下采用“拼深度”结构,
注:“拼深度”结构需要额外的数据选择逻辑,增加了逻辑层数,为了降低功耗即牺牲了面积又牺牲了性能。
图10
图11

比人类驾驶安全1000倍 英特尔对100辆自动驾驶汽车进行测试
机器视觉检测应用于哪些行业
物联网智能污水处理站远程监控运维平台解决方案
三款800G光模块方案介绍—SR8/DR8/2FR4
可穿戴技术的“十大戒律”!
聊一聊FPGA低功耗设计的那些事儿
针对污水处理厂的污水排放监控系统设计
贸泽电子新品推荐:2021年4月新增超3000个物料
国芯思辰|兼容BL8062,电源稳压器CN86L028可提升摄像机图像质量
华为Mate20X上手评测 究竟好不好
工业4.0的内涵_工业4.0对我们的影响
深入探讨元宇宙技术发展和生态繁荣
工程机械切割机的特征应用
三星Galaxy Watch心电图功能获美国食品药品监督管理局批准
火爆全球 VisionFive 2 RISC-V单板计算机国内预售开启
光纤通信系统的发展趋势及现状分析
物流服务模式该怎样去创新
智能家居控制音箱对比传统音箱带来哪些技术上的变化?
便携式吹尘枪/车载吸尘器方案设计开发
电路功能模块和性能指标要求