定义

建立时间 Tsu:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的时间。
建立时间决定了该触发器之间的组合逻辑的最大延迟。
保持时间 Th:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的时间。
保持时间决定了该触发器之间的组合逻辑的最小延迟。

为什么要满足建立时间和保持时间

因为触发器内部数据的形成是需要一定的时间的。
如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在 0 和 1 之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。

模型分析

理解建立时间保持时间需要一个模型,如图所示。起点是源触发器 D1 的采样时刻,终点是目的触发器 D2 的采样时刻,假设起点已经满足了建立时间和保持时间要求,现在分析终点采样时刻是否同样满足要求。

用到的参数:

  1. Tco: 数据正确采样后从 D 端到达 Q 端的延时,触发器固有属性,不可改变
  2. TDelay: D1 输出端到 D2 输入端的组合逻辑延时和布线延时
  3. Tsu: 触发器的建立时间,触发器固有属性,不可改变
  4. Th: 触发器的保持时间,触发器固有属性,不可改变
  5. Tclk: 时钟周期
  6. t1: 假设源时钟为 clka,clka 到达 D1 的延时
  7. t2: 同 t1,是 clka 到达 D2 的延时

假设 clk 传输没有延时:

先假设 clk 的传输没有任何延时,则每一个时钟上升沿都会同时到达 D1 和 D2。
时间起点,第一个时钟沿 D1 的采样时刻,时间终点,第二个时钟沿 D2 的采样时刻。物理起点,D1 的输入端,物理终点,D2 的输入端。

建立时间满足(关注数据头):

第一个时钟沿到来时,数据 data 的头部从起点①开始传输,经过 Tco 到达②,在经过 TDelay到达③。根据建立时间的要求,数据在时钟沿到来之前需要保持稳定的最小时间为 Tsu,假设这里刚好满足建立时间的要求,数据 data 到达③后经过 Tsu 的时间到达了④。计时是从第一个时钟沿开始的,采样在第二个时钟沿,采样的时候 data 在位置④,则有
Tco+TDelay+Tsu=Tclk
如果不是最极限的情况,则第二个时钟沿到达③时,data 的头部已经超过④,假设超过④的时间为 t,则有
Tco+TDelay+Tsu+t=Tclk,t≥0
即有
Tco+TDelay+Tsu≤Tclk
如果这条路径是关键路径(Delay 最长),那么系统能跑到的最大频率为
Fmax=min(Tclk)=Tco+TDelay+Tsu

保持时间满足(关注数据尾):

第二个时钟沿到来时,D2 采集数据 data,同时 D1 在采集数据 new data,所以 data 的尾部在第二个时钟沿到来时开始从 D1 的输入端①开始向前传输,经过 Tco 和 TDelay 后到达 D2的输入端③,所以第二个时钟沿到来之后 data 稳定的时间为Tco+TDelay;根据保持时间的定义,有Tco+TDelay≥Th

加上 CLK 的传输时延

事实上 Clock 的传输也是有延时的,如图所示,两个触发器的源时钟为 clka,到达 D1 需要t1 的时间,到达 D2 需要 t2 的时间,t2−t1 其实就是我们常说的 clock skew(时钟偏斜),就是同一个时钟沿达到 D1 和 D2 的时延差别,如果 D1 和 D2 离的很远,那么相应的 clockskew 就会更大。

建立时间

加上 clk 传输时延后,变了的是第二个时钟沿到达 D2 的时间,从 Tclk 变为 Tclk+t2−t1,所以有
Tco+TDelay+Tsu≤Tclk+t2−t1
因为 t2 大于 t1,所以对左边时间的限制其实是放宽了。

保持时间

与建立时间相反,因为第二个时钟沿晚来的原因,实际上对保持时间的要求更严格了
Tco+TDelay−(t2−t1)≥Th

