大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在的话,我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看完后喜欢的话就请关注我吧~谢谢~
有的时候,我们会在一些文件中(例如静态库(lib))中发现建立时间和保持时间竟然可以为负值,例如下图:
这是怎么一回事呢,难道建立时间和保持时间是可以被违背的吗?
先提一下建立时间和保持时间的概念。
建立时间(Tsu): 在敏感时钟边沿到来之前,输入信号D需要保持稳定的最小时间。
保持时间(Thd):在敏感时钟沿到来后,输入信号D需要保持稳定的最小时间。
一、 负的建立时间
要解释这个还得从触发器的结构说起:
上图D、CLK端为触发器的D端和CLK端输入引脚,D’、CLK’为实际上的锁存器的输入端口,在D-D’与CLK-CLK’的路径上实际上还有延时。
如果我们假设时钟路径CLK-CLK’的延时比数据路径D-D’要大,那么,就可以实现在D端和CLK端,数据比时钟沿晚输入,但是到D’端和CLK’端时,数据比时钟沿早到,从而也就实现了从引脚上看数据比时钟沿晚输入,建立时间为负的值,但是在实际的锁存点,数据比时钟沿早到,建立时间依然为正值!如下图所示:
二、 负的保持时间
类似的,当数据路径D-D’的延时比时钟路径CLK-CLK’的延时要大时,就可以实现在D端和CLK端,数据比时钟沿早输入,但是在D’端和CLK’端时,时钟沿比数据早到,也就实现了从引脚上看数据比时钟沿早输入,保持时间为负值,但是在实际的锁存点,数据比时钟沿晚到,保持时间依然为正值!如下图所示:
三、 总结
总结一下,之所以有的地方建立时间和保持时间可以为负值,只是因为观察点不同,时间上在锁存器的端口上,建立时间和保持时间仍然为正值。
最后还需要提一下,虽然建立时间和保持时间可以为负值,但是只能两者之一为负,且两者之和必须大于0!
如果你喜欢我的文章,在这里拜请关注我的微信公众号——熊熊的ic车间,谢谢!