一文解决关于建立时间和保持时间的困惑

公众号【TechDiary】,专注技术分享,手把手教你成为技术大神
在这里插入图片描述

之前介绍数字电路复位信号设计的文章中有提到过很多次建立时间、保持时间的概念,事实上建立/保持时间(setup time & hold time)是同步电路设计中基石一般的存在,因此也成为各大IC公司笔面试当中的必考题。当然刚入门FPGA方向的同学可能对这个概念陌生一点,但是如果想要在FPGA方向有所研究的话,处理建立保持时间违例(Vivado中体现的变量名为WNS & TNS & WHS & THS)是最最基础的操作。

本篇文章将从底层原理讲起介绍建立保持时间的概念由来以及时序要求,一文解决关于建立保持时间的大部分困惑。

  • 什么是建立时间、保持时间

  • 为什么会有建立时间、保持时间

  • 建立保持时间对于电路时序的影响


什么是建立保持时间

触发器(Flip-flop)是数字电路当中一个最基本的电路单元,而建立时间和保持时间正是触发器中的一个概念 ,以下引自Wiki百科:

Setup time is the minimum amount of time the data input should be held steady before the clock event, so that the data is reliably sampled by the clock.

Hold time is the minimum amount of time the data input should be held steady after the clock event, so that the data is reliably sampled by the clock.

建立时间(通常表示为 t s u t_{su} tsu)指在时钟上升沿来临之前信号保持稳定的最小时间。

保持时间(通常表示为 t h d t_{hd} thd)指在时钟上升沿来临之后信号保持稳定的最小时间。

下图直观地表示了建立时间与保持时间相对于时钟上升沿的位置:
在这里插入图片描述
简而言之,触发器上升沿采样的前后一段时间内数据必须保持稳定,否则采样出的数据将会出现未知态,也就是我们常常说的“亚稳态”。数字电路中的亚稳态现象是威胁电路稳定工作的罪魁祸首,因此我们需要研究建立时间、保持时间的规律,尽可能避免亚稳态现象的产生。


为什么会有建立时间、保持时间

我们了解了建立时间、保持时间的概念后,可能心中有这样的疑问:为什么电路中会有建立时间、保持时间呢?影响建立时间、保持时间长短的因素有哪些?当我们在触发器层次无法解答这些问题时,就需要深入下去,从触发器的内部结构去探究这个问题。
在这里插入图片描述
一个简单的CMOS上升沿触发器可以看作是由上面的几个基本元件组成的,其中T1、T2、T3、T4为传输门,I1、I2、I3、I4为反相器。

在这里补充一下传输门的相关知识,传输门实际由一对N沟道和P沟道的MOS管并联构成,NMOS的gate为高时导通,PMOS的gate为低时导通。上面的表示符号带非端的连接口即为PMOS的gate端,对面的为NMOS的gate端。当PMOS端为低电平,NMOS端为高电平时传输门导通,反之传输门关断。因此可以简单的理解传输门是一个电路开关。以图中的传输门为例:

  • 当clk为低电平时红色传输门导通,蓝色传输门关断
  • 当clk为高电平时红色传输门关断,蓝色传输门导通

我们将整个过程分为clk为低电平、高电平、上升沿三个阶段分析:

1.clk为低电平时

根据上面的分析,T1、T4为导通状态,我们可以将其看作是一个具有延时效应的连线,T2、T3为关断状态,我们可以去除掉相关电路元件。此时,电路被划分为了两截,如下所示:
在这里插入图片描述
容易分析出,此时左边部分的电路 Q m ‾ \overline{Q_m} Qm将会随着D变化而延时变化,极性与D相反。右边部分的电路,由于T3传输门关断,右边部分的信号将会维持上一时态的 Q ‾ \overline Q Q不变,两个并联的方向相反的反相器起到了一个锁存的作用,此时电路的输出将仍旧保持上一个状态 Q Q Q

2.clk为高电平时

clk为高电平时,分析方法与低电平时相似,可以得到下面的图:
在这里插入图片描述
此时左半部分的电路起到锁存信号的作用,锁存过程之后信号 Q m ‾ \overline {Q_m} Qm处于稳定状态,Q也将会随着 Q m ‾ \overline {Q_m} Qm的稳定趋于稳定。

3.clk上升沿时

当clk上升沿时,即clk由低电平变为高电平的过程。此时我们来分析建立时间与保持时间具体是由什么原因产生的:

  • 建立时间

