低功耗FPGA设计技术
一、前言 选用智能器件,辅以正确的设计技巧增加了符合功率预算的可能性。尽管可编程逻辑器件(PLD)有很好的性能,然而却以牺牲功耗为代价。Actel公司的抗熔断型FPGA提供低功耗且高性能应用的理想解决方案。本文涵盖Actel eX系列以及SX/SX-A系列器件,详细描述了器件的结构特点与设计技巧。 二、抗熔断型FPGA的结构与特点 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以及内部晶体管的工作电流、内部连线的电阻、输入与三态电驱动器上的拉或下拉电阻。在易失性技术中,保持编程信息也需一定的静态功率。抗熔断是一种非易失性技术,因此信息存储不消耗静态电流。 下面介绍几种降低静态功耗的设计方法: ·驱动输入应有充分的电压电平,因而所有晶体管都是完全通导或关闭的。 ·由于I/O线上的上拉或下拉电阻要消耗一定的电流,因此尽量避免使用这些电阻。 ·少用驱动电阻或双极晶体管,这些器件需维持一个恒定电流,从而增加了静态电流。 ·将时钟引脚按参数表推荐条件连接至低电平。悬空的时钟输入会大大增加静态电流。 ·在将设计划分为多个器件时,减少器件间I/O的使用。 eX器件LP方式引脚的使用 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的模块和连线结构具有低功率特片,使用附加逻辑模块来补偿较低时钟速率还是能节省功率的。 |