您好,欢迎访问三七文档
第三章功耗结构设计本章讨论数字设计的三个主要物理性质之一:功耗。同时,我们也会讨论在FPGA中如何用结构化的方法来对功耗进行优化。与ASIC器件(ApplicationSpecificIntegratedCircuits)相比,在具相似处理能力的情况下,FPGA的功耗要大得多,它并不符合低功耗的设计。一部分FPGA厂商的确推出了一些低功耗的CPLD(ComplexProgrammableLogicDevice),但是在器件的尺寸和功能方面都有很多限制,因此有时它们无法满足那些具有大量计算功耗的应用。本节我们将讨论在CPLD和FPGA的设计中,如何实现功耗效率的最大化。基于CMOS电路中,动态功耗与逻辑门以及金属走线上的寄生电容的充电,放电有关。流经一个电容的电流,可以由下面的等式计算:I=V*C*f上式中:I表示流过电容的总电流,V表示电容两端的电压,C表示电容,f表示电压的频率。那么,为了减少电流的消耗,我们必须减少等式右边三个参数。在FPGA设计中,电压一般是固定的,这样就只有改变C和f这两个参数来控制总电流。电容C是直接与在一定时间内开启的逻辑门的数量,以及连接到这些逻辑门的走线长度相关。频率f直接与时钟的频率相关。所有的降功耗技术最终都是以降低这两个参数之一为目标。在本章的内容中,我们将讨论以下几个主题:时钟控制对于动态功耗的影响门控时钟的问题——控制门控时钟的偏斜控制输入使功耗最小核电压供电的影响关于双沿触发的触发器的一些原则在终端减少静态功耗通过减少高频网络的走线长度的方法来降低功耗,需要对布局布线的相关问题进行讨论,这部分内容将会在第15章“布局平面”中讨论。1.1时钟控制在同步数字电路中,最有效的,并且也是使用最广泛的降低动态功耗的技术是:在数据处理过程中某些时候不处于工作状态的特殊区域,将时钟动态的去使能。因为FPGA中的动态功耗与系统时钟的切换直接相关,那么暂时地停止设计中非活动区域的时钟是降低此类功耗的最直接的方法。建议使用触发器上的时钟使能管脚或者全局时钟复用器(在Xilinx器件中就是BUFGMUX单元)的方法来实现。如果在某些设计中没有提供时钟使能单元,设计者有时需要直接使用门控系统时钟。需要注意的是,这在FPGA中是不提倡的方法,但本节将会讨论与直接门控系统时钟有关的问题。应该使用触发器的时钟使能输出端和全局时钟复用器这类的时钟控制资源代替直接使用门控时钟的方法。本节的讨论中,假设读者已经对FPGA中的时钟原则比较熟悉。通常情况,FPGA属于同步器件,当由于门控时钟或者异步接口引入了多个时钟域的时候,就会出现一些问题。关于时钟域的更深入的讨论,请参见第6章。图3.1简单的门控时钟:差的设计实例如3.1所示,这是一个较差的实例,设计里使用了一个简单的门控时钟。在这样的时钟拓扑结构中,当“MainClock”有效地时候所有的触发器和与之对应的组合逻辑都随之有效(开启)。然而,在面虚线框内的逻辑只有当“ClockEnable”信号为1的时候才会有效。这里我们把“ClockEnable”信号作为门控信号或者使能信号。如上文所说的,通过逻辑使能一部分电路,设计者尝试着通过减少逻辑单元数量(C)以及对应逻辑门的平均切换频率(f)的方法成比例的减小动态功耗。门控时钟对于减小动态功耗有直接的帮助,但是它增加了设计实现与时序分析的难度。在继续讨论实现的细节之前,务必认识到仔细的时钟规划对于FPGA设计是何等重要。系统时钟是所有同步数字电路的核心。EDA(ElectronicDesignAutomation)工具是基于系统时钟来进行优化,综合,布局以及时序分析等。系统时钟非常重要,它的特征必须首先确定,用以驱动设计实现的进程。即使经过逻辑门控制的时钟只有很细微的变化,仍然要把逻辑门输出用来驱动时钟管脚的这个新的网络看作另外一个时钟域。在这个时钟域内,这个时钟网络需要一个低偏斜的路径来驱动所有的触发器,这一点与产生它的系统时钟是一致的。对于ASIC设计者来说,这个低偏斜的路径可以通过定制的时钟树获得。但是在FPGA中由于低偏斜路径的布线资源是固定的并且有数量的限制,这就给设计者提出了难题。门控时钟引入了新的时钟域,并且会对FPGA设计带来困难。下面几节我们重点讨论门控时钟带来的问题。1.1.1时钟偏斜在研究门控时钟有关的话题之前,我们必须首先简要的回顾一下时钟偏斜的问题。在时序逻辑设计中,时钟偏斜的概念非常重要。在图3.2中,第一级触发器与第二级触发器之间时钟信号的传输延时被看作零。如果信号通过组合逻辑有一个正的延时,那么电路的时序裕量就取决于“时钟周期”与“组合逻辑延时+走线延时+触发器建立时间”之间的相对关系。信号在每个时钟有效沿,只能在一级触发器的两端传输。然而对于第二级和第三级触发器这种情况却有所不用。由于两个触发器之间的时钟路径存在延时,因此时钟的有效边沿将不会在两个触发器输入端同时出现。相反的,由于时钟路径的延时,第三级触发器输入的时钟有效边沿将会延后一段时间出现。图3.2时钟偏斜如果通过逻辑的延时(定义为dL)小于时钟路径的延时(定义为dC)。那么将会出现这种情况:通过第二级触发器的信号将会先于时钟信号的有效沿到达第三级触发器。当时钟有效沿到达的时候,这个信号就会穿过第三级触发器。那么,这个信号在一个时钟有效边沿穿过了第二级和第三级触发器。这种情形将会导致电路灾难性的失败,因此在进行时序分析的时候必须把时钟偏斜考虑进去。另外,注意到时钟偏斜与时钟频率是相互独立的也很重要。即使不考虑时钟频率的影响,上文提到的这种“信号飞越”的案例同样会出现。在FPGA设计中,对时钟偏斜错误的处理会导致灾难性的失败。1.1.2控制偏斜FPGA提供的低偏斜资源能够确保时钟信号在其所有的输入端尽量一致(在ps级以内)。在图3.3所示的案例中,时钟网络上引入了一个逻辑“与门”。这条时钟路径肯定会被从低偏斜的全局资源中移除,连接到这个“与门”上。这里在时钟线上增加了偏斜,其根本问题和前文提到的案例是一样的:时钟的门延时(dG)加上走线延时将会大于信号的逻辑延时(dL)。为了解决这个潜在的问题,必须给实现和分析的工具一组约束,这样由于门控引起的与偏斜有关的任何时序问题都能得到正确的分析和解决。图3.3门控时钟引起的时钟偏斜:差的设计实例作为一个例子思考下面模块,里面使用了门控时钟://Poordesignpracticemoduleclockgating(outputdataout,inputclk,datain,inputclockgate1);regff0,ff1,ff2;wireclk1;//clocksaredisabledwhengateislowassignclk1=clk&clockgate1;assigndataout=ff2;always@(posedgeclk)ff0=datain;always@(posedgeclk)ff1=ff0;always@(posedgeclk1)ff2=ff1;endmodule在上面的例子中,在数据路径的触发器之间没有逻辑,但是在时钟路径上有逻辑,如图3.4所示:图3.4时钟偏斜作为主要的延时不同的工具在处理这种情况的时候,会采用不同的方法。一些像Synplify这样的工具会默认地移除门控时钟,产生一个纯粹的同步设计。其他工具在没有时钟约束的情况下会忽略偏斜的问题,但是一旦对时钟作了正确的约束,工具将会自动添加一个延时。与ASIC设计不同,在FPGA设计中保持时间错误(holdviolations)很少是由于逻辑模块和布线资源内置的延迟引起的。然而如上文提到的,在时钟走线上过大的延迟会导致保持时间错误。因为数据在连个触发器之间传输时间少于1ns,而时钟则要将接近2ns,因此数据将会领先时钟大约1ns达到下一级,这将会导致严重的时序错误。取决于综合工具,有时候可以通过添加时钟约束来修正这个问题。但是这种人为地在数据路径添加布线延时从而消除保持时间错误的方法,在随后的分析报告中有可能显示也可能不会显示出来。门控时钟导致的保持时间错误,可能会也可能不会被实现工具纠正。值得再次重申,绝大部分厂商具备了高级时钟缓存技术,能够在时钟树的某一个分支上提供时钟使能。这种方式总是优于使用逻辑单元的门控时钟方式。1.2输入控制通过控制输入信号的摆率(slewrates)来降低功耗方法经常被人忽视。在上拉二极管和下拉二极管同时导通的时候,CMOS输入缓冲会产生很大的电流。薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂
本文标题:第三章结构功耗
链接地址:https://www.777doc.com/doc-2182840 .html