软件版本:无
操作系统:WIN10 64bit
硬件平台:适用所有系列FPGA
板卡获取平台:https://milianke.tmall.com/
登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!
1概述
本小节讲解Verilog语法的低功耗设计,需要掌握几种低功耗设计的方法。
2低功耗简介
低功耗技术在当今得到越来越广泛的发展,在你的身边存在着许多的消费电子产品,无一不含有低功耗技术的成果。比如现在的智能手机,体积、重量都比之前有了很大提升,低功耗技术使得手机电池的续航能力进一步增强;无线蓝牙耳机,做到非常小的体积内,容纳小容量电池,也是得益于低功耗技术的发展。
目前的低功耗设计主要从芯片设计和系统设计两个方面考虑。随着半导体工艺的飞速发展和芯片工作频率的提高,芯片的功耗迅速增加,而功耗增加又将导致芯片发热量的增大和可靠性的下降。因此,功耗已经成为深亚微米集成电路设计中的一个重要考虑因素。为了使产品更具竞争力,工业界对芯片设计的要求已从单纯追求高性能、小面积转为对性能、面积、功耗的综合要求。而微处理器作为数字系统的核心部件,其低功耗设计对降低整个系统的功耗具有重要的意义。
3常用的低功耗设计技术
(1)动态电压调节
动态功耗与工作电压的平方成正比,功耗将随着工作电压的降低以二次方的速度降低,因此降低工作电压是降低功耗的有力措施。但是,仅仅降低工作电压会导致传播延迟加大,执行时间变长。然而,系统负载是随时间变化的,因此并不需要微处理器所有时刻都保持高性能。动态电压调节技术降低功耗的主要思路是根据芯片工作状态改变功耗管理模式,从而在保证性能的基础上降低功耗。在不同模式下,工作电压可以进行调整。为了精确地控制电压,需要采用电压调度模块来实时改变工作电压,电压调度模块通过分析当前和过去状态下系统工作情况的不同来预测电路的工作负荷。
(2)门控时钟
在微处理器中,很大一部分功耗来自时钟。时钟是惟一在所有时间都翻转的信号,而且很多情况下引起不必要的门的翻转,因此降低时钟的开关活动性将对降低整个系统的功耗产牛很大的影响。门控时钟包括门控逻辑模块时钟和门控寄存器时钟。门控逻辑模块时钟对时钟网络进行划分,如果在当前的时钟周期内,系统没有用到某些逻辑模块,则暂时切断这些模块的时钟信号,从而明显地降低开关功耗。采用“与”门实现的时钟控制电路。门控寄存器时钟的原理是当寄存器保持数据时,关闭寄存器时钟,以降低功耗。然而,门控时钟易引起毛刺,必须对信号的时序加以严格限制,并对其进行仔细的时序验证。
(3)可变频率时钟
根据系统性能要求,配置适当的时钟频率以避免不必要的功耗。门控时钟实际上是可变频率时钟的一种极限情况(即只有零和最高频率两种值),因此,可变频率时钟比门控时钟技术更加有效,但需要系统内嵌时钟产生模块PLL,增加了设计复杂度。
(4)并行结构
并行结构的原理是通过牺牲面积来降低功耗。将一个功能模块复制为n(n≥2)个相同的模块,这些模块并行计算后通过数据选择器选择输出,采用二分频的并行结构。
(5)流水线技术
流水线技术本质上也是一种并行。把某一功能模块分成n个阶段进行流水作业,每个阶段由一个子模块来完成,在子模块之间插入寄存器。若工作频率不变,对某个模块的速度要求仅为原来的1/n,则工作电压可以降低为原来的1/n,电容的变化不大,功耗可降低为原来的1/n2,面积基本不变,但增加了控制的复杂度。
(6)低功耗单元
设计低功耗单元是降低功耗的一个重要方法,包括调整单元尺寸、改进电路结构和版图设计。用户可以根据负载电容和电路延时的需要选择不同尺寸的电路来实现,这样会导致不同的功耗,因此可以根据需要设计不同尺寸的单元。同时,为常用的单元选择低功耗的实现结构,如触发器、锁存器和数据选择器等。
(7)低功耗状态机编码
状态机编码对信号的活动性具有重要影响,通过合理选择状态机状态的编码方法,减少状态切换时电路的翻转,可以降低状态机的功耗。其原则是:对于频繁切换的相邻状态,尽量采用相邻编码。例如:Gray码在任何两个连续的编码之间只有一位的数值不同,在设计计数器时,使用Gray码取代二进制码,则计数器的改变次数几乎减少一半,显著降低了功耗;在访问相邻的地址空间时,其跳变次数显著减少,有效地降低了总线功耗。
(8)Cache的低功耗设计
作为现代微处理器中的重要部件,Cache的功耗约占整个芯片功耗的30%~60%,因此设计高性能、低功耗的Cach结构,对降低微处理器的功耗有明显作用。Cache低功耗设计的关键在于降低失效率,减少不必要的操作。通常用来降低Cache功耗的方法有以下两种:一种是从存储器的结构出发,设计低功耗的存储器,例如采用基于CAM的Cache结构;另一种是通过减少对Cache的访问次数来降低功耗。
4Verilog中使用的低功耗设计方法
4.1 并行设计
在Verilog中对同一功能模块进行并行设计,可以一定程度上降低功耗,资源变多了,速度变快了。
并行处理,可以同时处理多条执行语句,使执行效率变高。在满足工作要求的情况下,采用并行处理,可降低系统工作频率,减少功耗。
比如设计乘法器时,在200MHz的工作频率下,需要一个DSP模块进行计算可以满足设计要求,如果使用100MHz的工作频率,那么需要2个DSP模块进行计算可以满足设计的要求,同时功耗降低了。
4.2 流水线设计
在Verilog中对同一功能模块进行流水线设计,可以一定程度上降低功耗,资源变多了,速度变快了。类似于并行设计,多级流水线技术可以将效率提升,同时需要更多地资源消耗。
流水线设计可以将一个较长的路径分成 N 级流水线。路径长度缩短为原来路径长度的 1/N。此时如果时钟频率不变,则在一个周期内,只需要对电容 C/N 进行充放电,而不是对原来的电容 C 进行充放电。因此在相同的频率要求下,可以采用较低的电源电压来驱动系统,使功耗降低。
4.3 资源共用
当设计中存在一些功能相同的运算模块,可以通过资源共享的方法避免同一个模块多次出现,减少资源的消耗。
4.4 状态编码
对于一些变化频繁的信号,翻转率较高,功耗相对较大。可以利用状态编码的方式来降低器件的开关次数,减少整体功耗。
例如进行状态机设计时,使用格雷码代替二进制编码,状态机切换前后的状态编码如果只有 1bit 的差异,就会减少翻转率,降低功耗。
4.5 门控时钟
时钟信号是变化频繁的信号,翻转率较高,功耗相对较大。如果在功能允许的情况下,适时关闭时钟,使得时钟可以控制,用时开启,不用时关闭,可以降低整体的功耗。
直接将时钟使能控制信号与时钟做"与"逻辑,就可以实现门控时钟。该方法缺点很明显。由于时序或抖动的原因,时钟使能信号与时钟进行"与"逻辑后,容易产生毛刺,会对数字电路产生严重影响。解决这个问题的方法就是使用锁存器,在时钟下降沿对时钟使能信号进行锁存,并保持一个时钟周期内不变。锁存后的信号再与时钟进行"与"逻辑操作,可将门控时钟中的毛刺消除掉。