从上面的分析可以看到,数据跑得越快(TDelay 越小),时钟传输时延越大(clock skew 越大)对建立时间的满足越有利,而对保持时间的满足越不利,相反则对满足保持时间越有利,对满足建立时间越不利。建立时间还跟时钟周期有关系,时钟周期越小,越容易发生建立时间违例,而保持时间则跟时钟周期没有关系。在设计中,我们常常关注的是建立时间是否满足要求,因为它关系到我们能使用的最小时钟周期有多小,能否跑到预定的工作频率,而因为时钟通常都是走专门的快速线路,很难存在时钟传输时延过大的问题,所以一般也不会出现保持时间违例的情况。

解决办法

对于建立时间违例的解决办法

  1. 降低时钟频率,即增大时钟周期
  2. 再时钟路径上加缓冲器(buffer),让时钟晚到来。
  3. 更换具有更小器件延迟的触发器。
  4. 组合逻辑优化或插入流水线,缩短关键路径。

对于保持时间违例的解决办法

  1. 在数据路径上插 buffer
  2. 更换具有更大器件延迟的触发器
  3. 优化时钟路径,让时钟更早到来。

可以看出,保持时间和建立时间基本是相反的。但是保持时间与时钟周期无关。

以上是文字说明,参考B站某博主的一个文档,仅支持自己学习,侵权必删!!!如果文字部分没有看懂,这里再提供一个视频讲解。

补充知识点

时间抖动 jitter/偏移 skew

jitter:由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,就是 jitter,指的是时钟周期的变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是一个平均值为 0 的平均变量。指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者 PLL 内部电路有关,布线对其没有影响。由于跟晶振本身的工艺有关,所以在设计中无法避免它能带来的影响,通常只能在设计中留有一定的余量。

skew:是指同样的时钟产生的多个子时钟信号之间的延时差异。skew 通常是时钟相位上的不确定。由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了 skew。完成布局布线后,物理路径延时是固定的,所以在设计中考虑到时钟偏移,就可以避免偏移带来的影响。

毛刺 glitch

定义

FPGA 的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一, 是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在 FPGA 的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由 FPGA 内部结构特性决定的。毛刺现象在 FPGA 的设计中是不可避免的有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

如何解决该问题?

1 利用冗余项法

利用冗余项消除毛刺有 2 种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式而后者针对于真值表。以卡诺图为例,若两个卡诺圆相切,其对应的电路就可能产生险象。因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。

2 采样法

由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺,而在保持时间内不会出现,因此,在输出信号的保持时间内对其进行采样,就可以消除毛刺信号的影响,常用的采样方法有 2 种:一种使用一定宽度的高电平脉冲与输出相与,从而避开了毛刺信号,取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。另一种更常见的方法叫锁存法,是利用 D 触发器的输入端 D 对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻,输出端 Q=D,当输入的信号有毛刺时,只要不发生在时钟的上升沿时刻,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。

3 吸收法

由于产生的毛刺实际上是高频窄脉冲,故增加输出滤波,在输出端接上小电容 C 就可以滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。

4 延迟法

因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线,因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。

5 硬件描述语言法

这种方法是从硬件描述语言入手,找出毛刺产生的根本原因,改变语言设计,产生满足要求的功能模块,来代替原来的逻辑功能块。

