首页 > 其他分享 >数字电路-建立时间和保持时间详解

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

时间:2024-07-13 23:55:10浏览次数:12  
标签:建立 数字电路 详解 时间 保持 时钟 数据 延迟

对于数字系统而言,建立时间(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)不要大于触发器的保持时间,以免数据被冲刷掉。那么保持时间需要满足的表达式为:

Tcq+Tcomb>=Thd+Tskew

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

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 的反相器延迟也是迷惑项。

标签:建立,数字电路,详解,时间,保持,时钟,数据,延迟
From: https://blog.csdn.net/zangzangbupei/article/details/140407867

相关文章

  • 用扣子(Coze)搭建Bot智能体详解
    1.扣子(Coze)是什么?下面是官方文档里的介绍:扣子是新一代AI应用开发平台。无论你是否有编程基础,都可以在扣子上快速搭建基于大模型的各类Bot,并将Bot发布到各个社交平台、通讯软件或部署到网站等其他渠道。扣子官网稍微解释一下,Coze 是字节跳动旗下一款面向C端用户的......
  • 【数据结构与算法】详解二叉树下:实践篇————通过链式结构深入理解并实现二叉树
          ......
  • 【CPO-TCN-BiGRU-Attention回归预测】基于冠豪猪算法CPO优化时间卷积双向门控循环单元
    %数据准备%假设有一个输入变量X和一个目标变量Y%假设数据已经存储在X和Y中,每个变量为列向量%参数设置inputWindowSize=10;%输入窗口大小outputWindowSize=1;%输出窗口大小numFeatures=1;%输入变量的数量numFilters=32;%TCN中的滤波器数......
  • 重载、覆盖(重写)、重定义(同名隐藏)的区别 (超详解)
    ......
  • Java-static关键字详解
    目录1.static关键字的用途和作用用途作用2.在类中使用static修饰成员变量、方法和代码块修饰成员变量修饰方法修饰代码块修饰内部类3.常见误区误区1:静态变量在每个实例中都有一份误区2:静态方法可以访问实例变量和实例方法误区3:静态代码块在每次创建对......
  • 电源纹波测试,从原理图到PCB板和示波器探头设置详解(适合新手小白)
    一、什么是纹波?    简单来说纹波就是叠加在直流信号上的交流干扰信号,是衡量电源好坏的一个重要标准。二、纹波测试点在原理图什么位置?    严谨起见我们尽量选择电路的终端进行测试,比如给MCU芯片供电的引脚,我们需要测量放置在MCU端的电容两端的纹波。如下图......
  • [Redis]字符串详解
    Redis中的字符串是可以修改的字符串,在内存中它是以字节数组的形式存在的。我们知道C语言里面的字符串标准形式是以NULL(即0x\0)作为结束符,但是在Redis里面,字符串不是这么表示的。因为要获取以NULL结尾的字符串的长度使用的是strlen标准库函数,这个函数的算法复杂度是0(n......
  • Java中的CyclicBarrier详解
    Java中的CyclicBarrier详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、CyclicBarrier简介CyclicBarrier是Java并发包中的一个工具类,用于实现多线程任务分解成多个阶段并行执行的场景。它允许一组线程互相等待,直到所有线程都达到某个公共屏障点(b......
  • Java中的接口多继承详解
    Java中的接口多继承详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java中,类的多继承是不被允许的,但是接口的多继承却是被允许的。接口多继承可以使得类具备多种行为,并且解耦合代码,有助于提升代码的可维护性和可扩展性。本文将详细介绍Java中接口多......
  • Java中的类与对象详解
    Java中的类与对象详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java编程中,类与对象是两个最基本的概念。类是对象的模板,对象是类的实例。理解和掌握类与对象的概念是学习Java的基础。本文将详细介绍Java中的类与对象,包括类的定义、对象的创建、构......