低功耗FPGA设计技术
时间:11-08
来源:互联网
点击:
四、减少开关活动量的设计方法
减少开关动作可在设计流程中的各个级别加以控制。当然,在设计周期最初阶段的结构确定影响最大。设计者应统盘考虑时钟门控、总线时分复用、减少毛刺、使用功率低的数据通路元件、减少高开关信号的逻辑电平等。下面叙述某些常用的技巧。
时钟门控
这是最广泛使用的方法,即在器件末使用时截断时钟来降低功耗。然而正确地截断时钟十分重要。门控信号与门控逻辑应正确地设计,以消除时钟线上的任何毛刺。再者,门控逻辑会增加时钟的延时,影响建立时间与保持时间。由于抗熔断是一种极快速的技术,引入的延时很小且容易控制。在使用时钟门控时,用户应仔细地安置门控逻辑,将时钟网络的延时降低到最小限度。典型的门控逻辑如图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的模块和连线结构具有低功率特片,使用附加逻辑模块来补偿较低时钟速率还是能节省功率的。
减少开关动作可在设计流程中的各个级别加以控制。当然,在设计周期最初阶段的结构确定影响最大。设计者应统盘考虑时钟门控、总线时分复用、减少毛刺、使用功率低的数据通路元件、减少高开关信号的逻辑电平等。下面叙述某些常用的技巧。
时钟门控
这是最广泛使用的方法,即在器件末使用时截断时钟来降低功耗。然而正确地截断时钟十分重要。门控信号与门控逻辑应正确地设计,以消除时钟线上的任何毛刺。再者,门控逻辑会增加时钟的延时,影响建立时间与保持时间。由于抗熔断是一种极快速的技术,引入的延时很小且容易控制。在使用时钟门控时,用户应仔细地安置门控逻辑,将时钟网络的延时降低到最小限度。典型的门控逻辑如图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的模块和连线结构具有低功率特片,使用附加逻辑模块来补偿较低时钟速率还是能节省功率的。
电路 FPGA CMOS 电阻 电容 电流 电压 总线 DSP 相关文章:
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- FPGA按键模式的研究与设计(03-24)
- 周立功:如何兼顾学习ARM与FPGA(05-23)