组合逻辑电路的时序特征包括传播延迟(propagation delay)和最小延迟(contamination delay)。传播延迟tpd是当输入改变直到一个或多个输出达到它们的最终值所经历的最长时间。最小延迟tcd是当一个输入发生变化直到任何一个输出开始改变的最短时间。
        在A发生转变tcd时间后,Y开始改变;在tpd时间后,Y的新值稳定下来。

        存储器件的基本模块是一个双稳态(bistable)元件,该元件有两个稳定状态。具有N种稳态的元件可以表示log2N位的信息,所以双稳态元件可以存储1位信息。交叉耦合反相器的状态包含在二进制状态变量Q中。

        虽然交叉耦合反相器可以存储1位的信息,但因为用户没有控制状态的输入,所以它并没有什么实用价值。然而,其他的双稳态元件,比如锁存器和触发器,提供了可以控制状态变量值的输入。
        SR锁存器是最简单的时序电路。如图所示,它由一对交叉耦合的或非门组成。与交叉耦合反相器一样,SR锁存器是一个在Q上存储1位状态的双稳态元件。但是,状态可以通过输入S和R控制。当R有效时,状态复位为0。当S有效时,状态设置位为1。当S和R都无效时,状态保持旧值不变。

        当SR锁存器中的S和R同时有效时,其输出不确定,使用起来很不方便。而且,输入S和R混淆了时间和内容。当输入有效时,不仅需要确定内容是什么,而且还需要确定何时改变。将内容和时间分开考虑将使电路设计将变得简单,D锁存器解决了这些问题。它有2个输入:数据输入D,用来控制下一个状态的值;时钟输入CLK,用来控制状态发生改变的时间。

        一个D触发器可以由反相时钟控制的两个背靠背的D锁存器构成,如图所示。D触发器在时钟上升沿将D复制到Q,在其他时间D触发器保持原来的状态。

        一个N位寄存器由共享一个公共CLK输入的一排N个触发器组成,这样寄存器的所有位同时被更新。
        带使能端的触发器:

        带复位端的触发器:

        晶体管级锁存器和触发器的设计:
        一个紧凑D锁存器可以用一个单独的传输门构成,如图所示。当CLK=1时,锁存器透明。当CLK=0时,锁存器不透明。           

     
        这种锁存器有两个主要缺点:
        1、输出结点浮空:当锁存器不透明时,任何门都不保存Q值。所以Q称为浮空(floating)结点或者动态(dynamic)结点。经过一段时间后,噪声和电荷泄漏将干扰Q的值。
        2、没有缓冲器:没有缓冲器将在众多商业芯片中造成故障。即使在CLK=0时,如果将D值拉成一个负电压的噪声尖峰,也可以打开nMOS晶体管,使锁存器透明。同样,即使当CLK=0时,大于VDD上的D的噪声尖峰也可以使pMOS晶体管透明。由于传输门是对称的,所以这使得在Q上的噪声可以反向驱动而影响输入D。通用规则是传输门的输入或时序电路的状态结点都不应暴露在有噪声的外部世界中。
        下图显示了一个在现代商业芯片中由12个晶体管构成的D锁存器。它也可以用时钟控制的传输门来构成,但是它增加了反相器I1和I2作为输入和输出的缓冲器。锁存器的状态保存在结点N1上。反相器13和三态缓冲器TI,给N1提供反馈,使N1成为固定结点。当CLK=0时,如果在N1上产生一个小的噪声,则T1将驱动N1回到有效的逻辑值。

        如图显示了由两个静态锁存器构成的D触发器。去除了一些多余的内部反相器,所以这个触发器只需要20个晶体管。

        锁存器和触发器是时序电路的基本构件。D锁存器是电平敏感的,而D触发器是边沿触发的。当CLK=1时,D锁存器是透明的,允许输入D传输到输出Q。D触发器在CLK的边沿将D复制到Q。在其他时候,锁存器和触发器保持原来的状态不变。寄存器由共享一个公共CLK信号的一排多个D触发器构成。☆ ☆ ☆
        奇数个反相器构成的环称为环形振荡器,这个电路没有稳定的状态,称为不稳定态(unstable)或者非稳态(astable)。环形振荡器的周期取决于每个反相器的传播延迟。环形振荡器是零输入和一个(周期性改变的)输出的时序电路。

        它包含了称为环路(cyclic path)的环,它的输出直接反馈到输入。因此是时序电路而不是组合电路。组合逻辑没有环路和竞争。如果将输入应用到组合逻辑中,输出总是在传播延迟内稳定为一个正确的值。但是,包含环路的时序电路存在不良的竞争或不稳定的行为。
        为了避免这些问题,设计师在路径中插入寄存器来断开环路。这将电路转变成组合逻辑电路和寄存器的集合。寄存器包含系统的状态,这些状态仅仅在时钟沿到达时发生改变,所以我们说状态同步于时钟信号。如果时钟足够慢,使得在下一个时钟沿到达之前输入到寄存器的信号都可以稳定下来,那么所有的竞争都将被消除。
        一个电路是同步时序电路,如果它由相互连接的电路元件构成,且需要满足以下条件:

        非同步的时序电路称为异步(asynchronous)电路。单个触发器是一最简单的同步时序电路。两种常见的同步时序电路称为有限状态机和流水线。
        同步时序电路可以用图3-22中的形式来描述。这些形式称为有限状态机(Finite State Machine,FSM)。这个名字源于具有k位寄存器的电路可以处于2^k种状态中的某一种唯一状态。一个有限状态机有M个输入、N个输出和k位状态。在Moore型有限状态机中,输出仅仅取决于机器的当前状态。在Mealy型有限状态机中,输出取决于当前状态和当前输入。


        一般来说,任何数字设计都可以分为两大部分:控制器和数据通路。其中控制器可以看作是整个设计的头脑,其中往往包括一个或多个有限状态机(FiniteStateMachine,FSM)。而数据通路则是一个或多个功能模块的集合。
        由于有限状态机是控制器的主要组成部分,因此,如何在FPGA上高效地实现有限状态机便成了一个重要的话题。从数字设计的角度来看,有限状态机主要由以下两部分组成:
        在一般的数字IC设计中,其设计目的往往是尽量减少触发器的数量。所以对于有N个不同状态的有限状态机,只需要使用IbN个触发器就可以实现状态寄存器。然而,FPGA的内部结构不同于普通的数字芯片,由于FPGA的逻辑单元本身都包含有触发器,所以触发器往往不是减小设计占用面积的关键。

        相反地,在FPGA中的设计瓶颈最终都会反映在布线资源上,而组合逻辑通常会大量消耗布线资源。这是因为组合电路只能通过查找表来实现。而大规模的组合逻辑则需要占用多个查找表。与触发器不同的是,查找表和查找表之间的连接只能通过布线资源来实现。对同一个功能设计来说,当其时序逻辑(触发器)的规模较小时,往往意味着更大的组合逻辑规模,反之亦然。
        基于以上原因,当用FPGA实现有限状态机时,业界通常的做法是对有限状态机采用独热编码(One Hot Encoding),即对N状态的有限状态机,采用N个触发器来做状态寄存器,而不是通常的lbN个触发器。在任何时刻,这N个触发器中只有一个为高电平,其余都为低电平,相当于每个触发器对应一个合法状态,这样虽然增加了触发器的数量,但是也相应减少了组合逻辑的规模,从而达到节省布线资源的目的。而增加触发器的数量对FPGA来说是可以接受的,因为如前文所述,触发器往往并不是FPGA中的最稀缺资源。
        如一个三分频计数器:


  时序逻辑的时序:

        时序元件的孔径时间分别用时钟沿前的建立时间(setup time)和时钟沿后的保持时间(hold time)定义。正如静态约束限制我们使用在禁止区域外的逻辑电平,动态约束限制我们使用孔径时间处改变的信号。
        时钟周期应该足够长,以便使所有信号都稳定下来。这限制了系统的速度。在真实的系统中,时钟不能准确地同时到达所有的触发器。这个时间变量称为时钟偏移(clock skew),它进一步增加了必要的时钟周期。
        在面对真实的世界时,动态约束往往是不可能的满足。比如考虑一个通过按钮输入的电路,一只猴子可能在时钟上升时按下了按钮。此时触发器捕获了一个0~1之间的值,这个值不可能稳定到一个正确的逻辑值,这种现象称为亚稳态。解决这种异步输入的方法是使用同步器,同步器产生非法逻辑值的概率非常小(但是不为0)。
        当时钟上升时,输出在时钟到Q的最小延迟tccq开始改变,并在时钟到Q的传播延迟tpcq内达到最终值。它们分别代表了通过电路的最快和最慢延迟。为了电路对输入正确采样,在时钟上升沿到来前,输入必须在建立时间(setup time)内保持稳定,在时钟上升沿后,输入必须保持至少保持时间(hold time)t内保持稳定。建立时间和保持时间统称为电路的孔径时间(aperture time),因为它是输入保持稳定状态的时间总和。☆ ☆ ☆

        1.建立时间约束
        为了满足R2的建立时间,D2必须在不迟于下一个时钟沿之前的建立时间前稳定。所以我们得出了最小时钟周期的等式:

        在商业设计中,时钟周期经常由研发总监和市场部提出(以确保产品的竞争性)。而且,制造商确定触发器时钟到Q的传播延迟tpcq和建立时间tsetup。因此,可以重写上式来确定通过组合逻辑的最大传播延迟,这是设计师经常只能控制的一个变量。

        在圆括号内的项tpcq+tsetup称为时序开销(sequencing overhead)。理想状态下,整个周期时间Tc都应用于组合逻辑中有用的计算,其传播延迟为tpd。但是,触发器的时序开销占用了周期时间。上式称为建立时间约束(setup time constrain)或最大延迟约束(max-delay constrain),因为它取决于建立时间,并限制了通过组合逻辑的最大延迟
        2、保持时间约束
        寄存器R2也有保持时间约束。寄存器的输入D2必须保持不变直到在时钟的上升沿之后thold的某些时间。根据图3-40,在时钟上升沿之后只要tccq+tcd,D2就可能变化。所以,我们可以得到:

         tccq是从时钟上升沿到Q1开始改变的最小延迟,tcd是从Q1开始改变到D2改变的最小延迟。它们是触发器的属性,通常不能被设计人员控制。重新排列上式,可以得到组合逻辑的最小延迟:

        上式称为保持时间约束或最小延迟约束(min-delay constrain),因为它限制了通过组合逻辑的最小延迟
        我们已经假定任何逻辑元件都可以互连而不会导致时序问题。尤其是,希望图3-41所示的2个触发器可以直接级联,而不导致保持时间问题。

        在此情况中,因为在触发器之间没有组合逻辑,所以tcd=0,代入得到:

        换句话说,一个可靠触发器的保持时间比它的最小延迟短。经常将触发器设计成thold=0, 于是上式总是可以满足的。然而,保持时间约束又非常重要。如果它们不能得到满足,则唯一的解决办法是重新设计电路以便增加组合逻辑的最小延迟。与建立约束不同,它们不能通过调整时钟周期来改正。
        时序电路中的建立时间和保持时间约束控制触发器之间的组合逻辑的最大延迟和最小延迟。现代触发器经常设计为可以使其组合逻辑的最小延迟是0,即触发器可以背靠背地放置。因为高的时钟频率意味着短的时间周期,所以最大延迟约束限制了高速电路的关键路径上串联门的个数。 
        在前面的分析中,我们假设时钟总是在同一时刻到达各个寄存器。在现实中,每个寄存器的时钟到达时间总是有所不同的。这个时钟沿到达时间的变化称为时钟偏移(clock skew)。时钟偏移会显著增加建立时间和保持时间。它将增加时序总开销,减少组合逻辑的有效工作时间。它也增加了通过组合逻辑所需要的最小延迟。
        当触发器对孔径时间内发生变化的输入进行采样时,输出Q可能随时取禁止区域VIL~VIH之间的一个电压。这称为亚稳态。最终,触发器将确定输出到0或者1的稳态。但是,到达稳态的分辨时间(resolution time)是无界的。
        如果触发器在时钟周期内的随机时间发生改变,那么为达到稳态所需要的分辨时间tres也是一个随机变量。如果输入在孔径时间外改变,则tres=tpcq。但是,如果输入在孔径时间内改变,则tres一定比较长。理论和实验分析指出,分辨时间tres大于任意时间t的概率按t的指数减少。所以,如果等待时间足够长,超过了tpcq,那么触发器达到一个有效逻辑电平的概率将很高。
        对于数字系统,来自真实世界的异步输入是不可能避免的。比如,人的输入就是异步的。如果处理不当,系统中的这些异步输入将导致亚稳态电压,从而产生很难发现和改正的不稳定的系统错误。数字系统设计人员的目标是:对于给定的异步输入,确保遇到的亚稳态电压的概率足够小。为了确保产生正确的逻辑电平,所有的异步输入必须经过同步(synchronizer)。
        如图显示了用2个触发器来建立同步器的简单方法,F1在CLK的上升沿对D进行采样。如果D在这个时刻发生改变,则输出D2将出现暂时的亚稳态。如果时钟周期足够长,则在周期结束前D2成为一个有效逻辑电平的概率很高。然后F2对D2进行采样,它现在是稳定的,将产生一个好的输出Q。

