前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >建立和保持时间及时序简单理解

建立和保持时间及时序简单理解

作者头像
碎碎思
发布2021-09-07 15:18:20
1.4K0
发布2021-09-07 15:18:20
举报
文章被收录于专栏:OpenFPGAOpenFPGA

建立和保持时间及时序简单理解

建立时间和保持时间的理解都是基于D触发器,关于D触发器可以翻看数电的介绍。或者通过下面的链接了解:https://zh.wikipedia.org/wiki/%E8%A7%A6%E5%8F%91%E5%99%A8

建立时间

D触发器的正常工作是有定时要求的,必须满足建立时间和保持时间的要求。

在时钟上升沿出现之前,D的值都必须在一段指定的时间内保持稳定,否则D触发器无法正常工作。在吋钟上升沿之前D需要保持稳定的最短时间称为建立时间。如果在建立时间内D的值发生了变化,那么将无法确定Q的电平,其可能为一个不确定的电平值。下图中,在点a处,在建立时间窗口之前D发生改变,Q迅速变为1(点b)。然而,在点c在建立时间窗口之内D输入发生改变,在接下来相当长的一段时间内(几乎整个时钟周期)Q输出电平在1和0之间无法稳定(点d)。

保持时间

在时钟的上升沿之后的一段时间内,D的输入值也不允许改变,否则也会造成Q输出得不稳定,这个窗口被称为保持时间。建立时间和保持时间在上图中表示为s和h。

亚稳态

上图中,当输入D在建立时间和保持时间窗口内发生变化时,在此后的几乎一个时钟周期内,输出电平既不是0也不是1,处于不确定值。这种不稳定的状态也被称为亚稳态。亚稳态的输出将在下一个时钟的上升沿之前稳定为0或1。如果亚稳态输出被用于其他逻辑门的输人,那么将会造成难以预计的不良影响,可能会造成连锁反应,使整个数字系统工作不稳 定。因此,必须采取一定的设计手段避免D触发器进入亚稳态,或者避免亚稳态被传递,影响整个系统的稳定性。

跨始终域的相关可以查看《FPGA跨时钟域处理3大方法》《高级FPGA设计技巧!多时钟域和异步信号处理解决方案》。

关于时序

理解芯片设计中与定时相关的各方面知识有助于深刻理解集成电路设计技术。各种类型的逻辑门AND、OR、NAND等,可用于实现逻辑运算,它们都会带来一定的门延迟。它们的延迟可能非常小,但不是零。当这些门的输入发生变化时,需要经过一定的延迟才会出现输出变化。此外,信号通过连接逻辑门的信号线时,还存在着传播延迟。

如果我们仔细观察综合后得到的网表,就会发现一个D触发器的输入来自于另一个触发器的输出或两个D触发器之间组合逻辑的输出。那么一个数字系统的最高工作作频率是如何确定的呢?这需要我们了解两个触发器之间的所有延迟,如图5.35所示。

Tclk:时钟周期。两个时钟上升沿之间的时间。例如,对于250MHz的时钟频率,时钟周期为4ns,对于500MHz的时钟频率,时钟周期为2ns。

Tctoq:这是触发器输出相对于其时钟上升沿之间的延迟。

Tgate:逻辑门的延迟。这里包括了传播时延。

Tsetup:目的触发器的建立时间。

Tskew:时钟偏移。同一个时钟到达不同的触发器的时钟引脚经历的路径可能存在差异,造成它们的时钟上升沿不是同时出现的,这种偏差称为时钟偏移。通过使用时钟树综合工具具可以有效地减小时钟偏移,但不能消除时钟偏移。

从时钟的工作频率角度来看,数字系统可以划分为两类,一类时钟频率是间定的,另一类时钟频率是不间定的。时钟频率间定时,数字系统的设计目标是确保两个触发器之间的延迟不超过1个时钟周期(如常用的接口电路,包括PCIe、SATA、USB等)。另一种数字系统在设计时,要尽可能地降低门延迟,最大限度地提高系统的时钟频率(例如,处理器设计)。

下面分析给定时钟周期Tclk后系统能够承受的最大门延迟Tgate。

Tctoq+Tgate(max)=Tclk-Tskew-Tsetup

即:

Tgate(max)=Tclk-(Tskew+Tsetup+Tctoq)

当门和互联线的延迟之和超过了允许的Tgate(max)时,系统就会出现定时错误。

另一种与定时相关的错误是保持时间错误。这种情况通常发生在源触发器的输出和目标触发器的输入之间逻辑门过少或者根本没有逻辑门的情况下。在这种情况下,源触发器中时钟上升沿到Q产生稳定输出的延迟可能不能满足B的触发器对保持时间的要求。另外时钟偏移可能会加剧这一情况。图5.36和图5.37展示了时钟偏移造成定时错误的两种情况。

图5.36中,CLKT2与CLKT1之间存在偏移,使得在目的寄存器输入端出现了不能满足保持时间的情况,目的寄存器的输出出现了亚稳态。如果时钟偏移过多,如图5.37所示,虽然不会出现保持时间错误,但当前时钟周期的数据没有被正确采样,它被延迟了一个时钟周期,这显然不是设计者的初衷。

事件/边沿检测

最后再补充一个检测的案例。

事件检测或边沿检测在FPGA设计中会经常遇到。当信号发生变化时,我们常常需要检测这种变化,以此触发相应的电路操作。如果输入信号来自同一个时钟域,我们不需要对其进行同步化处理。然而,当输入信号来自不同的时钟域时,我们首先需要将它同步到自己的时钟域上,然后进行边沿检测。进行边沿检测时,有时候我们需要检测上升沿(从低到高的跳变)、下降沿(由高向低的跳变),或任一边沿(任何跳变)。

同步上升沿检测

上升沿检测如图5.38所示。

同步下降沿检测

下降沿检测如图5.39所示。

同步上升/下降沿检测

上升沿和下降沿检测如图5.40所示。

异步输入上升沿检测

异步输入的上升沿检测如图5.41所示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 建立和保持时间及时序简单理解
    • 建立时间
      • 保持时间
        • 亚稳态
          • 关于时序
            • 事件/边沿检测
              • 同步上升沿检测
              • 同步下降沿检测
              • 同步上升/下降沿检测
              • 异步输入上升沿检测
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档