数字电路基础知识——锁存器与触发器的建立时间和保存时间
本节主要介绍关于数字IC设计的基本时序分析问题,分析其建立时间和保持时间尤为重要。

一、D触发器的建立时间与保持时间
  1. 建立时间Tsu(setup)
    触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;

    建立时间决定了触发器之间组合逻辑的最大延迟。也就是说,组合逻辑延时越大,留给建立时间裕量就越小。见后面的例子分析

  2. 保持时间Th(hold)
    触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。如果保持时间不够,数据也不能被打入触发器;

    保持时间决定了触发器之间组合逻辑的最小延迟。也就是说,组合逻辑延时越小,留给建立时间裕量就越小。

    下图所示即为数据稳定传输必须满足建立和保持时间的要求。

二、Latch的建立时间与保持时间。

锁存器的建立和保持时间是以最后CLK高电平消失时间点为基准的,如下图所示:

  1. 建立时间(tsetup
    建立时间是在CLK高电平消失之前的最小建立时间
  2. 保持时间(thold
    建立时间是在CLK高电平消失之后的最小保持时间

TClk-Q:是CLK电平触发时到数据Q改变时的延时。
tD-Q:电平触发期间,输出由数据输入D改变到输出Q改变的延时。

在Latch的输入开关断开和环路开关闭合时,有效的D输入信号在跳变前(建立时间)和跳变后(保持时间)的短时间内不能发生变化。以保证数据被锁存。

三、建立时间裕量和保持时间裕量。
  1. 建立时间裕量
    如果数据信号在时钟边沿触发之前的持续时间要大于建立时间Tsu,那么超出的部分时间即为建立时间裕量。

  2. 保持时间裕量
    如果数据信号在时钟边沿触发之后的保持时间要大于保持时间Thd,那么超出的部分时间即为保持时间裕量。

  3. 抖动(jitter)和时钟偏斜(skew)
    1)抖动:
    指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关布线对其没有影响
    或者由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。
    2)时钟偏斜:
    指同样的时钟产生的多个子时钟之间的延时差异。包含时钟缓冲器的多个输出之间的偏斜;也包含由于PCB走线的误差造成的接收端和驱动端时钟信号之间的偏移。因此,在时序设计中必须考虑这些因素。

四、 一个最简单的例子:同步时序电路。这里对后面一个寄存器进行建立时间裕量分析。(面试中经常遇到的问题)----经常画画这两个图:

在FPGA中,寄存器到寄存器之间传输,把setup和Holdup放进去,分析下两个寄存器之间的延时,以及各时间的计算。(如下图所示)

  1. REG1,2分别是源端和目的端寄存器。

  2. 路径1 表示数据由CLK端到达D2端,中间需要经过REG1和组合逻辑延迟。即T1.

  3. 路径2,3,表示时钟CLK到达源端REG1目的端REG2的时间,两者之间的相差我们称之为时钟偏斜(skew)

  4. 时钟偏斜 (skew): T3-T2 = deltaT

  5. **T1:**指从REG1的CLK端到Q1端,再由组合逻辑或路径延迟到D2端。T1值越小,建立时间越大,但是保持时间越小,所以要折中设计。
    T1 = Tcq +Tlogic (T1的寄存器的输出延时为Tcq,组合逻辑的延时为Tlogic)

    1. 建立时间TS :目的时钟端CLK2采集REG2 D2 开始的上升沿与数据起始的差。

    TS=Tcycle -T1 +deltaT(如果建立时间不够,可以降频,使得Tcycle增大)

    建立时间余量= TS- 寄存器建立时间门限(最小)
    裕量为正则复合设计约束,否则不符合约束

  1. 保持时间Th:REG2 D2端数据需要保持的时间

    Th=T1-deltaT, 之和两级寄存器之间的延时有关

    保持时间余量=Th-保持时间门限值

  2. 因此,寄存器之间的延时(包括组合逻辑延时T1)越小,越容易建立。但是越难保持
    若不存在时钟偏斜,则建立时间必须满足Tcycle -T1 - Tsetup > 0 (裕量大于0)
    保持时间必须满足T1-Th - Tskew > 0 (裕量大于0)

可以看到,必须满足建立时间要求和保持时间要求,即满足如下关系式。
建立时间裕量:Tset_slack = Tcycle -(Tcq+Tlogic)- Tsetup + Tskew>0(Tcq+Tlogic)为T1
保持时间裕量:Thold_slack = Tcq+Tlogic-Thold - Tskew > 0
从中可以看出,建立时间与保持时间要求是一对矛盾的关系,在设计电路时,我们要折中考虑。

