• 建立时间保持时间方程及其影响


    (注:本文翻译自:http://www.edn.com/design/systems-design/4392195/Equations-and-Impacts-of-Setup-and-Hold-Time

    在深入了解建立时间保持时间方程及其影响之前,先让我们简单的了解一下什么事建立时间和保持时间。

    建立时间:建立时间定义为为了使数据正确的锁存,其在时钟有效沿到来前必须稳定的最小时间。任何这一时间的违例将会导致数据捕获错误并产生建立时间违例。

    保持时间:保持时间定义为时钟有效沿后数据必须保持稳定的最小时间。这一时间的违例将导致数据锁存错误,并产生保持时间违例。

    建立时间保持时间方程

      首先定义clock-to-Q延时(Tclock-to-Q),在一个上升沿触发的触发器中,输入信号在时钟的上升沿捕获,并在一小段延时之后(Tclock-to-Q)产生对应的输出。为了使触发器能正确的完成上述任务,其输入端的数据必须在时钟上升沿之前保持一段时间(Tsetup)及之后保持一段时间(Thold)。此外,时钟信号通过时钟树的微小差异称为时钟扭斜(Skew)。

      从图-1我们可以得到建立时间和保持时间的方程。

    图-1 讨论2个触发器的情况

      在上图中,在0时刻,FF1处理D2FF2处理D1。数据D2传播到FF2需要一段时间,从FF1的时钟端开始计时,很明显时间=Tc2q+Tcomb.为了让FF2正确的锁存数据,D2必须在时钟树的第2个上升沿到FF2之前在FF2的D端保持稳定一段时间(setup);因此,为了满足建立时间,方程如下:

    Tc2q + Tcomb + Tsetup ≤ Tclk + Tskew ------- (1)

      为了更好的理解建立时间和保持时间,可以看看下面的时序图:

    图-2 建立时间保持时间时序图

      为了避免保持时间违例,数据在时钟上升沿之后还需要保持一段时间(hold)。满足保持时间的方程如下:

    Tc2q + Tcomb ≥ Thold + Tskew ------- (2)

      从上述两个方程可以很容易的看出,时钟的正扭斜对建立时间有好处对保持时间则反之。有效输入窗如下:

    图-3 有效输入窗

     

    建立时间保持时间例子分析

      考虑图-4的两个D触发器,基于详细的时序信息,我们可以计算出没有时序违例情况下的电路的最大时钟频率。

      

    图-4 两个D触发器的详细时序信息

      时钟插入延时对每个D触发器都是相同的,它不会约束给定的最大时钟工作频率。从上图可看出,其不会违反保持时间约束。考察建立时间有:

    (Time available for data to travel from FF1 to FF2) ≥ (Time needed for data to travel from FF1 to FF2)
    Tclk + Tskew ≥ Tc2q + Tcomb + Ts2
    Tclk + 0.25ns ≥ 0.1ns + 5ns + 3ns
    Tclk ≥ 7.85ns

      最小的时钟周期为7.85ns,最大的频率为127.4MHz.

      从上面的例子可以看出,改善最大时钟频率可以采用如下3种方式:

      1、减小组合逻辑延迟。

      2、如果可以的话,增大时钟扭斜。

      3、用更快的D触发器(更小的Tc2q和Tsetup)。

    时钟到Q端延时对建立时间保持时间约束的影响

      因为触发器内部的锁存电路是两个背靠背的反相器(图-5),其IO特性如图-6。

      为了方便解释,假设0V对应逻辑0,5V对应逻辑1;从图-6可以看出,如果背靠背反向器的输入不是正确的0V,5V,它需要一定的锁存周期来产生稳定的反相器输出,这段延时称之为时钟到Q端延迟(Tclock-to-Q)。

    图-5 锁存用背靠背反向器

    图-6 反向器IO特性

      如果上述延时在触发器之间累加的话,可能会发生数据信号在期望捕获的时钟沿miss掉。

      (全文完)

  • 相关阅读:
    深入浅出理解Javascript原型概念以及继承机制(转)
    表达式计算器的实现
    C#中使用Oracle存储过程返回结果集
    基于.Net的单点登录(SSO)解决方案
    让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
    项目经理应该把30%的时间用在编程上(转)
    我是如何打败拖延症的(转)
    我不是个内向的程序员,我只是很忙(转)
    这个项目要多久开发完成?(转)
    从零开始编写自己的C#框架(3)——开发规范(转)
  • 原文地址:https://www.cnblogs.com/lkiller/p/3308305.html
Copyright © 2020-2023  润新知