【基础知识】~ 建立时间/保持时间相关推荐

  1. 北斗导航 | 卫星导航基础知识(卫星导航时间系统)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  2. 计算机与信息处理基础知识教案,高效的信息处理工具——计算机基础知识教案...

    第三节 高效的信息处理工具--计算机基础知识教案 授课时间:1课时 课题:第三节 高效的信息处理工具--计算机基础知识(板书) 教学重点: 计算机硬件构成及相关概念 教学难点: 存储器的相关概念 教学 ...

  3. 计算机基础教案文档,计算机基础知识教案

    /. 第1章计算机基础知识 [上课时间] [教学内容] 1.计算机发展的历史 2.计算机中的数据表示 3.计算机硬件系统的组成 4.微型计算机的组成 5.软件系统 6.多媒体技术 7.计算机病毒与防治 ...

  4. 2023美赛基础知识以及如何入门

    美赛基础知识 报名截止时间:北京时间2023年2月17日00:00 比赛时间:(北京时间:2023年2月17日,早晨6:00点,星期五)至(北京时间:2023年2月21日,上午9:00,星期二) 提交 ...

  5. 1023day5:class类属性方法、每次执行类属性+1、内建模块、时间装饰器wrapper、面向对象__slots__方法:限制类的属性等基础知识、正则表达式基础知识、多态鸭子类型

    文章目录 一.类class 1.Python类class 属性 方法 2.类的构造方法__init__() 3.每次执行一次类的属性+1 二.模块 1.内建模块 2.第三方模块 3.定义自己的模块 三 ...

  6. 金融时间序列分析:1. 基础知识

    0. 目录 金融时间序列分析:9. ARMA自回归移动平均模型 金融时间序列分析:8. MA模型实例(Python) 金融时间序列分析:7. MA滑动平均模型 金融时间序列分析:6. AR模型实例 金 ...

  7. python金融基础知识_Python金融时间序列分析(一):基础知识

    1. 金融时间序列 1.1什么是时间序列 金融时间序列是属于时间序列数据的一种,他们就是有很强的时间性,数据前后具有很强的依赖性,切无法调整顺序,一般都是二维数据. 时间序列由于具有很强的序列行,而且 ...

  8. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  9. 青少年编程python一节课多长时间_10节免费少儿编程微课:Python基础知识微课

    课程介绍课程名称:Python基础知识微课(10节) 课程内容:通过对Python基础知识的讲解,教孩子们学会使用海龟编辑器进行编程,了解Python的基础知识,学完课程之后,孩子们可以用海龟编辑器快 ...

  10. 大数据成长之路:谈谈那些必须学习的Linux基础知识

    作者| Roy瑞士 责编| Carol 封图| CSDN│下载于视觉中国 这里主要介绍学习大数据过程中用到的Linux基础知识,现在主攻的方向是大数据开发,欢迎大家共同交流. 环境 推荐安装VMwar ...

最新文章

  1. Dockerfile实践优化建议
  2. YouTube键盘快捷键:速查表
  3. flow 静态类型检查 js
  4. 3天内构建Facebook Web应用的经验之谈
  5. mysql事务隔离级别与具体实例
  6. MyBatis映射表问题
  7. 当第一资本、高盛、摩根士丹利等巨头纷纷启用CDO时,您想到了什么?
  8. 企业从信息化角度解读智慧城市,难以根治城市病
  9. 信息化集成,路在何方?
  10. eclipse windowJAVA版64位安装教程
  11. CRMEB制作docker-compose
  12. 最小-最大搜索和Alpha-beta剪枝搜索
  13. 2022年江苏省高职单招(数学)考试冲刺试题及答案
  14. ThinkPad产品进入BIOS的方法
  15. 人工智能的概述和入门基础
  16. 七牛云 -数据的增加和删除(vue+egg+element-ui+axios)
  17. 俄罗斯钓鱼服务器位置,俄罗斯钓鱼4《RussianFishing4》钓鱼地点攻略
  18. 年纪轻轻就要秃了?别怕,用它,让你重新找回浓密秀发!
  19. MacOS 下 Emacs 安装及 ESS 配置
  20. RafyA PS合成作品欣赏(2)

热门文章

  1. 当杭州为人称道的美丽遇见了华为云!
  2. 每月一书(202104):《浪潮之巅》
  3. jsp主机与asp主机的区别和支持分析
  4. 卸载奇安信天擎,流氓软件
  5. ROS(sub,pub)测试 Plotjuggler
  6. wlan消失 网络适配器文件夹空了 设备管理器黄色感叹号 wifi那里看不到任何WiFi解决
  7. 本地系统盘放到服务器上,怎么把本地盘挂到云服务器
  8. ESP8266恒温控制器
  9. 支付宝APP支付-Android+springboot搭建后端
  10. 预约洗车/美容/维修/家政/保养/上门洗车预约小程序源码及管理系统