小结:

        与输出只取决于当前输入的组合逻辑电路相比,时序逻辑电路的输出取决于当前和先前的输入。换句话说,时序逻辑电路记忆先前的输入信息。这种记忆称为逻辑的状态。虽然有多种形式的时序逻辑,但我们只考虑最容易设计的同步时序逻辑电路。同步时序逻辑电路包含由时钟驱动寄存器隔开的组合逻辑块。电路的状态存储在寄存器中,仅在时钟沿到达时进行更新。
        同步时序逻辑电路的时序规范包括时钟到Q的传播延迟tpcq和最小延迟tccq,建立时间tsetup和保持时间thold。为了正确操作,它们的输入在孔径时间内必须稳定。孔径时间在在时钟的上升沿之前启动建立时间,在时钟的上升沿之后结束保持时间。系统的最小延迟周期Tc等于通过组合逻辑块的传播延迟tpd加上寄存器的tpcq+tsetup。为了正确操作,通过寄存器和组合逻辑的最小延迟必须大于thold。与常见的误解相反,保持时间不影响周期时间。☆ ☆ ☆
        整个系统的性能可以用延迟和吞吐量来度量。延迟是一个任务从开始到结束需要的时间。吞吐量是系统单位时间内处理任务的数量。并行可以提高系统的吞吐量。

