数字电路-建立时间和保持时间详解

对于数字系统而言,建立时间(setup time)和保持时间(hold time)是数字电路时序的基础。数字电路系统的稳定性,基本取决于时序是否满足建立时间和保持时间。我自己在初学时一度很难理解清楚他们的概念,在这里用笔记的方式尽量详细解释建立时间和保持时间的要点。

1. 基本概念

        建立时间就是触发器时钟信号上升沿来临之前,数据需要保持稳定的最小时间,以便数据能够被时钟正确的采样。

        保持时间就是触发器时钟信号上升沿来临之后,数据需要保持稳定的最小时间,以便数据能够被电路准确的传输。

        可以通俗的理解为:时钟到来之前,数据需要提前准备好;时钟到来之后,数据还要稳定一段时间。建立时间和保持时间组成了数据稳定的窗口,如下图所示。(建立时间和保持时间是触发器的固有参数,要与下文中讨论的时间约束区分清楚。)

        来看一个简单的上升沿D触发器,先试着理解一下保持时间和维持时间的概念。

        G1~G4 与非门是维持阻塞电路,G5~G6 组成 RS 触发器。

        时钟直接作用在 G2/G3 门上,时钟为低时 G2/G3 通道关闭,为高时通道打开,进行数据的采样传输。但数据传输到 G2/G3 门之前,会经过 G4/G1 与非门,将引入时间延迟。引入建立时间的概念,就是为了补偿数据在 G4/G1 门上的延迟。即时钟到来之前,G2/G3 端的输入数据需要准备好,以便数据能够被正确的采样。

        数据被时钟采样完毕后,传输到 RS 触发器进行锁存之前,也需要经过 G2/G3 门,也会引入延迟。保持时间就是为了补偿数据在 G2/G3 门上的延迟。即时钟到来之后,要保证数据能够正确的传输到 G6/G5 与非门输入端。

        如果你没有理解,也没有关系,只要记住:对于一个触发器来说,数据需要比该触发器规定的建立时间早到,时钟来后至少要维持保持时间的长度。如果数据在传输中不满足建立时间或保持时间,则会处于亚稳态,导致传输出错。

2. 约束条件

2.1 建立时间约束

        以一个典型DFF到DFF的数据传输路径举例,其中 "Comb" 代表组合逻辑延迟,"Clock Skew" 表示时钟偏移,数据均在时钟上升沿触发。时钟到来之前,数据需要提前准备好,才能被时钟正确采样,要求数据路径 (data path) 比时钟路径 (clock path)更快,即数据到达时间(data arrival time)小于数据要求时间(data required time)。则建立时间需要满足的表达式为:

Tcq+Tcomb+Tsu<=Tclk+Tskew

        各个时间参数说明如下:Tcq: 寄存器 clock 端到 Q 端的输出延迟;Tcomb:data path 中的组合逻辑延迟;Tsu: 建立时间;Tclk: 时钟周期;Tskew: 时钟偏移。等式左边部分为data path,右边部分为clk path,由此我们又可以得到理论上电路能够承载的最小时钟周期和最高时钟频率分别为:

Tmin=Tcq+Tcomb+Tsu-Tskew

fmax=1/(Tcq+Tcomb+Tsu-Tskew)

        由上述公式,我们又可以总结出:更大的时钟偏移Tskew、更短的输出延迟Tcq、组合逻辑延时Tcomb有助于满足建立时间约束条件

2.2 保持时间约束

        时钟到来之后,数据还要稳定一段时间,要求前一级的数据延迟(data delay time)要大于触发器的保持时间,以免数据被冲刷掉。为什么需要大于呢?数据并不只是传输一拍,如果保持时间超过了data delay time,前一级触发器输出的new data就会撞上第二级触发器还在保持的old data,因此保持时间需要满足的表达式为:

Tcq+Tcomb>=Thd+Tskew

        同样的,等式左边体现的是数据路径,而右边是时间路径,可以记忆为min data delay time>Thold+Tskew,这也是需要理解记忆的两个约束条件表达式。对于保持时间,也可以总结出:更小的时钟偏移Tskew、更长的输出延迟Tcq、组合逻辑延时Tcomb有助于满足保持时间约束条件

2.3 违例的改善

        这样我们也得到了对处理建立、保持违例的方法:

        对于setup violation,可以采取:用更大的时钟偏移、换用更小时延Tcq的DFF、调整组合逻辑使得关键路径延时尽可能小、时钟整体降频。

        对于hold violation,可以采取:用更小的时钟偏移、换用更大时延Tcq的DFF、在组合逻辑路径上插入buffer(如两个反相器)。

