相关阅读数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm=1001.2014.3001.5482
建立时间和保持时间是触发器的两个重要的时序参数:建立时间(setup time)指的是在有效时钟沿前,数据必须到达并稳定的时间;保持时间(hold time)指的是在有效时钟沿后,数据必须仍然稳定的时间。
下面以一个经典的主从结构的正沿D触发器为例进行说明,如图1所示(本文的所有结论对其他结构的D触发器也成立,如维持阻塞D触发器(常用于TTL工艺))。
图1 主从结构的正沿D触发器
对于该触发器,建立时间的存在是为了让主锁存器能够拥有建立稳定的反馈的条件(占空比适当时,从锁存器一般能满足建立时间的要求),输入D在时钟沿上升沿前需要经过I1,T1,I3和I2,这保证了传输门T2两端的电压值相等,从而在交叉耦合的反相器I3和I2之间建立稳定的反馈。
如果我们在计算建立时间时进行保守估计,则时钟传播时选择最短的时钟路径,即不经过I7,所以该触发器的建立时间为I1+T1+I3+I2(此处指的是各自的传播延时)。
对于该触发器,保持时间的存在是为了让主锁存器建立稳定的反馈前不会收到新的数据(从锁存器一般能满足保持时间的要求),输入D在时钟沿上升沿后需要经过I1才可能会影响即将锁存的数据。
如果我们在计算保持时间时进行保守估计,则时钟传播时选择最长的时钟路径,即经过I7,所以该触发器的保持时间为I7-I1(此处指的是各自的传播延时)。
建立时间和保持时间的示意图如图2所示。
图2 建立时间和保持时间的示意图
负的建立时间
如果我们同时提高两条时钟路径的延迟,例如在I7所在的时钟路径和另一个空导线所在的时钟路径上分别添加一对反相器,假设这一对反相器带来的延迟为I8,则此时触发器的建立时间为I1+T1+I3+I2-I8(此时最短的时钟路径延迟也有I8);保持时间为I7+I8-I1。如果此时增大I8至建立时间小于0,则代表着输入D甚至可以在时钟沿后开始建立;相应的,保持时间则会增大,这代表着输入D需要在时钟沿后更长的一段时间都不能改变。在这里,建立时间和保持时间的和是一个定值T1+I3+I2+I7(前提是同时提高两条时钟路径的延迟),这代表着一个输入需要稳定的总时长(有效沿前后)。
负的建立时间一般出现在时钟路径的延迟相对较长时,负建立时间的示意图如图3所示。
图3 负建立时间的示意图
负的保持时间
如果我们增大I1的延迟,则保持时间I7-I1会减小,甚至小于0,这代表着数据在时钟沿前就可以改变了。相应的,建立时间I1+T1+I3+I2则会增大,这代表着输入D需要在时钟沿前更长的一段时间就稳定了。在这里,建立时间和保持时间的和是一个定值T1+I3+I2+I7,这代表着一个输入需要稳定的总时长(有效沿前后)。
负的保持时间一般出现在时钟路径的延迟相对较短时,负保持时间的示意图如图4所示。
图4 负保持时间的示意图