setup time的一些思考点

还是用题来引出话题吧,看这道笔试题:

如图触发器F1、F2、F3和F4的clk到Q的延时Tcq为1ns,setup time为2ns,hold time为1ns,缓冲器的延时为1ns,组合逻辑L1的延时为2ns,L2的延时是4ns。

setup time的一些思考点_第1张图片

1)如果没有setup时钟违例,该系统的最高时钟频率是多少?(这个可能还需要进一步思考)

2)如果F2没有setup违例,clk时钟频率最高可以达到多少?

3)如果按照2)中的时钟,F4的setup和hold slack是多少?

我们先把这个题解一下吧。

1)找到关键路径为F3-L-F4,其延时为t1=Tcq+Tl2+Tsetup-△T=1+4+2-2=5ns

则可计算的最高时钟频率f1=1/t1=200MHz

经检测此时其余路径无违规。

2)t2= Tcq+Tl1+Tsetup-△T=1+2+2-0=5ns

则此时的最高时钟频率为f2=1/t2=200MHz

3)setup slack=t2+△T-Tl2-Tcq-tsu=5+2-4-1-2=0ns

hold slack=Tl2+Tcq-△T-Thd=4+1-2-1=2ns

 

之后我们来看下建立时间。

对逻辑电路里建立时间(setup time)的分析,其实相对于保持时间(hold time)要简单些。还是以两个寄存器的时序电路为例,注意观察D2寄存器如果想要采样到输入信号的话,那么在始终上升沿到来之前,信号必须在D2端口已经到达了一段时间,这段时间就是建立时间。如果建立时间不满足的话,很有可能会产生亚稳态等问题。下图的电路图中,Q1的信号经过logic后到达端口D2的时间与时钟到达触发器D2的时间差就是建立时间。

setup time的一些思考点_第2张图片

 

看看时序图就简单了。下图中,第一个时钟上升沿采样D1信号,进过Tcq时间传到Q1端,再经过Tcom时间经过组合电路到达D2端,此时领先将要到达的时钟沿的时间即是理论最大建立时间(?这里我有点不会表述了),那么在不考虑时钟偏移的情况下,我们可以得到D2触发器建立时间的最大值。

Tsetup

那么建立时间余量也就很清楚啦。

setup time stack = T-(Tcq+Tcom)-Tsetup

setup time的一些思考点_第3张图片

 

进一步的我们把时钟偏移Tclk_d1s和Tclk_d2s引入进来,图我就不画了在另外的博客中有。思考一下时钟偏移会有什么影响呢?最简单的说就是可以使D1->Q1->D2这条路径数据变化的时间更加的充裕(显然在Tclk_d2s>Tclk_d1s时),因此我们将公式修正如下:

Tsetup

setup time stack = T+(Tclk_d2s-Tclk_d1s)-(Tcq+Tcom)-Tsetup

或者是

Tsetup

setup time stack = T+△T-(Tcq+Tcom)-Tsetup

建立时间裕量的计算就完成了。通过观察公式我们发现建立时间和时钟周期的关系很大,这也就推导出了时钟周期的表达式:

T>Tsetup+(Tcq+Tcom)max-△T

因此我们可以根据关键路径计算出一个最小时钟周期(周期越小频率越大)。

你可能感兴趣的:(verilog)