建立时间和保持时间的分析(setup time and hold time)

首先对建立时间和保持时间要有一些初步的理解

  • 书面解释
    建立时间:是指在时钟上升沿到来之前数据必须保持稳定的时间。
    保持时间:是指在时钟上升沿到来以后数据必须保持稳定的时间。
  • 对于每一个寄存器来说,建立时间和保持时间都是一个确定的参数,目的是为了在数据采样的时候数据能够稳定

建立时间

在这里插入图片描述
用这个简单的两个寄存器来对建立时间和保持时间进行分析
我们主要对寄存器reg2来进行分析
首先我们要明确数据到达寄存器reg2所需要的时间
其中的参量:
Tclk1:时钟到达寄存器reg1的时间
Tco:数据在时钟到来之后在q端输出数据的时间(数据待在reg1里面的时间)
Tdata:数据在路线上消耗的时间,从reg1到reg2所消耗的时间(在这里只有两个寄存器组成的电路,但是在实际中可能是许多组合逻辑电路,此时产生的延时就非常可观了)
在这里插入图片描述
数据到达寄存器reg2的时间=Tclk1+Tco+Tdata

然后我们再来看下图
Tclk1:时钟到达寄存器reg1的延迟(因为我们不分析这个,所以不用管)
Tclk2:时钟到达寄存器reg2的延迟
Tsu:建立时间
在这里插入图片描述
首先来看一下Clock pad

  • lauch edge 发射沿(0时刻)
  • latch edge (一个时钟周期)

因为在这个电路结构里,寄存器reg2是第二个时钟的上升沿才进行采样,第二个时钟沿的上升沿(第二个绿色的箭头)就是我们的采样时刻

按照建立时间的定义,假设数据从左向右传输,对于寄存器reg2,在第二个时钟沿到来之前,数据必须要保持一段时间不变

Required这个波形来看

  1. reg2第二个时钟沿只能无限地接近latch edge ,因为时钟信号到达 reg2肯定会有延迟,当无限接近于latch edge 的时候,为最优情况比如数据1
  2. 数据必须在reg2第二个时钟沿到来的Tsu(保持时间)之前就到达寄存器reg2的D端
  3. 如果数据的延迟很高,没有足够的建立时间,那么这些数据就很可能出现错误,比如数据4,最坏的情况也要是数据3,恰好数据稳定了Tsu的时间
    在这里插入图片描述

保持时间

一样使用这个图
在这里插入图片描述
跟上面的图一样
其中的参量:
Tclk1:时钟到达寄存器reg1的时间
Tco:数据在时钟到来之后在q端输出数据的时间(数据待在reg1里面的时间)
Tdata:数据在路线上消耗的时间,从reg1到reg2所消耗的时间(在这里只有两个寄存器组成的电路,但是在实际中可能是许多组合逻辑电路,此时产生的延时就非常可观了)
Tcycle:一个时钟的周期

在这里插入图片描述
由上式可以推断出:
数据结束的时刻=Tclk1+Tco+Tdata+Tcycle
然后我们再来看看下图
在这里插入图片描述
按照保持时间的定义,假设数据从左向右传输,对于寄存器reg2,在第二个时钟沿到来之后,数据必须要保持一段时间不变

为了能够稳定采集数据,寄存器当然希望数据保持的时间越长越好
为了方便理解,给出了a、b、c三种情况
图下的方框为保持时间门限Th(T hold)
在这里插入图片描述

  1. 如果数据不能在上升沿到来之后稳定保持Th的时间,则不能保证采集的数据是有效的数据(数据 a
  2. 能采集到有效数据的最坏情况,就是极限的时候(数据 b
    数据结束时刻-时钟信号上升沿时刻=Th
  3. 一般情况下,只要
    数据结束时刻-时钟信号上升沿时刻>Th
    就能实现数据的稳定采集(数据 c

结语

这些都是从b站的尤老师fpga时序分析里摘抄理解来的,如果还是不理解的话,建议到b站上看看视频
FPGA时序分析实战

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STA分析是基于同步电路设计模型的,在数据输入端,假设外部也是同时钟的寄存器的输出并且经过若干组合逻辑进入本级,而输出也被认为是驱动后一级的同时钟的寄存器。在不设置约束的情况下,纯组合逻辑的输入-》输出不得超过一个T,否则也会被认为是TImingviolaTIon.   1.TImingpath TImingpath就是时间线。Timing就是从起始位置的时间点到终点位置的时间点之间的时间长度。Path是指跟位置相关,即时间起始或终点的位置。Timingpath就是某位置的某一时间点到另一位置的某个时间点。对于DFF来说,上升沿类似于一瞬间的脉冲,只有在这短短的一瞬间,数据才允许通过。对于DFF来说,有两个输入点:数据D和时钟CK,有一个输出点:数据Q。由于是时间比较,所以对于D和CK一定要有一个共同的起始时间点,如下图中的A点出现clk上升沿的时刻。如下图,假设我们分析DFF2的数据和时钟到达的时间。二者共同的出发点是A的上升沿,因为A位于时钟通路上,FF1的时钟经过A点到达FF1-C点,在FF1-C上升沿打开FF1,然后数据才能从FF1-Q输出,进而传递到FF2-D。在A点,FF2的时钟沿经过clocktree,达到FF2-C点。所以数据走过的路程是:   Datapath:A-》clk_tree_buf1-》FF1-C-》FF1-Q-》Comb_logic-》B   而对于FF2来说只要满足下个周期的上升沿能够采样即可,所以时钟到达FF2-C的路径是:   Clkpath:A-》clk_tree_buf2-》C.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值