一、前言
现在,有许多单片机应用领域,都是用电池供电,节能成为设计工程师普遍关心的问题。希望大家就这方面展开讨论。以下提供一些讨论的方向:
1、如何降低系统功耗?(软件?硬件?)
2、各位在这方面有何经验教训?(可以拿出来与大家分享)
3、各种芯片的功耗比较?
4、SLEEP模式应用的注意事项?
5、一些新型的节能器件的介绍?
6、其它与低功耗设计相关的话题?……
FPGA在各种电路设计中广泛应用,如何对FPGA系统进行低功耗优化成为一个重要的现实问题。从早的FPGA功耗模型的建立[1],到较完善的 FPGA功耗估算模型[2],再到现在功耗估算工具的出现[3],FPGA设计时对功耗的预估已经越来越准确,节约功耗的方法也越来越多样。本文基于 FPGA功耗的预估,提出将影响功耗的因素做为功耗函数的参数,根据参数取样并预估样点功耗找到功耗函数的值,从而得到参数以优化系统设计并节约系统功耗的方法。本文涵盖Actel eX系列以及SX/SX-A系列器件,详细描述了器件的结构特点与设计技巧。
二、抗熔断型FPGA的结构与特点
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA.因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。
爱特公司 (Actel Corporation) 是非易失性、低功耗及混合信号FPGA,以及可编程逻辑解决方案的领导厂商。爱特致力通过运用业界功耗的FPGA系列,以及独有的混合信号FPGA,在芯片及系统级上进行功耗管理,为系统设计人员提高竞争优势。爱特公司于1985年成立,是纽约纳斯达克交易所 (NASDAQ) 上市企业,代号ACTL.爱特于上海、香港、台北、东京和首尔设有办事处,并在中国大陆和亚洲主要城市建立了完善的分销商网络。
Actel公司的抗熔断型FPGA是用先进的CMOS工艺制作的,内部采用的金属-金属抗熔断元件。抗熔断互连就象纯金属互连一样,而与用晶体管开关的SRAM互连截然不同。抗熔断结构消除了CRAM互连开关中图腾柱结构的功耗,并且缩小了器件的尺寸,使全部连线资源都位于硅片的顶部。这种结构可以更形象地用掩埋在金属层上的"模块海洋"来描述,极大地减少了芯片的尺寸以及开关的电阻与电容,从而降低了功耗(图1)。
分段式连线资源
该类器件采用分段式连线资源,其容量是连线的长度,宽度和负载的函数。分段式连线较全长式短,因而电容也较小。分段结构还允许切断未使用连线,进一步减小了电容。当信号需要传输较长距离时,可将多个线段连接在一起,这是通过连线开关完成的。由于这类开关是快速且低功耗的,因此不会增加功耗与延时。eX以及SX/SX-A结构采用称为Fastconnet与Directconnect两种创新的局部连线资源将逻辑块连接在一起。此外,器件还具有由不同段长度组成的其它连线资源,以备需要较长距离的连线信号连接使用。
低功耗模式引脚
eX器件提供一个专用的低功耗引脚,这是降低功耗的又一种手段。它能关闭所有的内部电荷泵,将静态电流降低至几乎为0.当然用户必须细心地处理某些边缘效应,这将在下文详细讨论。
细晶粒结构
粗晶粒PLD与FPGA逻辑的效率比Actel细晶粒逻辑块低,因而浪费了很多逻辑功能。Actel eX,SX/SX-A系列是在细晶粒4输入MUX基本结构上构建的,且备有多个控制输入。一个单元能实现多达5个输入的逻辑功能,使逻辑映射功能更有效。这种细晶粒结构与大量的且分段的连线资源相结合,有助于在不牺牲性能的前提下降低功耗。
非易失性与通电时即时工作
由于Actel FPGA采用抗熔断技术,本质上是非易失性的,在通电时能即时工作,器件在通电序列中无需进行重构,信息是性编程的,信息的存储与保持不消耗电流,从而减小静态电流,降低功耗。器件不必携带通电系统引导程序的PROM,因而是一种高性能的单片解决方案。
三、降低功耗的设计技巧
基于CMOS的设计主要消耗三类切率:内部的(短路)、漏电的(静态的)以及开关的(电容)。当门电路瞬变时,VDD与地之间短路连接消耗内部功率。漏电功耗是CMOS工艺普遍存在的寄生效应引起的。而开关功耗则是自负载电容,放电造成的。开关功耗与短路功耗合在一起称为动态功耗。下面介绍降低静态功耗和动态功耗的设计技巧。
降低静态功耗
虽然静态电流与动态电流相比可以忽略不计,然而对电池供电的手持设备就显得十分重要,在设备通电而不工作时更是如此。静态电流的因素众多,包括处于没有完全关断或接通的状态下的I/O以及内部晶体管的工作电流、内部连线的电阻、输入与三态电驱动器上的拉或下拉电阻。在易失性技术中,保持编程信息也需一定的静态功率。抗熔断是一种非易失性技术,因此信息存储不消耗静态电流。
eX器件LP方式引脚的使用
休眠。一般的系统都不会到了忙不过来的地步,适当的休眠还是可以节省一些功耗的,在一些 简单的系统,多抽时间休眠成了省电的关键,你看别的芯片都不耗电,只有单片机了,它就是关 键了,在有些时候,提高主频反而会获取更多的休眠时间,反而使系统功耗更小了。但是值得注 意的是,经常性的切换休眠和工作状态会让电源产生mV级的波动,特别对于很多线性稳压器只有 100mA以内的输出能力的情况更明显,这样的波动或许会影响系统内的AD和一些其他模拟电路, 值得注意。
Actel eX系列设计了特殊的低功率"休眠"模式。在该引脚驱动至高电平800ns后,器件进入极低功率待机模式,待机电流小于100μA.在低功率模式下,所有I/O(除时钟输入外)都处于三态,而内核全部断电。由于内核被断电,触发器中存储的信息会丢失,在进入工作模式(在引脚驱动至低平200ms后)时,用户需再次对器件初始化。同样,用户也应关闭所有通过CLKA、CLKB以及HCLK输入的时钟。然而这些时钟并不处于三态,时钟就可进入器件,从而增加功耗,因此在低功率模式下,时钟输入必须处于逻辑0或逻辑1.
有时用户很难阻止时钟进入器件。在此场合,用户可使用与CLKA或CLKA相邻的正常输入引脚并在设计中加进CLKINT.这样,时钟将通过靠近时钟引脚的正常输入进入器件,再通过CLKINT向器件提供时钟资源。
采用这种输入电路后,由于常规I/O是三态的,因此用户不必担心时钟进入器件。当然,增加门电路会产生0.6ns的较大时钟延时,幸好这在多数低功率设计中是可以接受的。注意应将与CLKINT缓冲器相关的CLKA或CLKB引脚接地。
此外还要注意,CLKINT只可用作连线时钟,HCLK并不具备将内部走线网连接到HCLK的能力,因而HCLK资源不能被常规输入驱动。换句话说,如果使用LP引脚就不能使用HCLK;使用HCLK时就应在外部截断时钟信号。
降低动态功耗
动态功耗是在时钟工作且输入正在开关时的功耗。对CMOS电路,动态功耗基本上确定了总功耗。动态功耗包括几个成分,主要是电容负载充电与放电(内部与I/O)以及短路电流。多数动态功率是内部或外部电容向器件充、放电消耗的。如果器件驱动多个I/O负载,大量的动态电流构成总功耗的主要部分。
对设计中给定的驱动器,动态功耗由下式计算
p=CL×V 2 DD×f
式中,CL是电容负载,VDD是电源电压,f则是开关频率。总功耗是每个驱动器功耗之总和。
由于VDD是固定的,降低内部功耗就要降低平均逻辑开关频率,减少每个时钟沿处的逻辑开关总数、减少连线网络,特别是高频信号连线网络中的电容值。对低功率设计,需要从系统至工艺的每个设计级别中采取相应预防措施,级别越高,效果越好。
四、减少开关活动量的设计方法
减少开关动作可在设计流程中的各个级别加以控制。当然,在设计周期初阶段的结构确定影响。设计者应统盘考虑时钟门控、总线时分复用、减少毛刺、使用功率低的数据通路元件、减少高开关信号的逻辑电平等。下面叙述某些常用的技巧。
时钟门控
这是广泛使用的方法,即在器件末使用时截断时钟来降低功耗。然而正确地截断时钟十分重要。门控信号与门控逻辑应正确地设计,以消除时钟线上的任何毛刺。再者,门控逻辑会增加时钟的延时,影响建立时间与保持时间。由于抗熔断是一种极快速的技术,引入的延时很小且容易控制。在使用时钟门控时,用户应仔细地安置门控逻辑,将时钟网络的延时降低到限度。典型的门控逻辑如图3所示。
防护技巧
这是一种在块输出不用时防止输入信号使块开关工作的技巧。例如考虑一个乘法器,它的输出仅在某些特定条件下才使用。在此场合可增添一个锁存器,这样每当输出不用时,乘法器的输入将阻止不必要的开关动作带入乘法器(图4)。一个锁存器只需一个组合单元,并不占用过多芯片面积。
总线复用
高密度设计的布局必须留有空地并相当地展开,才可完成,这便导致连线长,每个线上开关多,这些因素产生不良的时序结果并增加了功耗。此外,块中的逻辑趋向于分类集结在一起,总线跨越不同块时需走过较长的距离。在一个设计中采用时分复用宽总线技术,可减少总线的数量,有利于时序和功耗。再者,在DSP设计中,数据是相关的,这表明大多数数据位并未改变状态。携带相关数据的总线应尽量复用在一起,进一步减少MUX、DEMUX逻辑中的开关活动(图5)。
减少毛刺与流水作业
毛刺是信号趋于稳定前不必要的开关动作。每个时钟沿改变了寄存器间组合逻辑的输入。对每个节点而言,不同的输入路径有不同的延时,它将多次改变状态。节点上的毛刺与该节点的逻辑深度,也就是节点至初输入的逻辑门个数有关。到达节点的逻辑锥体越深、越宽,毛刺也越多。降低逻辑深度,减少逻辑锥体的开关输入可减少这类毛剌。流水线、时序驱动合成以及逻辑单元的合理映射能减少逻辑级的数量。
流水线是又一种技巧,它在很长组合路径的中点引入寄存器。寄存器会增加等待时间,却能增加速度,减少逻辑级。引入附加寄存器增加了一定的功耗,然而能极大地减少毛剌。例如,一个用ACTGEN生成的流水线16×16位不带符号乘法器所消耗的功率比未使用流水线的同样器件少。
降低频繁开关转换信号的逻辑深度
重新安排"if-else"表达式,用户可将毛刺或快变化信号移至逻辑锥体的后部。这样既减少开关动作的传播,又降低了功耗。在合成时,合成工具总是试图降低高开关概率输入信号的逻辑级,当输入具有同等开关概率时,采用平衡树来合成逻辑。
选择功率低的数据通路元件
不同的数据通路元件对功耗产生不同的影响。例如,脉动进位具有少扇出,从而减少了逻辑面积,降低了功耗;然而它又使用了深开关传播,因此就有一个利弊权衡,折衷考虑。译码器通常是重负荷的,向它提供一个使能信号可在译码器不使用时防止输出的不必要开关动作。对计数器,Gray计数器具有开关率,应经常使用。对内部存储器寻址,也应使用Gray寻址。
状态机编码
状态机在传统上是按二进制编码的。然而采用Gray编码,相邻状态可减少瞬变的次数。有时不可能在所有状态中使用Gray编码,则应在状态矢量中增加触发器的数量以减少开关的次数。另一种方法是使用one-hot编码,虽然该编码使用的触发器较多,即可减少组合逻辑的使用,在带多个输出且每个输出是几个状态的函数的状态机中更是如此。根据状态机的形式,设计者可在Gray、One-hot或二进制间进行选择。
使用异步逻辑
虽然并不经常推荐使用异步逻辑,有时它也能降低功耗。一个例子是前文已提及的时钟门控。时钟大约消耗30%的总动态功率。在eX、SX/SX-A系列中,每个序列元件具有连线时钟的时钟选择逻辑、一个硬连时钟(HCLK)或常规连线资源。对每个已使用的触发器,它的时钟选择逻辑以时钟速率开关。减少时钟输入开关有助于降低功耗。例如一个异步二进制计数器的功耗仅为同步计数器的一半。当然,异步逻辑会带来诸如竞争状态,保持时间出错的时序问题。因此使用异步逻辑时特别推荐运行极小-极大条件下的时序模拟法。
降低时钟速率
虽然时钟速率是固定的,有时也可采用低速并行而不是高速串行的方案。上文已提及,每个触发器都有相应的时钟选择逻辑,时钟切耗占总功耗的很大一部分。任何旨在减少时钟开关动作的措施都有助于降低功耗。由于Actel的模块和连线结构具有低功率特片,使用附加逻辑模块来补偿较低时钟速率还是能节省功率的。
结束语
虽然低功耗一直是个很重要的考虑因素,但如今其意义更甚以往,低功耗成为现在设计人员面临的重要挑战。如今对产品的要求,已从之前单纯追求高性能、小面积转为对性能、面积、功耗的综合要求。但低功耗设计还面临着诸多问题,如电源管理、应用软件、电池的发展、芯片的设计制造,应该说功耗问题实际上是一个系统工程。对于工程师而言,如何在设计中平衡功耗与性能,如何将设计变得更简捷,如何帮助产品更快地投入市场,这一切都是设计工作中实实在在的难题。低功耗设计创新论坛的举办,目的就在于能够将目前的低功耗设计及应用资源共享,还能够令工程师与功耗问题共同讨论低功耗未来,同时也将不同厂商、不同方向的低功耗设计进行比较,期望能够对于低功耗设计有更深的理解与认识。对电子系统来说,减少功耗可以带来很多好处,除了简化系统的散热处理及系统集成方面的工序、节约成本外,还能提高系统可靠性、降低热噪声干扰等。对便携式仪器、野外工作仪器等电池供电的系统来说,还能延长电池寿命,减少更换电池的麻烦。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。