备战秋招01——建立时间和保存时间

一、建立时间与保持时间的原理(是什么)

1.建立时间与保持时间的概念

建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。

保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。

2.建立时间与保持时间的基本原理

备战秋招01——建立时间和保存时间_第1张图片

        完成数据从一个触发器到另一个触发器的传输,需要两个动作。首先是数据从一个触发器传输到另一个触发器的输入端,接着第二个触发器的时钟沿到来,将数据采集走。由此过程可以分为两个路径(1+2与3)。

第一条路径:clk经过一定的延时到第一个触发器(Tlaunch),经过延迟将第一个触发器的D1端数据传送到Q1(Tclk2q);

                      Q1输出的数据经过组合而逻辑电路延时到达第二个触发器输入D2端(Tdp)。

第二条路径:clk到达第二个触发器(Tcapture)。

备战秋招01——建立时间和保存时间_第2张图片

        其中clk1和clk2是两个触发器时钟,Tclk2q是D->Q的传输延迟,Tdp是组合逻辑延迟,Tcycle是时钟周期,Tsu是建立时间,Th是建立时间,slack是时间裕量。       

        setup time就是在第二个触发器时钟沿未到来之前的时间,如上图所示也就是Tcycle+Tcapture-Tlaunch-Tclk2q-Tdp。

        hold time就是在第二个触发器时钟沿后到下一个数据到来前的时间(也就是clk1下一时钟沿到来后并经过延时传输到第二个触发器的时间),如上图所示也就是Tlaunch+Tclk2q+Tdp-Tcapture

        其中Tcapture与Tlaunch叫做时钟偏斜(Tskew)。是由于布线长度以及负载不同引起的,导致同一个时钟信号到达相邻两个时序单元的时间不一致。(同样的时钟产生的多个子时钟之间的延时差异),(同一时钟信号到达两个不同寄存器之间的时间差值)(相位上的不确定)。

故得到建立时间与保持时间的公式:

Tsu = Tcycle+Tskew-Tclk2q-Tdp

Th = Tclk2q+Tdp-Tskew

为了保证电路的正常运行,建立时间与保持时间需要具有一定的裕量(slack≥0),故进一步得到:

Tsu_slack = Tcycle+Tskew-Tclk2q-Tdp-Tsu≥0

Th_slack = Tclk2q+Tdp-Tskew-Th≥0

即:

Tsu≤Tcycle+Tskew-Tclk2q-Tdp

Th≤Tclk2q+Tdp-Tskew

二、满足建立时间和保持时间的原因(为什么)

        因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在 0 和 1 之间变化,这时需要经过 一个恢复时间,其输出才能稳定,但稳定后的值并不一定是输入值。 此时需要用两级触发器来同步异步输入信号。 这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。

三、如何满足建立时间与保持时间(怎么做)

1.建立时间

  • Setup时间公式:Tsu_slack = Tcycle+Tskew-Tclk2q-Tdp-Tsu
    如果出现了Setup Time Violation,也就是说Tsu_slack<0,那么可以考虑:
    • 增大时钟周期Tcycle,即降低时钟频率
    • 使用更快的器件,减小 D->Q的传输延迟Tclk2q
    • 使用更先进的器件库,减小 D->Q的传输延迟Tclk2q
    • 减小 Tdp,即减小组合逻辑延时,主要是关键路径的处理。包括插入寄存器使其流水、重定时等。
    • 增大时钟偏斜Tskew=Tcapture-Tlaunch如果时钟偏斜 Tskew 为正,对setup是有利的,对hold是有害。

2. 保持时间

  • Hold Time公式:Th_slack = Tclk2q+Tdp-Tskew-Th≥0
    如果出现了Hold Time Violation,也就是说Th_slack<0,那么可以考虑:
    • 增加 Tdp组合逻辑延迟,主要是关键路径的处理。可以增加Buffer,或者后端布局布线拉长布线以增加延时。
    • 减小时钟偏斜Tskew=Tcapture-Tlaunch如果时钟偏斜 Tskew为正,对setup是有害的,对hold是有利。

四、参考

数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)_锁存器有建立保持时间要求吗_摆渡沧桑的博客-CSDN博客

建立保持时间及违例解决方法 - 知乎 (zhihu.com)

你可能感兴趣的:(数字前端,fpga开发)