2.4 约束的意义

        我曾经有个很困惑和易混淆的点:建立时间和保持时间不是要求数据在时钟沿前后需要保持的最小时间吗,应该是大于这个参数才对,为什么约束又要求Tset和Thold小于某个值呢?

        建立时间和保持时间对于一个确定的FF来说是一个固有的参数,与FF内部的传输门、反相器等等有关。对违例的检查是检查此参数能不能满足在整体电路传输中的时序条件,即:建立时间和维持时间是对于一个触发器来说的,而约束是对于两个或者更多触发器的整体数字电路来考量的,触发器的固有Tset、Thold不能不受限制

        如果建立时间和保持时间要求为无限大,那么电路也没有办法正常工作了,比如FF的Tset如果过大,那么在第二个时钟上升沿D2可能还未拉高,就不能正常传输了,此时认为出现建立时间violation,需要我们换用Tcq更小的FF、使用更小的组合逻辑延时、降频等等进行调整。所以,违例也可以理解为当前触发器要求的Tset和Thold太大了,我们需要用要求更小的Tset和Thold的触发器,如果这个触发器不能更换,那么就调整电路的其他部分解决掉这个violation。理想情况下自然是触发器具有0的建立时间和保持时间,也就是我们一开始学习数电时波形上会出现的直到上升沿来临时才改变数据。

3. 建立时间、保持时间时序图

        结合波形,可以再次理解一下建立时间和保持时间;图中绿色部分表示建立时间的裕量(margin),蓝色部分表示保持时间的裕量。时间裕量,其实就是电路在满足时序约束的条件下,不等式两边时间的差值。

        建立时间裕量为:时钟路径时间 - 数据路径时间

        保持时间裕量为:数据延迟时间 - (保持时间+时钟偏移)

4. 题目举例

Q1:考虑线网延迟,某电路各种延迟值(单位:ns)如下,时钟周期为 15ns,请判断该电路的建立时间和保持时间是否存在violation?

        A1: 根据约束条件不等式,建立时间有:11+2+9+2+2>15+2+5+2-2,max data path time超过了min clk path time,因此存在建立时间violation。保持时间有:9+1+6+1>3+9+3-1+2,满足保持时间约束,不存在hold violation。

Q2:某公司面试题:时钟周期为 T, 第一级触发器 D1 建立时间最大值为 T1max,最小值为 T1min。组合逻辑最大延迟为 T2max, 最小值为 T2min。问:第二级触发器 D2 的建立时间和保持时间应该满足什么条件?

        A2:同样根据约束条件不等式,对建立时间:T2max+Tset<=T,对保持时间:T2min>=Thold。需要注意的是本题没有考虑Tcq和Tskew,同时存在干扰信息,要根据已知条件进行取舍。

Q3:一种简单的分频电路如下所示。该触发器建立时间为 3ns, 保持时间为 3ns, 逻辑延迟为 6ns,两个反相器延迟为 1ns,连线延迟为0。则该电路的最高工作频率是多少?

        A3:来吧,还是根据约束的基本不等式,最高工作频率受的是建立时间的限制,因此有:Tmin=6+3+1=10ns,fmax=100Mhz。

        这里的逻辑延迟要理解为时钟端到 Q 端的延迟,一定要注意不是电路中的组合逻辑延迟。因为触发器 Q 端和 D 端连接,可以理解为两个触发器直接进行传输,所以 data path 没有组合逻辑延迟,只有一个反相器延迟。因为只有一个钟,所以也没有时钟偏移,clock path 的反相器延迟也是迷惑项。

Q4:同时出现两种违例怎么办?

        A4:一般先修hold violation比如用延时更大的Tcq,因为解决完hold的问题后,可以用降频的方法解决setup violation;如果反过来先修好了set,hold约束跟T无关,无法通过改变时钟频率的方式来解决。

Q5:需要好好理解的一题

        A5:这是一个触发器到自身的反馈电路,可以通过画波形的方式来求解建立时间和保持时间。首先很容易画出D和CK的波形,而Clock在CK的基础上有Tskew,需要提前1.2ns,Data相比D有组合逻辑延时,需要提前0.9+1.2=2.1ns。

        (1)可以得到Tset = 2+2.1-1.2 = 2.9ns,Thold = 1.2+1.5-2.1 = 0.6ns。这印证了:对于电路元件,数据延时会增加建立时间,减小保持时间;时钟偏移会增加保持时间,减小建立时间。很好理解,当数据延时高了,需要提早时钟沿更多到达,因此建立时间增加;时钟偏移后,需要在时钟沿到来后维持更长时间,因此保持时间增加。

        (2)最高工作频率由公式可得:f=1/(1.8+1.2+2)= 200Mhz。

  • 87
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值