数字电路建立时间和保持时间的区别

对于一个数字系统而言,建立时间和保持时间可以说是基础中的基础,这两个概念就像是数字电路的地基,整个系统的稳定性绝大部分都取决于是否满足建立时间和保持时间。但是对于绝大部分包括我在内的初学者来说,建立时间和保持时间的理解一直都是一个很大的困扰,尽管概念背得住,但是却没有理解这其中的精髓。这篇文章主要是讨论一下我对于这两个时间的理解。

首先我们先来看看维基百科中对建立时间(Setup time)和保持时间(Hold time)的解释:

Setup time is the minimum amount of time the data signal should be held steady before the clock event so that the data is reliably sampled by clock. This applies to synchronous input signals to the flip-flop.(建立时间就是时钟触发事件来临之前数据需要保持稳定的最小时间,以便数据在随时钟信号采样时是准确的)

Hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled. This applies to synchronous input signals to the flpi-flop.(保持时间就是时钟触发事件来临之后数据需要保持稳定的最小时间,以便数据能够准确的被采样)

假设数据是在上升沿被采样,那么建立时间就是时钟上升沿来临之前数据需要保持稳定的最小时间保持时间就是时钟上升沿来临之后数据需要保持稳定的最小时间。那么问题来了,我们都知道数据是在时钟信号上升沿的那一瞬间被打进触发器从而被采样的,那么我们只需要在时钟上升沿的那一瞬间或者那一小段时间保持稳定不就行了?理论上这么想是没问题的,但对于实际工程来讲,这是几乎不可能达到的。常规来讲,数据在发送端通过一个 D 触发器在时钟信号的控制下将数据发送出去,在接收端通过一个 D 触发器在时钟信号的同步下进行采样。

接下来通过分析 D 触发器的工作原理来解释一下建立时间和保持时间。D 触发器的结构如图 1 所示。

数字电路建立时间和保持时间的区别

~SD 和~RD 为触发器的异步置 0、置 1 端。它们不受时钟信号的控制,一旦有效,触发器马上被强迫置 0 或置 1,正常工作时,~SD 和~RD 均处于高电平状态。

下面分析异步置 0、置 1 输入无效时,电路的工作情况。

1. CLK=0期间,触发器输出状态保持不变。因为当 CLK=0 时,门 G4、G3 的输出 Q3、Q4 都是高电平,由 G1、G2 组成的锁存器处于保持状态,因而触发器的输出 Q 和~Q 保持不变。在此期间,由于 Q3=1 打开了门 G5,Q4=1 打开了门 G6,所以 Q6=~D,Q5=D,为 CLK 上升沿的到来建立了准备状态。

2. CLK0变为1时,触发器输出的新状态Qn+1=D。因为 CLK 由 0 变为 1 后,门 G3、G4 被打开(打开时间为 Thd),使得 Q3=~D,Q4=D(需要注意,这里的 D 应是上升沿到来前一瞬间已经稳定下来的输入信号 D)。若 D=0,则输出状态置 0,即 Qn+1=0;若 D=1,则输出状态置 1,即 Qn+1=1。所以触发器输出的新状态 Qn+1=D。

3. CLK=1期间,触发器输出状态保持不变。CLK 刚从 0 变为 1 后,G6 的另一个输入端 Q4=D,那么,在 CLK=1 期间如果输入信号 D 变为~D,则 G6 的输出 Q6 一定变为 1,Q6 置 1 将不会使由 G3 和 G5 组成的 RS 锁存器的状态发生变化,即 Q3=~D 仍保持不变(这里因为由与非门组成的 RS 锁存器低电平为有效信号),而这时门 G4 的输出为 D。这表明,在 CLK=1 期间,输入信号的改变,不能引起 Q3 和 Q4 的变化,因而触发器的输出状态仍然维持 CLK 上升沿到来时由原来输入信号 D 作用的结果,而CLK=1期间输入信号D的变化被阻塞掉了,故称此触发器为维持阻塞触发器。

从上面的分析可以知道,输入信号 D 是在 CLK=0 的时刻,经过与 G5 和 G6 两个与非门的延迟 Tsu 之后才传输到 Q5 和 Q6 端的,然后在 CLK 跳变为 1 的时候被锁存到输出端的。

