建立时间和保持时间(setup time 和 hold time)
建立时间和保持时间贯穿了整个时序分析过程。只要涉及到同步时序电路,那么必然有上升沿、下降沿采样,那么无法避免setup-time 和 hold-time这两个概念。本文内容相对独立于该系列其他文章,是同步时序电路的基础。
系列目录
建立时间和保持时间(setup time 和 hold time)
OFFSET约束(OFFSET IN 和OFFSET OUT)
Clock Skew , Clock uncertainly 和 Period
1. 什么是setup-time 和 hold-time
不论是在输入,输出或是寄存器-寄存器之间,只要设计到时钟上升沿/下降沿的采样,就会提到setup time 和 hold time。这两个指标说明器件本身不是理想的(时延等),正是这个不理想的特性,限制了工作时钟等。
Setup time is the minimum amount of time the data signal should be held steady before the clock event so that the data is reliably sampled by the clock. This applies to synchronous input signals to the flip-flop.
Hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled. This applies to synchronous input signals to the flip-flop.
上文是维基百科中的解释,这里很清楚的解释了这两个概念,但是不够具体化。也就是说,这里并没有提及这个值到底等于多少。Xilinx 文档UG612 Page65提到了这两个等式
Setup Time = Data Path Delay + Synchronous Element Setup Time - Clock Path Skew
Hold Time = Clock Path Skew + Synchronous Element Hold Time - Data Path Delay
这两个等式告诉我们的是需求值,Setup Time是时钟上升沿之前的数据所需要的(最小)有效时间,Hold Time是时钟上升沿之后的数据所需要的(最小)有效时间。 Synchronous Element Setup Time 和 Synchronous Element Hold Time可以看作是触发器的固有属性。那么,如何理解这两个式子呢?以setup time为例,hold time具有同样的性质。
首先回到维基百科的解释,其中涉及到data signal 和 clock event,这两个到底指的是什么?对于一个触发器来说,对与直接输入到其内部的clock_in和data_in来说,这个建立时间是 Synchronous Element Setup Time 。这表明了该触发器的属性。回到UG612定义的式子,这应该用下图来解释。
data signal :data
clock event: clk event
那么对于这一种情况,data 和clk延时候到达触发器内部,所以setup Time发生了变化。有Setup Time = Synchronous Element Setup Time + Data Path Delay - Clock Path Skew
2. 如何理解Slack
再谈一个Xilinx公司的术语:Slack。Slack的中文意思是“松弛的”,可以简单的理解为设计余量。即如果slack是正数,那么设计满足要求,否则不满足要求。对于setup time的slack,有
Slack = Requirement - (Data Path - Clock Path Skew + Clock Uncertainty)
Slack = Requirement - (Clock Path Skew + Clock Uncertainty - Data Path)
这里Data Path = Data Path Delay + Synchronous Element Setup Time。而Clock Uncertainty正如其字面意思,时钟不可能完美,时钟的不确定性会使得slack变小,这是符合我们感知的。
这里最值得注意的是Requirement,UG612中的各种 ‘require’把我彻底绕晕了好几次。这里的Requirement来源于约束,即这个设计中能提供的数据在时钟沿之前有效时间的值是多少。而“Data Path - Clock Path Skew ”实际上就是上节中提到的Setup time,这是一个最小值,如果大于这个最小值,那么slack大于0,对应的就是满足要求了。这里没有考虑Clock Uncertainty,Clock Uncertainty如下图所示,不确定表明在某一刻可能是坏的影响或是好的影响,所以最终的slack还要剪掉这个值。 (注:下图是clock jitter的示意图,但clock uncertainty也是如此)
下图是一个时序图示例,clk和data对应的是节1图中的信号,clk_in和data_in是到达触发器内部的信号。clk和data之间的相位关系表明requirement为一个时钟周期。setup margin是在这一个例子中的slack,由于时钟的不确定性,这个setup margin还需要减去一个clock uncertainty。
建立时间和保持时间(setup time 和 hold time)的更多相关文章
- 详解FPGA中的建立时间与保持时间
概念对于一个数字系统而言,建立时间和保持时间可以说是基础中的基础,这两个概念就像是数字电路的地基,整个系统的稳定性绝大部分都取决于是否满足建立时间和保持时间.但是对于绝大部分包括我在内的初学者来说,建 ...
- 【转】关于FPGA中建立时间和保持时间的探讨
时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...
- setup&hold
setup time:建立时间,也就是在时钟上升沿到来前,数据需要稳定的时间.hold time:保持时间,指的是在时钟上升沿到来后,数据还需要保持的时间.实际上设置setup time和hold t ...
- FPGA时序逻辑中常见的几类延时与时间(五)
FPGA逻辑代码重要的是理解其中的时序逻辑,延时与各种时间的记忆也是一件头疼的事,这里把我最近看到的比较简单的几类总结起来,共同学习. 一.平均传输延时 平均传输延时 二.开启时间与关闭时间 开 ...
- TimeQuest 静态时序分析 基本概论
静态时序分析 基本概念 [转载] 1. 背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高 ...
- OFFSET IN 使用举例
本文将结合具体实例阐述OFFSET IN的使用方法.注意:这是我第一次写OFFSET IN约束,本文仅供参考.阅读本文前需要了解时序收敛的基本概念,OFFSET IN和Period的相关知识,可先阅读 ...
- 特殊约束From To
说实话这个不太懂,没用过也没有遇到相应的情况(或者说我不知道).大家可以更多的去参考特定约束FROM TO和MicroZed开发板笔记,第72部分:多周期约束等内容. 本文待修正 系列目录 ...
- Clock Skew , Clock Uncertainty和 Period
本文将介绍FPGA中和时钟有关的相关概念,阅读本文前需要对时序收敛的基本概念和建立.保持关系有一定了解,这些内容可以在时序收敛:基本概念,建立时间和保持时间(setup time 和 hold tim ...
- OFFSET约束(OFFSET IN 和OFFSET OUT)
OFFSET 的意思是偏移.对于同步时序电路来说,数据和时钟之间的偏移量是必须要关注的.OFFSET IN和OUT分别对应的是输入和输出FPGA数据和时钟之间的偏移关系,本文将分析这一种关系.阅读本文 ...
随机推荐
- Linux:kill 进程
在使用Linux时,出现端口占用.进程已启动(但处于不可控状态)情况时如何处理? 发现已知端口被占用时,可以使用netstat -apn | grep yourPort 来查看占用该端口的进程的pid ...
- 第二题 已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
package com.hanqi.test; import java.util.ArrayList; import java.util.List; import java.util.Random; ...
- 基础篇之 Create Type
Create Type 的话呢,是创建一个自定义的数据类型,等于说为常用的数据类型建造一个别名的样纸.然后就可以通用当前数据库的当前架构.(当然了,一般来说我们都是使用dbo架构,所以都会无事前面那个 ...
- ReactNative之坑爹的在线安装
编译一个github上ReactNative应用,根据说明只有3步: npm installreact-native run-androidenjoy 但几个步骤实在是一波三折充满着坎坷,一点都不en ...
- CSS3 ::selection选择器
一.介绍 之前看到有些网站选中内容的颜色和背景色都不是平时看到的蓝色和白色.今天有兴趣查看了一下,原来是一个很简单的CSS3的选择器::selection的用法. 上例子: <style> ...
- 图的全局最小割的Stoer-Wagner算法及例题
Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案. 算法步骤: --------------------------- ...
- POJ3187Backward Digit Sums[杨辉三角]
Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6350 Accepted: 36 ...
- HMAC算法AS3版
http://www.cnblogs.com/appleseed/archive/2008/09/17/1292232.html
- java中使用二重循环打印图形
如图所示:打印沙漏图形 1:因为外层循环控制图形行数,所以首先判断这四个选项能否循环五次 2:以上四个循环的表达式都能循环五次,我们从内层循环入手. A:int i=0;i<5;i++ 当i=1 ...
- java 28 - 7 JDK8的新特性 之 接口可以使用方法
JDK8的新特性: http://bbs.itcast.cn/thread-24398-1-1.html 其中之一:接口可以使用方法 interface Inter { //抽象方法 public a ...