数字电路基础知识——锁存器与触发器的建立时间和保存时间(一)相关推荐

  1. 数字电路基础知识|时钟和时序

    时钟的概念 时钟对数字电路而言非常重要,没有时钟数字电路就没法工作,其全称是时钟频率,一般由晶振来提供时钟频率. 在数字电路中,所有数据.逻辑单元等状态的更新都是以时钟为基础的,时钟频率在数字电路中起 ...

  2. 数字电路基础知识——乘法器的设计(二)( 串行、流水线、有符号数八位乘法器)

    数字电路基础知识--乘法器的设计(二)( 串行.流水线.有符号数八位乘法器) 前面一节关于乘法器的具体实现方式有很多种方法,均有各自的优缺点. 本节将再介绍一下两种乘法器的设计,分别用Verilog语 ...

  3. 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现

    数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...

  4. 数字电路基础知识——组合逻辑电路(奇偶校验电路、数据比较器的设计)

    数字电路基础知识--组合逻辑电路(奇偶校验器.比较器的Verilog设计) 本次主要介绍组合逻辑电路中的奇偶校验电路以及比较器的设计,以及相干的实例来熟悉这两种电路. 一.奇偶校验电路 奇偶校验码 奇 ...

  5. 数字电路基础知识——组合逻辑电路之乘法器的设计(一)—— 并行、移位相加、加法树、查找表乘法器

    数字电路基础知识--乘法器的设计(一)-- 并行.移位相加.加法树.查找表 乘法器的设计主要应用在数字信号处理和数字通信,本节主要介绍乘法器的四种实现方法.使用并行乘法器.移位相加乘法器.查找表乘法器 ...

  6. 数字电路基础知识——组合逻辑电路实现一些简单逻辑电路 (一)(用Verilog实现:绝对值函数运算(补码问题),取对数函数(移位寄存器),取整函数)

    数字电路基础知识--组合逻辑电路实现一些简单逻辑电路 (一)(用Verilog实现:绝对值函数运算(补码问题),取对数函数(移位寄存器),取整函数) 在数字逻辑设计中,本节介绍绝对值运算函数如何用Ve ...

  7. 基本概念:线与逻辑、锁存器、缓冲器、建立时间、缓冲时间

    基本概念:线与逻辑.锁存器.缓冲器.建立时间.缓冲时间 栏目:我的文章 | 作者:乐乐熊 | 点击: 68 | 回复:0 | 2006-5-25 15:49:11 锁存器:输出端的状态不会随输入端的状 ...

  8. 为什么D触发器需要建立时间与保持时间

    为什么D触发器需要建立时间与保持时间 定义 建立时间:时钟有效沿到来之前的某段时间内,数据必须稳定,这段时间称为建立时间,用Tsetup或者Tsu表示. 保持时间:时钟有效沿到来之后的某段时间内,数据 ...

  9. (8)FPGA面试题触发器满足建立时间和保持时间的原因

    1.1 FPGA面试题触发器满足建立时间和保持时间的原因 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题触发器满足建立时间和保持时间的原因: 5)结束语. ...

  10. 传输门、D 锁存器、D触发器、建立时间与保持时间

    TRANSMISSION GATE,D LATCH,DFF,SETUP &HOLD Remark:plysicaldesign4u Transmission Gate D latch(时钟电平 ...

最新文章

  1. java. 算法分析,Java常用算法分析
  2. 冒号表达式在计算帧率中的作用
  3. 探究netty的观察者设计模式
  4. 位运算一些简单的应用
  5. 结束python服务器进程_服务器端后台持续执行python程序小demo
  6. css实现浏览历史小块
  7. rocketmq-console集群监控平台搭建
  8. 什么是saashrm
  9. 【原】android【手机】屏幕适配解决方案,完美适配适配hdpi,xhdpi,xxhdpi的做法。...
  10. c语言标准课程方案,《C语言程序设计》课程标准方案.doc
  11. 37℃已成历史:人类体温越来越低意味着什么?
  12. securecrt 中文横着显示解决
  13. POJ-1191 棋盘分割 动态规划
  14. python---之np.prod() 函数计算数组元素乘积等
  15. C#设计模式--工厂方法模式
  16. linux 备份配置文件
  17. linux测试网络带宽 360,Linux版360浏览器提示此为beta测试版本,已超过测试时间3个月的处理...
  18. 服务器怎么设置自动拨号,打造全自动的拨号上网服务器
  19. 生产制造追溯系统-再说条码打印
  20. 打开word时显示microsoft visual basic运行时错误没有注册类怎么解决?

热门文章

  1. 【敏捷2.2】极限编程XP
  2. android gradle下载
  3. python实现定位附近的_c#教程之使用GPS经纬度定位附近地点(某一点范围
  4. 闲谈Python语言入门
  5. Git 64位安装包下载
  6. 步进电机和伺服驱动器接线
  7. 苹果cms去掉html,苹果cmsV10 隐藏显示视频设置教程
  8. 射频电路设计——传输线理论(Transmission Line Analysis) 【上】
  9. java面向对象是什么意思_java什么是面向对象
  10. 关于数据库学习的一些知识盲区