数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)

数字电路基础知识——锁存器与触发器的建立时间和保存时间
本节主要介绍关于数字IC设计的基本时序分析问题,分析其建立时间和保持时间尤为重要。

一、D触发器的建立时间与保持时间
  1. 建立时间Tsu(setup)
    触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;

    建立时间决定了触发器之间组合逻辑的最大延迟。也就是说,组合逻辑延时越大,留给建立时间裕量就越小。见后面的例子分析

  2. 保持时间Th(hold)
    触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。如果保持时间不够,数据也不能被打入触发器;

    保持时间决定了触发器之间组合逻辑的最小延迟。也就是说,组合逻辑延时越小,留给建立时间裕量就越小。

    下图所示即为数据稳定传输必须满足建立和保持时间的要求。

数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)_第1张图片

二、Latch的建立时间与保持时间。

锁存器的建立和保持时间是以最后CLK高电平消失时间点为基准的,如下图所示:

  1. 建立时间(tsetup
    建立时间是在CLK高电平消失之前的最小建立时间
  2. 保持时间(thold
    建立时间是在CLK高电平消失之后的最小保持时间

TClk-Q:是CLK电平触发时到数据Q改变时的延时。
tD-Q:电平触发期间,输出由数据输入D改变到输出Q改变的延时。

在Latch的输入开关断开和环路开关闭合时,有效的D输入信号在跳变前(建立时间)和跳变后(保持时间)的短时间内不能发生变化。以保证数据被锁存。
数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)_第2张图片

三、建立时间裕量和保持时间裕量。
  1. 建立时间裕量
    如果数据信号在时钟边沿触发之前的持续时间要大于建立时间Tsu,那么超出的部分时间即为建立时间裕量。

  2. 保持时间裕量
    如果数据信号在时钟边沿触发之后的保持时间要大于保持时间Thd,那么超出的部分时间即为保持时间裕量。

  3. 抖动(jitter)和时钟偏斜(skew)
    1)抖动:
    指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关布线对其没有影响
    或者由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。
    2)时钟偏斜:
    指同样的时钟产生的多个子时钟之间的延时差异。包含时钟缓冲器的多个输出之间的偏斜;也包含由于PCB走线的误差造成的接收端和驱动端时钟信号之间的偏移。因此,在时序设计中必须考虑这些因素。

四、 一个最简单的例子:同步时序电路。这里对后面一个寄存器进行建立时间裕量分析。(面试中经常遇到的问题)----经常画画这两个图

在FPGA中,寄存器到寄存器之间传输,把setup和Holdup放进去,分析下两个寄存器之间的延时,以及各时间的计算。(如下图所示)
数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)_第3张图片

  1. REG1,2分别是源端和目的端寄存器。

  2. 路径1 表示数据由CLK端到达D2端,中间需要经过REG1和组合逻辑延迟。即T1.

  3. 路径2,3,表示时钟CLK到达源端REG1目的端REG2的时间,两者之间的相差我们称之为时钟偏斜(skew)
    数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)_第4张图片

  4. 时钟偏斜 (skew): T3-T2 = deltaT

  5. **T1:**指从REG1的CLK端到Q1端,再由组合逻辑或路径延迟到D2端。T1值越小,建立时间越大,但是保持时间越小,所以要折中设计。
    T1 = Tcq +Tlogic (T1的寄存器的输出延时为Tcq,组合逻辑的延时为Tlogic)

    1. 建立时间TS :目的时钟端CLK2采集REG2 D2 开始的上升沿与数据起始的差。

    TS=Tcycle -T1 +deltaT(如果建立时间不够,可以降频,使得Tcycle增大)

    建立时间余量= TS- 寄存器建立时间门限(最小)
    裕量为正则复合设计约束,否则不符合约束

  1. 保持时间Th:REG2 D2端数据需要保持的时间

    Th=T1-deltaT, 之和两级寄存器之间的延时有关

    保持时间余量=Th-保持时间门限值

  2. 因此,寄存器之间的延时(包括组合逻辑延时T1)越小,越容易建立。但是越难保持
    若不存在时钟偏斜,则建立时间必须满足Tcycle -T1 - Tsetup > 0 (裕量大于0)
    保持时间必须满足T1-Th - Tskew > 0 (裕量大于0)

可以看到,必须满足建立时间要求和保持时间要求,即满足如下关系式。
建立时间裕量:Tset_slack = Tcycle -(Tcq+Tlogic)- Tsetup + Tskew>0(Tcq+Tlogic)为T1
保持时间裕量:Thold_slack = Tcq+Tlogic-Thold - Tskew > 0
从中可以看出,建立时间与保持时间要求是一对矛盾的关系,在设计电路时,我们要折中考虑。

你可能感兴趣的:(数字电路基础,时序约束)