作为新手小白,之前一直不能理解建立时间和保持时间,只知道基本含义,后来看过几个博主的分享,大概理解了建立时间和保持时间,现在就给大家分享一下我所理解的建立时间和保持时间。(仅代表我个人的观点、理解,不保证理解绝对正确,可能存在理解错误,如有错误烦请指出!)
建立时间:数据在时钟有效沿(上升沿或者下降沿)到来之前数据保持稳定的时间。
如图为上升沿有效(本篇文章均以上升沿有效举例),时钟有效沿可理解为采集数据的时钟沿。在时钟沿到来之前,数据必须保持稳定,这可以保证在时钟上升沿采到的是一个确定的数据值。
如果这段时间不稳定的话,如上图,时钟就无法采到一个准确的数据,那么输出就可能是亚稳态,或者可能输出0或者1的任意值,这是不能确定的。但是如图因为后面这段时间满足建立时间,所以它的输出值是确定的。
保持时间:数据在时钟有效沿(上升沿或者下降沿)到来后数据保持稳定的时间。
对于保持时间,我的理解是将延迟delay1认为是保持时间,同一个时钟clk输入到触发器FF1和触发器FF2在理想情况下是相同的,但是在实际情况下,clk输入到触发器FF2中会有一个延迟最后成为clk_delay,我是将这个时间理解为保持时间,FF2采集信号实际上是在clk_delay的上升沿,在clk_delay上升沿到来之前Q1到达D2的数据必须稳定,才能保证FF2采到正确的数据,这就需要Q1到D2的延迟delay2需要大于delay1,才能保证数据在clk_delay的上升沿到来前不发生改变,而对于原时钟clk来说,这个delay1就可以认为是clk的保持时间。
注:本文均为我自己的理解,请大家谨慎观看,多多思考。