《静态时序分析中建立时间和保持时间关系详解》由会员分享,可在线阅读,更多相关《静态时序分析中建立时间和保持时间关系详解(7页珍藏版)》请在金锄头文库上搜索。
1、建立时间和保持时间关系详解图 1 建立时间( setup time )是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间( hold time )是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。如图 1 。数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。 PLD/FPGA 开发软件可以自动计算两个相关输入的建立和保持时间。个人理解:1 、建立时间( setup time )触发器在时钟沿到来之前,其数据的输入端的数据必须保持
2、不变的时间;建立时间决定了该触发器之间的组合逻辑的最大延迟。2 、保持时间( hold time )触发器在时钟沿到来之后,其数据输入端的数据必须保持不变的时间;保持时间决定了该触发器之间的组合逻辑的最小延迟。关于建立时间保持时间的考虑华为题目: 时钟周期为 T, 触发器 D1 的建立时间最大为 T1max , 最小为 T1min 。 组合逻辑电路最大延迟为 T2max ,最小为 T2min 。问:触发器 D2 的建立时间 T3 和保持时间 T4 应满足什么条件?分析:Tffpd :触发器输出的响应时间,也就是触发器的输出在 clk 时钟上升沿到来之后多长的时间内发生变化并且稳定,也可以理解为
3、触发器的输出延时。Tcomb :触发器的输出经过组合逻辑所需要的时间,也就是题目中的组合逻辑延迟。Tsetup :建立时间Thold :保持时间Tclk :时钟周期建立时间容限:相当于保护时间,这里要求建立时间容限大于等于 0。保持时间容限:保持时间容限也要求大于等于 0。由上图可知,建立时间容限 Tclk-Tffpd(max)-Tcomb(max)-Tsetup ,根据建立时间容限 0 ,也就是Tclk-Tffpd(max)-Tcomb(max)- Tsetup 0 ,可以得到触发器 D2 的 Tsetup Tclk-Tffpd(max)-Tcomb(max) ,由于题目没有考虑 Tffpd
4、 ,所以我们认为 Tffpd 0,于是得到 TsetupT -T2max 。由上图可知,保持时间容限 +Thold Tffpd(min)+Tcomb(min) ,所以保持时间容限Tffpd(min)+Tcomb(min)-Thold ,根据保持时间容限 0 ,也就是 Tffpd(min)+Tcomb(min)- Thold 0 可以得到触发器 D2 的 Thold Tffpd(min)+Tcomb(min) ,由于题目没有考虑 Tffpd ,所以我们认为 Tffpd 0,于是得到 Thold T2min。 关于保持时间的理解就是 ,在触发器 D2 的输入信号还处在保持时间的时候,如果触发器 D
5、1 的输出已经通过组合逻辑到达 D2 的输入端的话,将会破坏 D2 本来应该保持的数据 Tco 表示 dff 从输入到输出延时; Tlogic 表示组合逻辑延时; Tsu 表示 dff 的建立时间; Thold 表示 dff 的保持时间。无 skew :TTco+Tlogic+Tsu TholdTco+Tlogic+Tsu-Tskew Thold T3, Tco T2min-Tpd T4 下面通过时序图来分析:设第一个触发器的输入为 D1,输出为 Q1,第二个触发器的输入为 D2 ,输出为 Q2;时钟统一在上升沿进行采样,为了便于分析我们讨论两种情况即第一:假设时钟的延时 Tpd 为零,其实这
6、种情况在 FPGA设计中是常常满足的,由于在 FPGA 设计中一般是采用统一的系统时钟,也就是利用从全局时钟管脚输入的时钟,这样在内部时钟的延时完全可以忽略不计。这种情况下不必考虑保持时间,因为每个数据都是保持一个时钟节拍同时又有线路的延时,也就是都是基于 CLOCK 的延迟远小于数据的延迟基础上,所以保持时间都能满足要求, 重点是要关心建立时间,此时如果 D2 的建立时间满足要求那么时序图应该如图 3 所示。从图中可以看出如果:T-Tco-TdelayT3 即: Tdelay T3 这也就是要求的 D2 的建立时间。从上面的时序图中也可以看出, D2 的建立时间与保持时间与 D1 的建立与保
7、持时间是没有关系的,而只和 D2 前面的组合逻辑和 D1 的数据传输延时有关,这也是一个很重要的结论。说明了延时没有叠加效应。第二种情况如果时钟存在延时,这种情况下就要考虑保持时间了,同时也需要考虑建立时间。时钟出现较大的延时多是采用了异步时钟的设计方法,这种方法较难保证数据的同步性,所以实际的设计中很少采用。此时如果建立时间与保持时间都满足要求那么输出的时序如图 5 所示。图 5 时钟存在延时但满足时序从图 5 中可以容易的看出对建立时间放宽了 Tpd,所以 D2 的建立时间需满足要求:Tpd T-Tco-T2max T3 由于建立时间与保持时间的和是稳定的一个时钟周期,如果时钟有延时,同时
8、数据的延时也较小那么建立时间必然是增大的,保持时间就会随之减小,如果减小到不满足 D2 的保持时间要求时就不能采集到正确的数据,如图 6 所示。这时即 T( Tpd Tco-T2min ) T4 即 Tco T2min-Tpd T4 从上式也可以看出如果 Tpd 0 也就是时钟的延时为 0 那么同样是要求 Tco T2minT4 ,但是在实际的应用中由于 T2 的延时也就是线路的延时远远大于触发器的保持时间即 T4 所以不必要关系保持时间。图 6 时钟存在延时且保持时间不满足要求下面用数字来说明一下加深理解(以下举例暂不考虑 hold time ):建立时间 Tsetup=Tdelay+ Tc
9、o- Tpd 假设 Tco (触发器固有的建立时间) = 2ns 假设 1, Clock Delay =0, Data delay=0 ,那么数据 port 的新数据必须在时钟 port 的时钟沿到来之前 2ns 赶到数据 port,才能满足触发器的 Tco 。假设 2, Clock delay=0 , data Delay = 3ns,那么数据 port 的新数据必须在时钟 port 的时钟沿到来之前 5ns 就得赶到数据 port ,其中的 3ns 用来使新数据从数据 port 赶到触发器的 D 端 (由于 data Delay ),剩下的 2ns 用来满足触发器的 Tco。假设 3, C
10、lock delay=1ns , data Delay = 3ns,由于时钟 port 的时钟沿推后 1ns 到达触发器的时钟端,那么数据 port 的新数据只需在时钟 port 的时钟沿到来之前 4ns 赶到数据 port 即可。假设 4,假设时钟的周期 T=4ns ,即你的系统需要运行在 250M 频率上,那么以上的假设中,假设 2 显然是不成立的,也就是说在假设 2 的情况下,你的系统运行频率是低于 250M 的,或者说在 250M 系统里是有 setup time violation 的。在假设 2 的情况下, 由于 Tco 及 Tpd 均是 FPGA 的固有特性,要想满足 4ns 的
11、 T, 那么唯一你能做的就是想方设法减小 Tdelay , 也就是数据路径的延时。即所谓的找出关键路径,想办法优化之。总结,在实际的设计中,对于一个给定的 IC, 其实我们很容易看到 T, Tpd, Tsetup , Th 都是固定不变的(在跨时钟域时,Tpd 会有不同),那么我们需要关心的参数就是 Tdelay ,即数据路径的延时,控制好了这个延时,那我们的设计就不会存在建立时间和保持时间不满足的情况了!笔试题 ,这样说道:时钟周期为 T,触发器 D1 的建立时间最大为 T1max ,最小为 T1min ,该触发器的数据输出延时为 Tco。组合逻辑电路最大延迟为 T2max, 最小为 T2m
12、in 。假设 D1 在前, D2 去采样 D1 的数据(实际就是对图 2 的文字描述),问,触发器 D2 的建立时间 T3 和保持时间应满足什么条件。这里给出一个简易公式供大家死记一下,以下两个公式确定了 D2 的 Tsetup 和 Thold :1) D1 的 Tco + max 数据链路延时 + D2 的 Tsetup D2 的 Thold (即 T4 Tco + T2min )其实上面的式 2 可以从 T3+T4=T 推出,不过要注意把 1)中的 T2max 改为 T2min 即可。总之, 建立时间长了,保持时间就短了 。实际中,某条数据链路延时是一个定值,只不过要求它落在区间 T2mi
13、n , T2max 。这也是 T2min 和 T2max 的实际意义。从现实设计出发,个人觉得这个题改为考 T2max 和 T2min 更合适,那是不是有更多人犯晕呢?! hoho 如果是那样的话,大家自己变个形吧 _ maxbird : D2 的保持时间就是时钟沿到来之后 ,D2 的数据输入端要保持数据不变的时间 ,这个时间是由 D1 和 D2 之间的组合逻辑时延决定的。例如 :假设 D1 和 D2 之间的组合逻辑时延为 2ns,时钟周期为 10ns, 这意味着在时钟沿来到后, D1 输出的新数据要过 2ns 才会到达 D2 的数据输入端,那么在这 2ns 内, D2 的数据输入端保持的还是
14、上一次的旧数据,其值不会立即更新,假设 D2 的最小保持时间为 3ns, 这意味时钟沿到来后, D2 的数据输入端的值在 3ns 内不能有变化,回到问题的关键,由于 D1 在时钟沿到来后的输出结果, 经过 2ns 的组合逻辑延时便到达了 D2 的输入端, 而 D2 要求在时钟沿到来后的 3ns 内其输入端的值不能改变, 这样 D2 的保持时间就得不到满足, 所以 D2 的保持时间必须小于等于 2ns (因为新数据在 2ns 之后才会过来, 所以就给了 D2 输入数据 =2ns 的保持时间 )。 至于说 T2min 为 0 时的情况, 其实 T2min 是永远不能为 0 的, 即使是一根导线其时延也是不可能为 0 的,这就是为什么移位寄存器的两个触发器之间连的只是一根导线,导线后端触发器的保持时间却还是可以满足的原因,其实移位寄存器中触发器的保持时间可以看成是小于等于其间导线的时延。