可编程逻辑器件与VHDL设计技术第四部分:FPGA低功耗设计北京理工大学雷达技术研究所陈禾可编程逻辑器件与VHDL设计技术本节内容{数字电路的功耗{低功耗设计技术{低功耗FPGA设计可编程逻辑器件与VHDL设计技术CMOS电路的功耗来源{在数字CMOS电路中,功耗是由三部分构成的:PTotal=Pdynamic+Pshort+Pleakagez其中Pdynamic是电路翻转时产生的动态功耗,Pshort是P管和N管同时导通时产生的短路功耗,Pleakage是由扩散区和衬底之间的反向偏置漏电流引起的静态功耗。PMOSNMOSinoutIdIshortIleakageVDDVSSCL可编程逻辑器件与VHDL设计技术CMOS电路的功耗来源{静态功耗zCMOS在静态时,P、N管只有一个导通。由于没有Vdd到GND的直流通路,所以CMOS静态功耗应当等于零。但在实际当中,由于扩散区和衬底形成的PN结上存在反向漏电流,产生电路的静态功耗。静态功耗为:其中:n为器件个数。∑×=nddisVIP)(电流电压)反向电流(可编程逻辑器件与VHDL设计技术CMOS电路的功耗来源{动态功耗zCMOS电路在“0”和“1”的跳变过程中,会形成一条从VDD通过P管网络和负载电容到地的电流Id对负载电容进行充电,产生动态功耗Pdynamic:Pdynamic=KCLVDD2f其中K是在单位时间内的平均上跳次数,f是时钟频率。可编程逻辑器件与VHDL设计技术CMOS电路的功耗来源{短路功耗zCMOS电路在“0”和“1”的转换过程中,P、N管会同时导通,产生一个由VDD到VSS窄脉冲电流,由此引起功耗。z在输入波形为非理想波形时,反相器处于输入波形上升沿和下降沿的瞬间,负载管和驱动管会同时导通而引起功耗。可编程逻辑器件与VHDL设计技术CMOS电路的功耗来源{通常情况下静态功耗占总功耗的1%以下,可以忽略不计,但如果整个系统长时间处于休眠状态,这部分功耗需要进行考虑。{短路功耗在整个CMOS电路的功耗中只占很小的一部分,对于转换时间非常短的电路,Pshort所占的比例可以很小,但对于一些转换速度较慢的电路Pshort可以占到30%左右,平均大约在10%左右。{一般情况下,动态功耗Pdynamic占整个功耗的比例大约为70%~90%。{有些文献将CMOS电路的功耗简单的分为两类:静态功耗和动态功耗。可编程逻辑器件与VHDL设计技术影响功耗的因素{从动态功耗的表达式可看出,在不影响电路性能,即不降低工作频率的前提下,功耗主要取决于3个因素:工作电压、负载电容、开关活动性。{因此功耗优化主要从减小K、CL和VDD三方面着手。{值得注意的是功耗优化是一个整体,单单考虑某一方面是不够的。可编程逻辑器件与VHDL设计技术影响功耗的因素{电源电压的选择z降低电源电压将使功耗下降,但是对于一定的工艺水平(具有确定的阈值电压),降低电源电压将使电路性能下降,当电源电压降低到接近P和N管的阈值电压之和时延迟时间急剧增大。而在较大的电压下,电路速度几乎与电源电压无关。z为提高速度,希望在保证器件可靠性的前提下采用尽可能高的电压,为降低功耗,又希望选择尽可能低的电压。要解决这个矛盾,可以在一个芯片内采用多种电压,对影响速度的关键电路选择较高的电压,对大部分非关键电路则选择用减低的电压。可编程逻辑器件与VHDL设计技术影响功耗的因素{负载电容z在CMOS电路中电容主要由两方面构成:一方面是器件栅电容和节电电容,它们和器件工艺有关。另一方面是连线电容。z改进电路结构,减少所需MOS管数目是减小负载电容、降低功耗的重要途径。采用动态CMOS电路可简化电路。另外采用互补传输晶体管逻辑(CPL),不仅可以简化电路,还可提高速度,是选择之一。z值得注意的是随着工艺的发展,布线电容已经超过器件电容。为了减小电容,在工艺方面可以选择小的器件,物理设计时减小连线长度。可编程逻辑器件与VHDL设计技术影响功耗的因素{开关活动性z在CMOS电路中,功耗和开关活动性息息相关。若信号活动性为0,即使负载电容很大,它也不消耗能量。开关活动性和数据频率f和开关活动率k有关,f描述单位时间内信号到达节点的次数,而活动率k则描述到达节点时信号的翻转几率。z值得注意的是在有些CMOS电路中,伪跳变占据了相当一部分开关活动性,由于此类信号没有任何作用,因此它造成系统功耗的白白损失。z为了降低伪跳变带来的浪费,一种办法是消除伪跳变的产生,另一办法是缩短其传播长度。可编程逻辑器件与VHDL设计技术低功耗设计方法{低功耗设计是一个系统的问题,必须在设计的各个层次上发展适当的技术,综合应用不同的设计策略,达到在降低功耗的同时维持系统性能的目的。{研究证明在不同设计层次上的优化工作对功耗的改善程度是不同的,随着设计层次的提高,改善的程度越大。可编程逻辑器件与VHDL设计技术低功耗设计方法设计层次改善程度行为级50%~90%RTL级20%~50%门级10%~15%晶体管级5%~10%版图级5%可编程逻辑器件与VHDL设计技术低功耗设计方法{下面是一些低功耗设计(DesignforPower,DFP)的基本策略:z权衡面积和性能,使用并行、流水化和分布式计算等方法,用面积或时间换取低功耗;z避免浪费,停掉不用的逻辑和时钟;z使用专用电路而不是可编程逻辑;z使用规则的算法和结构减少控制负荷;z采用新型的低功耗器件和工艺。可编程逻辑器件与VHDL设计技术工艺级的优化技术{工艺的进步使得多层金属布线成为可能。使用上层的金属进行全局互连,可以减小互连电容,从而减小延迟和功耗。{通过加工技术的提高减小芯片和封装的电容,也能改善功耗性能,{由于设计工程师不能决定工艺流程,工艺级的优化通常不包含在DFP的设计方法学中。可编程逻辑器件与VHDL设计技术版图和晶体管级的优化技术{布局布线{电路结构的选择{CLOCK-TREE的生成{晶体管尺寸优化{晶体管顺序调整可编程逻辑器件与VHDL设计技术RTL级和逻辑级的优化技术{在逻辑门级和RTL级电路设计和综合阶段所采用的功耗优化和功耗昀小化技术很多,主要包括:预计算技术、重定时技术、时钟受控技术、路径平衡技术、工艺映射技术、逻辑分解技术、状态分配技术、多级网络优化技术和公共表达式提取技术。可编程逻辑器件与VHDL设计技术门控时钟技术{同步设计中,很大一部分功耗来自时钟。时钟是唯一在所有时间都充放电的信号。时钟信号通常要驱动大的时钟树。而且,很多情况下会引起不必要的门的翻转。门控时钟技术(gatedclock)将电路无计算任务的部分的时钟停下,减少无用功耗。可编程逻辑器件与VHDL设计技术门控时钟技术{电路F根据现态和输入判定电路下一周期是否是空闲周期,如果是,则停掉寄存器R的时钟。避免下一个时钟周期时,组合电路的无用翻转。GCLK就是门控时钟信号。锁存器L的作用是滤掉功能块F可能输出的毛刺。如果组合电路在关键路径上,则F的加入可能使延迟不能满足要求。在综合的时候,使用有限状态机(FSM)的状态转换图(STG)寻找电路的近封闭子集。可编程逻辑器件与VHDL设计技术预计算技术{预计算设计技术是在逻辑级实现的挂起方法,通过加入预计算逻辑,在一定的输入条件下,使所有或部分输入寄存器的负载无效,从而降低了功耗。可编程逻辑器件与VHDL设计技术预计算技术{上图显示了一个预计算比较器的结构,当A与B的昀高位不同时,起预计算作用的异或门会使寄存器2和寄存器3无效,即让这部分电路挂起;而输出比较结果F由一位比较器(MSB)输出。假设首位输入的取值为“0”或“1”的几率是相等的,那么电路被挂起的几率就是0.5,对于位数较多的比较器,功耗降低显著。可编程逻辑器件与VHDL设计技术逻辑优化设计{也叫工艺影射,主要目的是减少信号的翻转活动,它通过将逻辑电路的逻辑功能尽可能的分解,使翻转活动昀小。然后将翻转活动高的结点隐藏到复杂的门里,以此来降低这些结点的等效电容。z(a)是将逻辑功能用昀简单的门表式,(b)是把翻转活动高的结点进行隐藏。逻辑优化设计在不影响电路性能的条件下可以将功耗减少20%。可编程逻辑器件与VHDL设计技术时序调整(retiming){时序调整(retiming)是在流水化的电路中,插入新的寄存器或重新安排寄存器的位置,达到减少门的翻转频率或减少通过流水线的昀长段延迟的目的。可编程逻辑器件与VHDL设计技术组合逻辑综合和优化{逻辑提取:是寻找在逻辑网表中多次重复出现的表达式。用这个表达式的输出节点代替在网表中出现的相同的式子,由此达到节约面积的目的{提取公因子:是在函数的积之和形式中导出公因子。{表达式替换:利用低有效电容的电路块代替网表中的电路。节点消除采用选择性地消除网表中的某些节点。可编程逻辑器件与VHDL设计技术路径平衡技术{路径平衡是指为使某一器件的几个输入信号同时到达,而采用的路径等延迟技术,路径平衡技术能大大减少在该器采用的路径等延迟技术,路径平衡技术能大大减少在该器件输出端产生多余翻转的可能可编程逻辑器件与VHDL设计技术路径平衡技术{a,b同时到达的两信号,期望信号X为一恒0的输出,但由于图(a)所示电路的不平衡,可能造成信号的主剌。而图(b)由于路径平衡而减少这一主剌。{路径平衡技术可以在工艺映射前采用,对逻辑进行分解以达到平衡;也可以在工艺映射后采用,对管腿重新排序分配和插入延时元件以达到平衡。可编程逻辑器件与VHDL设计技术引脚分配{一般情况下,对于库单元功能相同的引脚,在综合时是等价的.但实际上,不同引脚的电容、信号延时等参数是不同的.引脚分配的基本思想就是将活动因子大的信号结点分配到相对功耗小的引脚上.abcdfC11.5C1Togglerate=0.8Togglerate=0.4abcdfC11.5C1Togglerate=0.8Togglerate=0.4可编程逻辑器件与VHDL设计技术系统级的优化技术{软硬件划分z软硬件划分是从系统功能的抽象描述(如C语言)着手,把系统功能分解为硬件和软件来实现。z对于一个系统功能的任务,可通过在微处理器上运行软件来实现和通过专用电路实现,比较两者的功耗得出一个低功耗的实现方案。z软硬件划分的技术处于设计的起始阶段,给降低功耗带来更大的可能。可编程逻辑器件与VHDL设计技术系统级的优化技术{指令级优化z指令集提取,对于确定的处理器,其每条指令的功耗是一定的,选择一个指令集实现系统功能并功耗昀小;z选择合理的指令长度(如16位vs.32位或可变长度),提高程序的代码密度,以减少对存储器访问的功耗;z指令编码优化是通过对应用程序指令的相关性的统计,对指令进行编码优化,使读取指令时总线上的信号反转昀少;z指令压缩,存储器存储压缩后的指令,指令将在进入处理器前被解压。可编程逻辑器件与VHDL设计技术系统级的优化技术{电源管理z可变电压技术{可变电压技术根据系统的不同工作状态对系统性能的不同要求,动态地改变电压以昀大限度地降低功耗。z多电压技术{可变电压技术在时间上改变电压,而多电压技术在空间上使用不同的电压。根据系统不同部分的性能要求不同,使其工作于不同的电压,从而降低系统功耗。z动态功耗管理{动态功耗管理是一种使系统或系统单元在不工作时进入低功耗的休眠状态的控制技术。{该技术的核心就是如何根据系统的状态信息决定系统何时进入低功耗的休眠状态。可编程逻辑器件与VHDL设计技术系统级的优化技术{总线的低功耗设计z总线由于电容大、数据传输密度高,形成大量的功耗。z总线的低功耗设计包括:{减小总线上信号的电压变化幅度(通常小于1V),代价是总线和功能模块之间的信号电平的变换电路;{对总线进行分段控制。根据总线和功能模块连接的物理结构,在信号传输时,隔断总线的无关部分,从而减小总线的实际电容,以达到降低功耗的作用;{通过对总线数据的编码,使数据在总线上传输时引起的电平反转减少(即减小了活动因子)。可编程逻辑器件与VHDL设计技术系统级的优化技术{通过对总线使用合适的编码技术,可以使翻转活动昀小化,从而降低功耗。z如Gray-code通过对二进制数编