数集时序逻辑电路补充:

        建立时间是输入数据D在时钟上升沿之前必须有效的时间。这就相当于问:在时钟上升沿之前输入D必须稳定多长时间才能使QM采样的值是可靠的?对于传输门多路开关型寄存器,输入D在时钟上升沿之前必须传播通过I1、T1、I3和I2,这就保证了在传输门T2两端的节点电压值相等。否则,
交叉耦合的一对反相器I2和I3就可能会停留在一个不正确的值上。因此建立时间等于3×tpd_inv+tpd_tx。
        传播延时是QM值传播到输出Q所需要的时间。注意,由于在建立时间中已包括了I2的延时,I4的输出在时钟上升沿之前已有效。因此延时tcq就只是通过T3和I6的延时。
        保持时间表示在时钟上升沿之后输入必须保持稳定的时间。在这里的情形下,当时钟为高电平时,传输门T1关断。由于D输入和CLK在到达T1之前都要通过反相器,所以在时钟变为高电平之后输入上的任何变化都不会影响输出。因此保持时间为0。
        传输门寄存器的缺点是时钟信号的电容负载很大。每个寄存器的时钟负载是很重要的,因为它直接影响时钟网络的功耗。如果忽略使时钟信号反相所需要的开销,那么每个寄存器具有8个品体管的时钟负载。以稳定性为代价降低时钟负载的一个方法是使电路成为有比电路。图7.13显示可以直接用交叉耦合反相器来省去反馈传输门。

        减少时钟负载的代价是增加了设计过程的复杂性。传输门T1以及它的源驱动器必须比反馈环路反相器I2更强才能切换交叉耦合反相器的状态。在传输门中希望使用最小尺寸或近于最小尺寸的器件,以降低锁存器和时钟分配网络的功耗。

        静态时序电路的存储依赖于如下概念:一对交叉耦合的反相器形成了一个双稳元件并且因此 可以用来记忆二进制值。这个方法有一个很有用的特性,即只要电源电压加在该电路上,它所保存的值就一直有效,因此称为静态电路。然而,静态门的主要缺点是它比较复杂。当寄存器在频率较高的时钟控制的计算结构(如流水线数据通路)中使用时,可以显著降低这一存储元件应当能在相当长一段时间内维持状态的要求。
        由此产生了一类将电荷暂时储存在寄生电容上的电路。其原理与动态逻辑完全一样——存储在电容上的电荷可以用来代表一个逻辑信号。没有电荷表示0,而存在电荷则代表存储了1。可惜的是,任何电容都不是理想的,总会有一些电荷泄漏。因此一个存储的值只能保存有限的一段时间,一般在毫秒的范围内。如果要保持信号的完整性,需要周期性地刷新该值,因此称为动态存储。如果从一个电容中读出被存放信号的值而又不破坏电荷,则要求有高输入阻抗的器件。

        这一边沿触发器的实现是非常高效的,因为它只需要8个晶体管。采样开关可以用纯NMOS传输管来实现,这样就更加简单,只需要6个晶体管。晶体管数目的减少对于高性能低功耗系统极具吸引力。
        动态电路在复杂性、性能和功耗方面都是非常有吸引力的。遗憾的是,在稳定性方面的考虑限制了它们的应用。在图7-23这样的一个完全动态的电路中,一个被电容耦合到内部存储节点上的信号节点会注入相当大的噪声而破坏状态。这一点在ASIC设计流程中特别重要,因为它对信号节点与内部动态节点之间的耦合缺乏控制。漏电电流引起的另一个问题是: 大多数现代处理器要求时钟能够减慢或者完全停止,以使在低活动性期间节省功率。最后,内部动态节点并不跟踪电源电压的变化。例如,在图7-23的电路中,当CLK为高电平对节点A维持它的状态,但它不会跟踪由I1所看到的电源电压的变化。其结果是降低了噪声容限。
        大多数这些问题都可以通过增加一个弱的反馈反相器使电路成为伪静态来解决(见图7.25),虽然这要增加少量的延时,但却明显改善了抗噪声的能力。除非寄存器是用在高度控制的环境中(例如定制设计的高性能数据通路),它们都应当设计成伪静态的或静态的。这对本节讨论的所有锁存器和寄存器都适用。

        在前面介绍的两相时钟技术中,必须十分小心地对两个时钟信号布线以保证它们的重叠最小。真单相钟控寄存器的优点是使用单个时钟,缺点是稍微增加了晶体管的数目——现在需要12个晶体管。TSPC还可以将逻辑功能嵌入到锁存器中,能够显著地提高性能。

        在时钟的高电平阶段,如果D输入翻转到高电平,则节点X翻转到低电平。因此输入必须保持稳定,直到节点X在时钟上升沿之前的值传送到Y,这即是寄存器的保持时间(近似为一个反相器延时)。资存器的传播延时是节点X上的值传送到输出Q的时间,即三个反相器的延时。建立时间是使节点X有效的时间,所以是一个反相器的延时。

        关于CMOS组合逻辑设计的补充:

          静态CMOS反相器的重要特性:

        1、输出高电平和低电平分别为VDD和GND。换言之,电压摆幅等于电源电压。因此噪声容限很大(接近VDD/2)。
        2、逻辑电平与器件的相对尺寸无关,所以晶体管可以采用最小尺寸。
        3、稳态时在输出和VDD或GND之间总存在一条具有有限电阻的通路。因此一个设计良好的CMOS反相器具有低输出阻抗,这使它对噪声和干扰不敏感。
        4、CMOS反相器的输入电阻极高,因为一个MOS管的栅实际上是一个完全的绝缘体,因此不取任何dc(直流)输入电流。由于反相器的输入节点只连到晶体管的栅上,所以稳态输入电流几乎为零。
        5、在稳态工作情况下电源线和地线之同没有直接的通路(即此时输入和输出保持不变)。没有 电流存在(忽略漏电流)意味着该门并不消耗任何静态功率。
        一个门的传播延时定义了它对输入端信号变化的响应有多快。它表示一个信号通过一个门时所经历的延时,定义为输入和输出波形的50%翻转点之间的时间。

        与tpLH和tpHL相反,传播延时只是一个人为的逻辑门质量指标,本质上没有任何物理意义。它大多用来比较不同的半导体工艺、电路或逻辑设计类型。

        传播延时不仅与电路工艺和拓扑连接有关,还取决于其他因素。最重要的是延时与门的输入输出信号斜率有关。为了定量这些特性,我们引入了上升和下降时间tr和tf,它们是用来衡量单个信号波形而不是针对门的,并且它们表明了信号在不同电平间的翻转有多快。如图所示把上升和下降时间定义为在波形的10%和90%点之间。一个信号的上升/下降时间很大程度上取决于驱动门的强度以及它所承受的负载。

        数字电路常被模拟成图1.21类型的一阶RC网络。因此这样一个网络的传播延时是令人感兴趣的。

        当加上一个阶跃输入(vin从0至V)时,这一电路的瞬态响应已知为一个指数函数,并且由 以下表达式给出(这里τ=RC,为网络的时间常数):

        达到50%点的时间可以很容易计算出为t=ln2τ=0.69τ。同样,需要t=ln9τ=2.2τ时间从10%达到90%点。
        人们常常希望一个门对于上升和下降输入具有相同的传播延时。这一状况可以通过使NMOS和PMOS晶体管的导通电阻近似相等来实现,这一条件与对称VTC所要求的条件是一样的。        
        充(放)电一个电容时的等效电阻:

        可以得到:
        1、电阻反比于器件的(WL)比。晶体管的宽度加倍时将使电阻减半。
        2、当VDD>>Vth+Vdsat/2时,电阻实际上将与电源电压无关。
        3、一旦电源电压接近Vth,电阻会急剧增加。

 反相器的传播延时

        展开延时公式中的Req以显示出决定延时的参数

        注意,这只是一阶近似,由于沟长调制系数非零,提高电源电压将使性能得到尽管很小但可以观察到的改善。
        减小一个门传播延时的设计技术
        1、减小CL。这个负载电容由三个主要部分组成:门本身的内部扩散电容、互连线电容和扇出电容。细致的版图设计有助于减少扩散电容和互连线电容。优秀的设计实践要求漏扩散区的面积越小越好。
        2、增大晶体管的W/L比。
        3、提高VDD。
        如果驱动源的输出能够被接收端的输入正确解释,则必须选择VOL<VIL和VOH>VIH。因此,即使驱动源的输出被一些噪声干扰,接收端的输入依然能够检测到正确的逻辑电平。可以加在最坏情况输出上但依然能正确解释为有效输入的噪声值,称为噪声容限(noise margin)。 从图1-23中可以看出,低电平和高电平的噪声容限分别为:

        门的直流电压传输特性(VTC)描述了当输入电压变化足够慢且保证输出能跟上输入的变化时,输出电压随输入电压变化的函数关系。理想的反相器应在输入电压达到门限VDD/2时产生一个跳变,真实的反相器在两个极端之间变化得更缓慢一些,如图1-25b所示。当输入电压V(A)等于0时,输出电压V(Y)=VDD。当V(A)=VDD时,V(Y)=0。然而,这两个端点之间的变化是平滑的,而且可能并不会恰恰在中点VDD/2突变。这就产生了如何定义逻辑电平的问题。
        一种选择逻辑电平的合理方法是选择在传输特征曲线斜率dV(Y)/dV(A)为-1的位置。这两个位置称为单位增益点(unity gain point)。在单位增益点选择逻辑电平可以最大化噪声容限。如果VIL减少,VOH将仅仅增加一点。如果VIL增加,VOH则将显著降低。

        为了避免输入落到禁止区域,数字逻辑门的设计需要遵循静态约束(static discipline)。静态约束要求,对于给定的有效逻辑输入,每个电路元件应该能产生有效的逻辑输出。
        功耗(power consumption)是单位时间内所消耗的能量。数字系统包含动态功耗(dynamic Power)和静态功耗(static Power)。动态功耗是信号在0和1之间变化过程中电容充电所耗费的能量。静态功耗是当信号不发生变化时,系统处于空闲状态下的功耗。逻辑门和连接它们的线都有电容。将电容C充电到电压VDD所需的能量为CVDD^2。如果电容电压切换的频率为f(每秒变化f次),即在1秒内将电容充电f/2次,放电f/2次。由于放电过程不需要从电源中获取能量,所以动态功耗为:

