美文网首页
建立时间(setup time)与保持时间(hold time)

建立时间(setup time)与保持时间(hold time)

作者: 一条摸水鱼 | 来源:发表于2020-06-22 00:45 被阅读0次

1.触发器及其建立时间和保持时间

  • 对于触发器而言,只有在时钟clk上升沿到来的那一刻才会改变触发器的输出值,所以我们可以将触发器看作是一个开关,这个开关只有在时钟上升沿起作用,只有在时钟clk上升沿的时候采集输入值(input value)并将其输出。

  • 在仿真器上,时钟的上升沿或者下降沿是没有延时的(表现为直上或者直下),但是在实际工程中,时钟上升沿或者下降沿是倾斜的,即时钟的上升或者下降是需要一定时间的。

  • 所以这就要求在时钟上升沿到来之时,触发器的输入数据需要保持稳定;另外,在时钟上升沿到来之后,需要保证数据保持一定的稳定,否则可能会造成前一寄存器的输出太快而冲掉了后一寄存器的正确数据。这是触发器的固有属性。

  • 简而言之就是:
    (1)在clk到来之前,需要数据保持稳定,即需要数据在clk到来之前“预先准备好”,这段时间称为建立时间;
    (2)在clk到来之后,需要数据保持稳定,即需要数据在clk到来之后“不能变化”,这段时间称为保持时间。

2.Timing Path 和 Data Path

  • 在静态时序分析中,时间路径和数据路径极为重要,也是分析建立时间和保持时间的一个较好的手段方法。

  • 如下图所示,数据data由DFF1在时钟上升沿采样,然后DFF1对数据进行输出,随后经历组合逻辑电路,最终到达DFF2的输入口,可以把这条数据通路称为data path,即数据经过的路径为:buffer1->dff1->logic->dff2。而时钟到达DFF2时的路径为:buffer2->dff2,这条路径称为timing path

Timing-path and Data-path.jpg
  • 对于建立时间而言,需要考虑的重点在于:数据经过dff1和组合逻辑logic之后,要比下一个时钟上升沿更快地到达ddf2。换句话说,就是data path上的经历的时间要比(timing path + Tclk)更短。需要保证以下公式成立才能确保时序不会发生违例,否则称为setup time violation。

T_{data-path}+T_{setup-time}<T_{clk}+T_{timing-path}

T_{buffer1}+T_{dff1-output}+T_{logic}+T_{setup-time}<T_{clk}+T_{buffer2}

  • 对于保持时间而言,需要考虑的重点在于:数据经过dff1和组合逻辑logic之后,要在时钟上升沿到来之后还能保持一定的时间。换句话说,就是data path上经历的时间要比timing path上所经历的时间更长。即需要保证以下公式成立才能确保时序不会发生违例,否则称为hold time violation。

T_{data-path}>T_{hold-time}+T_{buffer2}

T_{buffer1}+T_{dff1-output}+T_{logic}>T_{hold-time}+T_{buffer2}

3.建立时间、保持时间分析例子

如下图所示,有一个同步设计的电路,图中标明了每个器件和线路上时延的最大值和最小值,请根据图中电路及其时延数值,分析该电路的建立时间和保持时间是否违例(时钟周期为15ns)。

  • 建立时间。对于data path而言,经历的时间为:2+11+2+9+2+4=30,而对于timing path而言,经历的时间为:15+2+5+2=24,所以建立时间不满足时序要求。

  • 保持时间。对于data path而言,经历的时间为:1+9+1+6+1=18,而对于timing path而言,经历的时间为:3+9+3+2=17,所以保持时间满足时序的要求。

建立时间和保持时间的例子.jpg

4.常见的触发器

D触发器的特征方程及其真值表如下所示:
Q_{next}=D

D Q Q_{next}
0 0 0
0 1 0
1 0 1
1 1 1

JK触发器的特征方程及其真值表如下所示:
Q_{next}=JQ'+K'Q

J K Q Q_{next}
0 0 Q Q
0 1 Q 0
1 0 Q 1
1 1 Q Q'

T触发器的特征方程及其真值表如下所示:
Q_{next}=QT'+Q'T

T Q Q_{next}
0 Q Q
1 Q Q'

相关文章

  • 建立时间(setup time)与保持时间(hold time)

    1.触发器及其建立时间和保持时间 对于触发器而言,只有在时钟clk上升沿到来的那一刻才会改变触发器的输出值,所以我...

  • 触发器:建立时间和保持时间

    什么是建立时间和保持时间 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间...

  • python 内置库

    时间库 time time.time() 生成时间戳 time.localtime(time.time()) 从...

  • time

    time.time()返回时间戳 time.asctime()时间元组到时间字符串 time.mktime()时间...

  • Python常用库

    Python常用库 一、time:时间处理模块 1.time.time() time time() 返回当前时间的...

  • python 时间处理模块

    时间处理模块 1.1. time.time()time time() 返回当前时间的时间戳 输出:15606616...

  • python之time模块

    1. time 模块 time 模块常用的与时间相关的类和函数: 1.1 struct_time 类 time 模...

  • Python正式课第十四天

    Python常用模块 一、时间处理模块 1. time.time() time time() 返回当前时间的时间戳...

  • Python时间处理

    import time > struct_time元组 # 获取当前时间时间戳 time.time() # 获取当...

  • python中time,datetime模块学习

    一、time模块 时间表示方法: 时间戳类型:time.time() 数组的类型即struct_time:time...

网友评论

      本文标题:建立时间(setup time)与保持时间(hold time)

      本文链接:https://www.haomeiwen.com/subject/lxnzxktx.html