一看就懂的建立时间和保持时间

目录
前言
首先
画波形图分析
练习
前言
建立时间(set up time)和保持时间(hold time)一直是面试中的必考题,因为一直都不是很清楚明白的理解这两个概念,故在本文中通过一系列的分析来彻底搞懂这两个概念,力求看一遍就能在面试过程中侃侃而谈,对答如流。

首先
先上定义(来自维基百科):
建立时间是在时钟事件发生之前数据信号应保持稳定的最短时间,以便时钟能够可靠地对数据进行采样。 这适用于触发器的同步输入信号。
【一看就懂的建立时间和保持时间】保持时间是在时钟事件发生之后数据信号应保持稳定的最短时间,以便时钟能够可靠地对数据进行采样。 这适用于触发器的同步输入信号。

这里面的时钟事件可以理解为:时钟信号的边沿触发事件。而同步设计是芯片设计的基础,如不考虑同步,那这些都将失去意义。接下来我们分析这两句话的意思。
都说建立时间和保持时间是触发器的固有属性,那么为什么会出现建立时间和保持时间这个概念,我的理解是因为在集成电路中存在着大量的基于同步设计的触发器,而由于时钟的漂移,和时钟源与每个触发器的远近不同所以抵达每个触发器的时间不同。由于这两个原因为同步设计造成了巨大的障碍,因此我们引入建立时间和保持时间这个概念,将电路中的不稳定因素全部考虑进去以确保设计的稳定性、可靠性。
一看就懂的建立时间和保持时间
文章图片

上图是一个非常常见的两个触发器用组合逻辑相连的数据传输模型。我们知道,在真实电路中数据传输时处处都有延迟,在上图中,触发器在接收到有效的clk信号后,将数据从D端传输到Q端的所需要的时间为Tco。数据经过中间的组合逻辑时所需要的时间是Tcomb,在下一个clk到来之后,又需要一个Tco的时间才能将D2数据从D端传至Q端,经过这么长的路程,我们应该确保Q2还是最初的D1那一笔数据。
画波形图分析 接下来画波形图来直观的看到上面这么多延迟。
一看就懂的建立时间和保持时间
文章图片

逐步分析这个波形图,在第一个clk上升沿的时候,将D1的数据传递到了Q1,触发器的延迟为Tco,接下来经过组合逻辑Tcomb,Q1变为了D2,随后在第二个clk上升沿,将D2的数据传递到了Q2。
回到最上面的定义,建立时间和保持时间的区别就在于处在时钟事件的前后,在波形图中,红色虚线就代表着时钟事件,而时钟事件之前,由于信号传输过程中的延迟,建立时间Tsu=Tclk - Tco - Tcomb,保持时间Th=Tco + Tcomb。由上述公式我们可以推导出建立时间Tsu加上保持时间Th刚好等于一个Tclk。
由此可见,建立时间和保持时间并不是一个固定的数值,而是一种可以称之为裕量的存在。而且由于建立时间+保持时间等于一个clk周期,所以建立时间裕量越大那么保持时间裕量就越小,反之亦然。
那么在上述电路中,考虑到触发器延迟Tco的最大值和最小值,Tcomb的范围应该为:Th - Tco_max < Tcomb < Tclk - Tco_min - Tsu
但是一般触发器延迟不可控,我们只能去改变组合逻辑的大小来控制建立时间和保持时间,最常用的应用就是在两个触发器之间插缓存器(buffer)以此来满足保持时间的要求。
练习 下面我们来看一道计算题:
时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。组合逻辑电路最大延迟为T2max,最小为T2min。问:触发器D2的建立时间T3和保持时间T4应满足什么条件?
通过上面公式和波形图都可以看到,计算第二个触发的建立时间和保持时间与第一个触发器没有关系。
本题默认触发器延迟为0,那么建立时间的最大值就应该是T3max = T - T2min ,所以T3 < T - T2min ;
保持时间的最大值就是T2max,所以T4 < T2max;

    推荐阅读