或:

        当电源电压的下限取决于外部限制(如经常在实际设计中发生的那样)或者当减小电源电压引起的性能降低不能被接受时,减少功耗的唯一方法就是减少等效电容。这可以通过减少它的两个方面来实现:实际电容及翻转活动性
        减少翻转活动性只能在逻辑和结构的抽象层次上实现,减少实际电容总体来说很值得,因为它同时也帮助改善电路的性能,由于在一个组合逻辑电路中大部分的电容是晶体管电容(栅电容和扩散电容),因此在进行低功耗设计时保持这部分电容最小有意义的。这意味着应当保持晶体管有尽可能或合理的最小尺寸。这无疑会影响电路性能,但这一影响可以通过逻辑或结构上的加速技术来弥补。
        假定我们必须使一个电路的能耗最少而又同时满足所规定的对性能的最低要求,一个吸引人的方法是尽可能地降低电源电压,而用加大晶体管的尺寸来补偿性能上的损失,但在最优值之外过多地加大晶体管的尺寸会付出较大的能量代价。
        在实际设计中,假设输入波形的上升和下降时间为零是不正确的。输入信号不为无穷大的斜率造成了开关过程中VDD和GND之间在短期内出现一条直流通路,此时NMOS和PMOS管同时导通。

        直接通路引起的功耗与开关活动性(swiching actvity)成正比,这类似于动态功耗。tsc代表两个 器件同时导通的时间。短路电流功耗可以通过使输入和输出信号的上升/下降时间匹配来达到最小。在整个电路层次上,这意味着所有信号的上升/下降时间应当保持在一定范周内不变。使一个门的输入和输出上升时间相等就这个具体的门本身而言并不是一个最优的结果,但却能保持整个短路电流在界定的范围内。
        当晶体管处于截止状态时,它们会泄漏少量电流。如伪nMOS电路,在电源和地之间始终有电流不断流经的通路。 这个静态电流Idd称为电源和地之间的漏电流(leakage current)或静态电源电流(quiescent supply current)。静态功耗正比于漏电流。
        CMOS反相器的总功耗现在可以表示为三部分的和:

        在典型的CMOS电路中动态功耗是占主导地位的因素。直接通路功耗可以通过细心的设计控制在限定范围之内,漏电目前可以忽略,但在不久的将来这种情形会有所改变。
        可将功耗-延时积(PDP)作为一个逻辑门的质量评定指标:

        PDP是能量的衡量,这从它的单位(W×s=焦耳)就可以清楚地看出。假设这个门以其最大可能的速率f=1(2tp)切换,并忽略静态和直接通路电流引起的功耗,我们得到:

        这里,PDP代表每次开关(即0-1或1-0的翻转)消耗的能量。我们通常感兴趣的是每个翻转周期所消耗的能量Eav。由于每个反相器周期包括一个0-1和一个1-0的翻转,因此Eav是PDP的两倍。
        使工艺尺寸变小是减少一个门的面积、传播延时以及功耗的有效手段。


        降低开关活动性的设计技术

        1、逻辑重组改变逻辑电路的拓扑结构可以降低它的功耗。对于随机输入,链形实现比树形实现总体上具有较低的开关活动性。 然而考虑时序特性以准确地综合考虑功耗问题也是很重要的。在本例中,树形拓扑结构(实际上)没有任何毛刺活动性,因为信号路径对于所有的门都是均衡的。

        2、输入排序。推迟输入具有较高翻转率的信号(即信号概率接近0.5的信号)是有利的。

        3、通过均衡信号路径来减少毛刺。电路中产生毛刺主要是由于在电路中路径长度失配引起的。如果一个门的所有输入信号同时改变,那么就不会发生毛刺。反之,如果各输入信号在不同的时刻变化,那么就有可能形成动态故障。

        虽然互补CMOS是一种实现逻辑门的非常有效和简单的方法,但随着门复杂性(即扇入)的增加,采用这一逻辑类型时会出现两个主要问题。首先,实现一个有N个输入(扇入)的门需要晶体管的数目为2N,这会明显加大它的实现面积。第二,互补CMOS门的传播延时随扇入数迅速增加。