我们假设 Tsu=5ns,如果 D 输入信号在 CLK 跳变为 1 之前 4ns(<5ns)时才发生变化,那么在 CLK 跳变为 1 时,输入信号 D 还没有传输到 Q5 和 Q6,SR 锁存器锁存的将是 D 变化之前的数据。也就是说 D 输入信号只有在 CLK 跳变之前>Tsu 的时间里准备好,触发器才能将数据锁存到 Q 输出端口,也就是所说的要保证信号的建立时间。

在 CLK 跳变为 1 之后,Q5 和 Q6 的信号要经过 G3 和 G4 两个与非门的延迟(Thd)才能传递到 Q3 和 Q4,构成 SR 锁存器之前的 D 输入的阻塞,保证在 CLK=1 是输入数据变化不会影响锁存结果。

我们假设 Thd=5ns,如果 D 输入信号在 CLK 跳变为 1 之后 5ns 内发生跳变,因为此时 Q3 和 Q4 还没发生变化,均为’1’,Q5 和 Q6 的状态将会发生跳变。在 CLK=1 的时刻,Q3 和 Q4 跟随 Q5、Q6 的改变也发生跳变,末端 SR 锁存器的输出 Q 也发生跳变,造成输出结果不对。也就是说在 CLK 跳变为 1 之后的 Thd 时间内,D 信号不能发生变化,也就是所说的要保证信号的保持时间(Thd)。

约束条件

上面我们已经理解了建立时间和保持时间了,下面我们就结合一个比较经典的模型来看看我们在进行电路设计的时候要如何去满足建立时间和保持时间。

数字电路建立时间和保持时间的区别

上图是一个典型的双线单工通信模型的框图,其中 Comb 表示组合逻辑电路,Clock Skew 表示由于时钟线存在长度而导致的时钟偏移,两个 D 触发器均为上升沿触发。

假设 D 触发器的建立时间为 Tsetup,保持时间为 Thold,则存在如下关系式:

Tclk+Tskew-Tdq-Tcomb>=Tsetup      (1)

Tdq+Tcomb-Tskew>=Thold           (2)

其中:

Tclk : 时钟周期

Tskew : 时钟线上的延时

Tdq : D 触发器从 D 端到 Q 端的时延

Tcomb : 数据信号经过组合逻辑电路的延时(例如缓冲器)

下图是这个模型的时序图,结合图四我们可以推导出这两个约束关系式。

数字电路建立时间和保持时间的区别

建立时间约束:

(1)式的思想其实就是在第二个时钟沿来临之前,数据稳定的时间一定要大于等于建立时间。因此在一个时钟周期内,数据稳定的时间为 Tclk-Tdq-Tcomb,因为时钟也存在偏移,因此要把这个时钟偏移加上,于是最后数据稳定的时间为 Tclk+Tskew-Tdq-Tcomb,满足这个稳定时间大于建立时间即可,因此推导出了(1)式,进而可以推导出在已知建立时间、组合逻辑延时、D 触发器延时、时钟偏移的情况下,理论上能够承载的最大时钟频率为:

f_max = 1/(Tsetup+Tdq+Tcomb-Tskew)

这个关系式对于电路设计和芯片选型方面都有着非常大的帮助。当然,在实际工程中还要根据实际情况留有一定的设计余量以应对短暂的非常规情况。

保持时间约束:

(2)式的思想为在第二个时钟沿来临之后,数据稳定的时间一定要大于等于保持时间。因此在时钟沿来临之后,数据稳定的时间为 Tdq+Tcomb,再减去时钟偏移则为 Tdq+Tcomb-Tskew,满足这个稳定时间大于等于保持时间即可。

最后联立(1)(2)式我们可以推导组合逻辑延时范围:

Thold+Tskew-Tdq<=Tcomb<=Tclk-Tdq+Tkew-Tsetup

时钟偏移范围:

Tsetup-Tclk+Tdq+Tcomb<=Tskew<=Tdq+Tcomb-Thold

扫码关注尚为网微信公众号

尚为网微信公众号
每天学习电路设计嵌入式系统的专业知识,关注一波,没准就用上了。

原创文章,作者:sunev,如若转载,请注明出处:https://www.sunev.cn/hardware/569.html

(3)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年4月21日 20:55
下一篇 2020年4月22日 21:09

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注