数字设计中,时序是最基本,也是最重要的概念。
基本概念
我们所说的数字设计多数时候都是指的同步逻辑。所谓同步逻辑,是说所有的时序逻辑都在时钟信号的控制下完成。这很像是大合唱,有很多的人参与,大家都根据同一个节拍来控制节奏,保持整齐。时钟信号就是那个节拍。其实很多地方都需要有一个节拍来协调系统的各个部分。比如工厂里的一条流水线。
流水线的每个工人从前一个人那里拿到中间产品,装配一个零件,然后交给下一个人;每一个人面前的空间只有放置一个中间产品的空间。装配一个零件并把中间产品交到下一个那里是需要时间的。如果这个时间太短,就会发生下一个人手中的零件还没装配好,新的中间产品又来了,却没处放的问题。如果这个时间太长了,就会发生下一个人闲着没事干的情况。前一种情况会导致流水线混乱,后一种情况则导致流水线的效率下降。因此,在确定的流水线效率要求下,我们就必须要求每位工人装配一个零件并把中间产品传到下一位工人的时间不能太快也不能太慢。这话也可以反过说,只有保证每位工人所用的时间在一个确定的时间范围内,我们才能保证流水线在按照特定的效率运行。
同步逻辑数字设计也好比是设计一个满足上述要求的“流水线”,只不过这个流水线是由传递二进制数据的数字器件组成。数据在两个存储单元之间传递,“效率”由时钟的周期(T)决定。每个存储单元在时钟节拍(通常是时钟信号的上升沿)的号令下工作。如同每个工人装配零件需要时间一样,每个存储单元正确地存储数据也是有要求的。它要求数据必须在时钟沿之前的某个时间就准备好(我们把这个时间称为 setup time,记为 tsetup),