tpLH是扇入的线性函数,而下拉电阻和负载电容(随输入数)同时增加,从而使tpHL以近似呈平方关系地增加。

        大扇入时的设计技术:

        1、调整晶体管尺寸。最显而易见的解决办法是加大晶体管的尺寸。这能降低串联器件的电阻和减小时间常数。但是晶体管尺寸的增加会产生较大的寄生电容,这不仅会增加该门的传播延时,还会对前一级的门产生一个较大的负载。

        2、逐级加大晶体管尺寸。使在延时公式中出现次数最多的电阻对应器件尺寸最大。

        3、重新安排输入。在复杂组合逻辑块中有一些信号可能要比其他一些信号更重要。一个门的所有输入并不都在同一时间到达(例如,由于前级门的传播延时不同)。如果门的一个输入信号在所有输入中最后达到稳定值,那么这个输入信号就称为这个门的关键信号。决定一 个结构最终速度的逻辑路径称为关键路径。把关键路径上的晶体管靠近门的输出端可以提高速度。

        4、重组逻辑结构。变换逻辑方程的形式有可能降低对扇入的要求,从而减少门的延时,如图6.16所示。门的延时与扇入间的平方关系使一个六输入的NOR门极慢。把这个NOR门分解成两个三输入的门显著地提高了速度。


        在之前的讨论中认为阀值电压只与制造工艺和所加体偏电压Vsb有关,所以在设计中可以把阀值看成对所有的NMOS(PMOS)管都是一个常数。随着器件尺寸的缩小,这一模型不再精确,阀值电压变成与W、L和Vds有关,例如对于短沟道器件Vth随L而减小。
        速度饱和:沟道非常短的晶体管具有速度饱和特性。相关公式表明载流子的速度正比于电场,且这一关系与电场强度值的大小无关。换言之,载流子的迁移率是一个常数。然而在(水平方向)电场强度很高的情况下,载流子不再符合这一线性模型。事实上当沿沟道的电场达到某一临界值时,载流子的速度将由于散射效应而趋于饱和。

        热载流子效应:短沟道器件的阙值电压除了设计间会有偏差之外,它也往往会随时间漂移。这是由于热载流子效应的结果。在过去几十年中,器件的尺寸已不断缩小,但电源和工作电压并没有相应地降低。其结果是电场强度提高,使电子速度增加,一但它们达到了足够高的能量就会离开硅而隧穿到栅氧中。在栅氧中被俘获的电子将改变阀值电压,一般都增加NMOS器件的阙值而减少PMOS管的阈值。在深亚微米工艺中一般都降低电源电压,其部分原因就是由于控制热载流子效应的需要。

        CMOS闩锁效应:MOS工艺会包含许多内在的双极型管。它们在CMOS工艺中特别会引起麻烦,因为同时存在的阱和衬底会形成寄生的n-p-n-p结构。这些类似于闸流管的器件一且激发即会导致VDD和VSS短路,这通常会破坏芯片,或至少会使系统无法工作而只能断电后重新启动。为了避免闩锁效应,应当使衬底电阻和阱电阻最小,这可以通过提高很多衬底和阱的接触并把它们放在源端接线附近来实现。传送大电流的器件(如在I/O驱动器中的晶体管)应当在周围有保护环(guard ring),这些放置在晶体管周围的环形阱/衬底接触可以进一步减小电阻,从而减小寄生双极型管的增益。

参考书籍:

  1. 《数字设计和计算机体系结构》
  2. 《基于FPGA与RISCV的嵌入式系统设计》
  3. 《数字集成电路——电路、系统与设计》

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