当时钟处于低电平时, Q m ‾ \overline {Q_m} Qm将随着D输入的变化而变化,时钟高点平时将会对 Q m ‾ \overline {Q_m} Qm进行锁存。我们需要意识到的是,数据信号通过传输门以及反相器是需要消耗时间的,因此触发器的建立时间指的是数据通过T1、I1至 Q m ‾ \overline {Q_m} Qm的时间。这时建立时间的存在意义就大白天下了,我们需要在进入时钟高电平阶段前将稳定的数据送入到锁存处,由于电路延时的原因,才需要建立时间的存在。当然,上面的结论是忽略了时钟本身的偏移的,事实上建立时间也有时钟偏移的影响,因此也会出现负建立时间的情况

  • 保持时间

当时钟进入高电平后, Q m ‾ \overline {Q_m} Qm进行锁存,并经过T3、I3后输出到Q端,因此保持时间本质上是数据通过T3、I3的时间,保持时间过后,数据才能保证稳定。同样的,上面的结论也是忽略了时钟本身偏移的,只是保持时间发生于时钟沿之后,因此锁存时时钟沿必须到达,因此不会出现负的保持时间(即在时钟沿到达前数据稳定),最小的保持时间为0。

总结一下:

  • 建立时间是在时钟上升沿来临之前将数据锁存的时间
  • 保持时间是在时钟上升沿来临之后将锁存的数据输出的时间

建立保持时间对于电路时序的影响

有了建立时间和保持时间的要求,整个电路系统中每一个触发器都需要满足这个时序的约束条件。如此庞大的工作量现在已经由EDA软件代替计算,但是我们仍需要了解建立保持时间对于其他电路参数的约束,才能在出现违例的情况下修改电路结构,完成既定要求的设计。

我们考虑下面这个常见的情形:
在这里插入图片描述
我们对后一个触发器进行时序分析,两个触发器之间有一段组合逻辑电路,组合逻辑延时我们暂称为 T c o m b T_{comb} Tcomb;D触发器输出与输入会有一定的器件延时,用 T c q T_{cq} Tcq表示;时钟偏移用 T s k e w T_{skew} Tskew表示,此外我们用 T c l k T_{clk} Tclk表示时钟周期。

我们以第一个触发器的时钟clk为基准,可以推导出下图所示的时序关系:
在这里插入图片描述
其中clk_skew为时钟偏移 T s k e w T_{skew} Tskew后得到的,clk上升沿至第一个触发器输出Q1的时间为 T c q T_{cq} Tcq,Q1至D2的延时为组合逻辑延时,最后D2的到达时间相对于第二个clk_skew上升沿的时刻可以用下式表示:
T a r r i v e = T c q + T c o m b − T s k e w T_{arrive} = T_{cq} + T_{comb} - T_{skew} Tarrive=Tcq+TcombTskew
由于到达时间需要满足第二个时钟沿的保持时间要求,因此有下式成立:
T a r r i v e > T h d T_{arrive} > T_{hd} Tarrive>Thd
且到达时间同时需要满足第三个时钟沿的建立时间要求,因此有下式成立:
T c l k − T a r r i v e > T s u T_{clk}-T_{arrive} > T_{su} TclkTarrive>Tsu
整理上面的式子,我们就能得到下面两个常见的约束式:
T h d < T c q + T c o m b − T s k e w T_{hd} < T_{cq} + T_{comb} - T_{skew} Thd<Tcq+TcombTskew

T s u < T c l k + T s k e w − T c q − T c o m b T_{su} < T_{clk}+T_{skew}-T_{cq}-T_{comb} Tsu<Tclk+TskewTcqTcomb

上面两个式子就是同步时序电路中的经典时序约束,对应公式我们可以得到当建立时间或者保持时间违例时需要调整电路的哪些参数:

对于建立时间违例,我们可以采取的措施有:

  • 增大 T c l k T_{clk} Tclk:大时钟周期,即降低时钟频率

  • 增大 T s k e w T_{skew} Tskew:在时钟路径上加缓冲器(buffer),让时钟更晚到来

  • 减小 T c q T_{cq} Tcq:更换具有更小器件延时的触发器

  • 减小 T c o m b : T_{comb}: Tcomb组合逻辑优化,例如将串行的组合逻辑优化为并行逻辑,或是在其中插入触发器(即流水线设计)

对于保持时间违例,我们可以采取的措施有:

  • 增大 T c q T_{cq} Tcq:更换具有更大器件延时的触发器
  • 增大 T c o m b : T_{comb}: Tcomb增加组合逻辑运算时间
  • 减小 T s k e w T_{skew} Tskew:优化时钟路径,让时钟更早到来

可以看到保持时间与时钟周期无关,剩余的参数与建立时间恰好相反,建立时间和保持时间的关系如同博弈一般。芯片世界中的最大规律就是“我全都要”是不可能的,在夹缝中生存,协调两者的关系才是常态。恐怕这也是现实生活里的规则吧~


TechDiary】,专注原创技术分享

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值