1.组合电路时序参数

在物理上实现组合逻辑时,比如与门、或门等时,会产生时序的概念。当一个二进制值(0或1)输入到组合电路时,由于电气限制,在电路输出端的变化并非是即时的。电路在组合电路中的input-to-output延迟可以用两个参数表示,也即tpd和tcd。

 

  • 传输延时(Propagation delay,tpd)--此物理量表明了输入端信号开始变化到输出端信号稳定所需要的时间。组合逻辑中,这个量用来保证输入端经过tpd的时间后,输出端不会再有任何的变化。
  • 污染延时 (Contamination delay,tcd)--此物理量表明输入端信号开始变化到输出端信号开始变化所需要的时间。也就是说,在tcd时间内,输出不会有任何变化。

        图1关于tpd和tcd的阐述。反相器的输出在tcd时间后才开始变化,而在tpd之后变化才稳定。

 

   我们知道,组合电路的延时都是加性的,其延迟可以通过电路中最长路径的延迟组合相加而得。比如,可以计算出图2中组合电路中的传输延迟tpd是5ns,这是因为从输入端(w,x,y)到输出端z的最长传输延迟是分别经过A,B门这条组合电路路径传输延迟之和为 3ns + 2 ns =5 ns。此外,从经过C, B门这条路径它的传输延迟只有4ns,那么因为它小于5 ns, 所以在考虑整体传输延迟时会忽略掉。相对而言,组合电路中的污染延迟tcd则是考虑从输入端到输出端的最短路径。在图2中,组合电路的污染延迟是2 ns,因为最短路径是从输入端y到输出端z,也就是说tcd(C)+tcd(B)= 1 ns + 1 ns = 2 ns.可以注意到这个值是小于A-B这条路径的 (2ns + 1 ns = 3 ns).

                                             图2组合电路时序的例子

 

2.时序电路时序参数

     和组合电路一样,诸如边沿出发的触发器(flip-flop,FF)这样的时序电路,在物理实现时也会存在某些时序参数。和组合电路不同,这些参数都与时钟输入相关。因为FF只在时钟变化时会作出响应,所以时序参数都是相对于时钟上升沿或下降沿指定的。下面介绍这些时序参数,不加特意说明,这里指的都是上升沿触发的电路,下降沿触发的电路情况是类似的。

  • 传输延迟(tClk-Q)-这个值指的是,从FF的输入端开始变化到输出端(Q)变化稳定所需要的时间。从图3中可以看出,FF的输出在获得最终输出前的某段时间内产生一个中间值。而在tClk-Q延迟之后,输出在下一个时钟沿来临前保持稳定了。
  • 污染延迟(tcd)--指从时钟上升沿到输出(Q)开始变化的时间。也就是说,FF的输出会保持它的初始值,直到过去tcd的时间。
  • 建立时间(ts)--时钟沿到来前输入数据D必须要稳定的时间。
  • 保持时间(th)--时钟沿到来后输入数据D必须要稳定的时间。
  •        图3时序电路的建立和保持时间
  • 建立与保持时间是FF的输入D驱动必须考虑的限制。无论违背了那个参数,电路都有可能无法正常工作。这些参数限制了最大时钟频率。如果时钟频率过快,数据可能就没有足够的时间传输到输入端,也就是说无法在时钟上升沿到来满足ts时间。

3.确定时序电路的最大时钟频率

   大多数的数字电路都包括组合逻辑(gate,mux, adders)以及时序逻辑(FF).通过结合使用这些逻辑可以形成时序电路用以计算、存储数据。下面分析使用组合和时序参数确定最大时钟频率的方法。以图4为例。

图 4 时序电路的例子

 

在进行时序分析之前,考虑从A开始,上升沿到来之后的情况:

 

     1.在Clk上升沿到来之后,经过tClk-Q = 10 ns的时间,信号X出现有效输出。

     2.在有效的X到达后tpd = 5ns,反相器F出现了一个有效的输出Y。

     3.信号Y在下一个时钟沿被同步到FF B上面。这个信号必须在时钟沿前ts = 2ns到达。

 

 因此,最小的时钟周期, Tmin = tClk-Q(A) + tpd(F) +ts(B) = 10+5+ 2=17 ns

最大时钟频率为fmax = 1/Tmin = 58.5 MHz。

图5 图4中各级组合电路和FF输出波形图

 因为Clk是和所有FF有关系,所以这些值都会同时变化。在每个时钟边沿,从FFA开始的这三部都会重复。在下一个边沿,新的值会被时钟同步到 FF B里,也就是在上一个时钟沿时 FF A的值。

 

 在典型的时序电路中,通常会有百万级以上的FF到FF路径需要考虑,以确定最大时钟频率。这个频率必须由整个电路中最长的那条路径决定。以图6为例,有三个从FF到FF的路径,他们的延迟分别可以计算为

 

1)  tAB = tclk-Q(A)+ts(B) = 9+2 = 11 ns

2)tAC = tclk-Q(A)+tpd(CL)+ts(C) = 9+4+2 = 15 ns

3)  tBC =tclk-Q(B)+tpd(CL)+ts(C) =10+4+2 = 16ns

 

所以tBC是其中最长的一条路径,所以其Tmin = 16 ns, fmax = 1/16 = 62.5 MHz

 

图6  多条路径的时序分析

 

4. 验证时序电路的保持时间

  仅仅设计fmax是不够的。正如之前提到的,保持时间th必须满足每个FF的输入,也就是说时钟沿到来之后必须至少应该有th时间保持输入信号不变。幸运的是,组合电路和FF的污染延迟会会防止FF输入瞬时改变。这一点在图4中已经阐述过了。

  FF B上保持时间的要求表明,交给B的输入Y必须在时钟到来后至少保持2ns不变。从图4中我们可以看到,信号最早可以开始变化,必须等到 FF A+ 反相器X的污染延迟之和以后,因此

                                        th(B)≤tcd(A) + tcd(X)

 

只有这样电路才能保证正确。因为th为2ns,小于tcd(A)+tcd(B)=4 ns,所以保持时间是可以得到满足的。我们给出另外一个多个FF路径的例子。这三条路径A-B,A-C,B-C的关系分别为:

A-B :  th(B)≤tcd(A)

A-C:   th(c)≤tcd(A)+tcd(CL)

B-C:   th(c)≤tcd(B)+tcd(CL)

带入图6的具体指可以得到:

A-B :   1 ns≤ 2 ns

A-C:    1 ns≤ 2 ns +2ns

B-C:    1ns≤ 2 ns +2 ns

 

 

很明显,哪怕是最快的FF到FF的路径 2 ns 也是大于要求的保持时间 1ns的。也就是,这些FF的输入值,因为污染延迟的存在,则至少在时钟沿之后的2ns内是不会改变的。对于每一个路径中的电路,污染延迟可以保证电路的输入端至少经过tcd时间才能影响到输出端。

 

5.结论

  时序电路依赖时钟来控制系统数据的传递。给定组合电路和时序电路以及他们的时序参数,可以确定电路可以使用的最大时钟频率。这个分析包括了电路中所有从FF到FF的检验。检验内容包括了沿着路径的传输延迟以及到达FF的建立时间。此外,需要保证每个FF的保持时间也是满足的。如果路径的污染时间大于等于目标FF的保持时间,这个电路就能正常工作。

 

参考文献

[1] Prof. Russell Tessier Understanding Sequential CircuitTiming.2003.