数字电路基础知识——锁存器与触发器的建立时间和保存时间
本节主要介绍关于数字IC设计的基本时序分析问题,分析其建立时间和保持时间尤为重要。
一、D触发器的建立时间与保持时间
-
建立时间Tsu(setup):
触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;建立时间决定了触发器之间组合逻辑的最大延迟。也就是说,组合逻辑延时越大,留给建立时间裕量就越小。见后面的例子分析
-
保持时间Th(hold):
触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。如果保持时间不够,数据也不能被打入触发器;保持时间决定了触发器之间组合逻辑的最小延迟。也就是说,组合逻辑延时越小,留给建立时间裕量就越小。
下图所示即为数据稳定传输必须满足建立和保持时间的要求。
二、Latch的建立时间与保持时间。
锁存器的建立和保持时间是以最后CLK高电平消失时间点为基准的,如下图所示:
- 建立时间(tsetup):
建立时间是在CLK高电平消失之前的最小建立时间 - 保持时间(thold):
建立时间是在CLK高电平消失之后的最小保持时间
TClk-Q:是CLK电平触发时到数据Q改变时的延时。
tD-Q:电平触发期间,输出由数据输入D改变到输出Q改变的延时。
在Latch的输入开关断开和环路开关闭合时,有效的D输入信号在跳变前(建立时间)和跳变后(保持时间)的短时间内不能发生变化。以保证数据被锁存。
三、建立时间裕量和保持时间裕量。
-
建立时间裕量:
如果数据信号在时钟边沿触发之前的持续时间要大于建立时间Tsu,那么超出的部分时间即为建立时间裕量。 -
保持时间裕量:
如果数据信号在时钟边沿触发之后的保持时间要大于保持时间Thd,那么超出的部分时间即为保持时间裕量。 -
抖动(jitter)和时钟偏斜(skew)
1)抖动:
指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响;
或者由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。
2)时钟偏斜:
指同样的时钟产生的多个子时钟之间的延时差异。包含时钟缓冲器的多个输出之间的偏斜;也包含由于PCB走线的误差造成的接收端和驱动端时钟信号之间的偏移。因此,在时序设计中必须考虑这些因素。
四、 一个最简单的例子:同步时序电路。这里对后面一个寄存器进行建立时间裕量分析。(面试中经常遇到的问题)----经常画画这两个图:
在FPGA中,寄存器到寄存器之间传输,把setup和Holdup放进去,分析下两个寄存器之间的延时,以及各时间的计算。(如下图所示)
-
REG1,2分别是源端和目的端寄存器。
-
路径1 表示数据由CLK端到达D2端,中间需要经过REG1和组合逻辑延迟。即T1.
-
路径2,3,表示时钟CLK到达源端REG1和目的端REG2的时间,两者之间的相差我们称之为时钟偏斜(skew)
-
时钟偏斜 (skew): T3-T2 = deltaT
-
**T1:**指从REG1的CLK端到Q1端,再由组合逻辑或路径延迟到D2端。T1值越小,建立时间越大,但是保持时间越小,所以要折中设计。
T1 = Tcq +Tlogic (T1的寄存器的输出延时为Tcq,组合逻辑的延时为Tlogic)- 建立时间TS :目的时钟端CLK2采集REG2 D2 开始的上升沿与数据起始的差。
TS=Tcycle -T1 +deltaT(如果建立时间不够,可以降频,使得Tcycle增大)
建立时间余量= TS- 寄存器建立时间门限(最小)
裕量为正则复合设计约束,否则不符合约束
-
保持时间Th:REG2 D2端数据需要保持的时间
Th=T1-deltaT, 之和两级寄存器之间的延时有关
保持时间余量=Th-保持时间门限值
-
因此,寄存器之间的延时(包括组合逻辑延时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
从中可以看出,建立时间与保持时间要求是一对矛盾的关系,在设计电路时,我们要折中考虑。