深入浅出谈谈Setup和Hold
本文作者:孙健 EETOP username:sunjianty
本文为作者在EETOP上关于setup 和hold的两个帖子的最新修改和总结。
Abtract
在后仿真过程中经常会遇到关于setup和hold violation的问题,但是关于setup和hold time的产生原因和由来很少有人细究。
本文将对setup和hold的实质简要归纳总结,如有不当,敬请指教。
Introduction
1. 触发器原理
图1 触发器示意图
图1为触发器的简要示意图。T1和T4同时导通,T2和T3同时导通,且T1、T4和T2、T3导通状况互反。其中T1、T2、T3、T4均为传输门(关于传输门可以翻看相关电路方面资料,这里暂不涉及具体内容),均为电平敏感,所以所谓的时钟跳变可以理解为高低电平的相互跳变所致。而电路中实际的延时信息主要由于电信号导通时通过电子器件时耗费的时间。
1.1触发器工作过程
低电平时,T1和T4导通,此时数据进入到`D,因为此时T4导通,由于一对反相器形成双稳态结构,图中绿色箭头线中的数据保持上一拍的数据结果。
当高电平到来时,T1和T4关断,T2和T3导通,双稳态结构保证②中的数据维持稳定,通过T3输出至Q端,同时B点和C点的数据保持一致稳定;当低电平到来时,T2和T3关断,T1和T4导通,因为此时B点和C点数据一直稳定,因此可以保证绿色箭头线部分有稳定一致的数据通过Q端发送出去。所以,可以看到在上跳沿采样的数据可以保持一个时钟周期。
2. setup和hold原理
图2 setup和hold时序示意图
2.1 clk上跳沿之前
setup时间(tsu):输入数据D必须在时钟上升沿之前必须有效的时间。为了得到有效的数据,必须保证A点和`D点的数据保持一致稳定。因此,可以这样理解,所谓的建立时间是指输入数据D经过多长时间才能使`D的数据稳定可靠。所以setup可理解为数据从D到达`D的时间。
2.2 上跳沿之后
hold时间(thold):因为此处触发器模型的问题,这里关于hold的理解只能yy的想象下触发器的模型来帮助理解hold时间。
在clk上跳沿发生之后,如果A点的数据受到D点的影响,从而导致A点和D点数据不一致,也就是在上跳沿发生后,即T2、T3导通时,②中循环的数据不能保持稳定一致,从而导致Q端数据不稳定。因此,thold可以理解为D端数据通过T1,再经过②到达A点,保证A和`D点数据一致稳定的时间。
传输延时(tc-q):clk上跳沿出现后,T1和T4关断,T2和T3导通,数据从`D到达Q端所需要的时间被定义为传输延时,可以理解为时钟跳变后稳定`D点数据经过tc-q后输出至Q端,传输路径即③。
3. setup和hold为负值浅析
为了探讨方便,此处将触发器解剖为两个锁存器用以分析,该触发器原理图如图3所示。
图3 两个锁存器组成的触发器
3.1 hold time为负值
当data从pin到锁存数据的锁存器的delay时间大于clock从pin到达锁存器CK端的delay时,那么当D结束于CLK上升沿之前,此时从REGISTER层面观测到的hold为负值,而实际上在锁存数据的锁存器端,由于之前data延迟大于clock延迟,CLK'对D'进行控制时,D'相对于CLK'一直保持到CLK'为高电平之后,也就是此时hold为正值,出现在上升沿右侧。
图4 hold time负值时序
3.2 setup time为负值
当data从pin到锁存数据的锁存器的delay时间小于clock从pin到达锁存器CK端的delay时,那么当D开始于CLK上升沿之后,此时从REGISTER层面观测到的setup为负值,而实际上在锁存数据的锁存器端,由于之前data延迟小于clock延迟,CLK'对D'进行控制时,D'出现在了CLK'之前,也就是此时setup为正值,出现在上升沿左侧。
图5 setup time为负值时序
Conclusion
通过此处对setup和hold的简要阐述,希望能够加深对这些基本概念的了解,文中若有不当之处敬请指出,不胜感激。
业务联系请加个人微信号:jack_eetop 或 QQ:228265511
全力打造中国电子工程师微信第一品牌!