文章来源:FPGA入门到精通
在 FPGA 的时序设计与分析中,建立时间(Setup Time)和保持时间(Hold Time)是保障数字电路稳定工作的核心时序参数,二者围绕触发器(Flip-Flop)的时钟采样过程展开,共同构成了数据稳定的时序窗口。
这里给大家通俗的介绍一下这两个概念。

一、建立时间(Setup Time, Tsu)
1. 定义
建立时间是指在触发器的时钟有效沿(通常为上升沿)到来之前,数据输入端的信号必须保持稳定不变的最短时间。
只有满足这个时间要求,触发器才能在该时钟沿正确锁存输入数据。
2. 通俗理解
可以把时钟的上升沿想象成一个严格的 “检票口”:建立时间 就好比乘客(数据)必须在检票口打开(时钟沿到来)之前,提前到达并准备好车票(保持稳定)。
如果来晚了,就赶不上这班车。
3. 违规后果
如果不满足建立时间要求,触发器将无法可靠锁存当前数据,可能出现两种情况:
a、数据会被延迟到下一个时钟沿才被采样,导致电路时序错乱;
b、引发亚稳态问题,触发器输出进入不确定的振荡状态,无法输出稳定的高低电平,进而引发系统级的功能运行错误。
4. 设计影响
建立时间决定了两个相邻触发器之间组合逻辑的最大延迟上限。
在 FPGA 设计中,需要保证数据经过组合逻辑传输后,能够在时钟沿到来前提前稳定足够的时间,满足触发器的建立时间要求。
二、保持时间(Hold Time, Th)
1. 定义
保持时间是指在触发器的时钟有效沿到来之后,数据输入端的信号必须继续保持稳定不变的最短时间。
这个要求是为了确保触发器完成数据的锁存过程,避免新的数据干扰采样结果。
2. 通俗理解
保持时间 就好比乘客通过检票口后,不能立刻转身离开,而需要在检票口之后的一小段时间内,让检票员确认信息(保持稳定),否则可能会被认为是无效通行。
3. 违规后果
当保持时间不满足时,新的数据会覆盖触发器正在锁存的旧数据,引发竞争冒险(Race Condition),同样会导致亚稳态,使触发器输出不稳定的信号,最终造成电路逻辑错误。
4. 设计影响
保持时间决定了两个相邻触发器之间组合逻辑的最小延迟下限。
在设计中需要保证数据在时钟沿到来后,不会过快地发生变化,避免干扰触发器的锁存过程。
三、 输出响应时间(Clock to Output Delay Tco)
1、定义
Tco 即时钟到输出的延迟,是指触发器在时钟有效沿触发后,从时钟沿到达开始,到触发器的输出端稳定输出新数据的最短时间。
这个参数表征触发器自身的输出响应速度。Tco 必然大于 0,这符合物理世界的客观变化规律:信号变化是渐变过程而非理想突变。也就是说,时钟上升沿到来后,输出端并不会立即翻转响应,而是经过一段延时后逐步完成电平变化。
2、设计影响
Tco 是触发器的固有参数,在 FPGA 设计中,Tco 会影响到后续电路的时序裕量。
在计算两个触发器之间的总延迟时,需要考虑前一级触发器的 Tco、中间组合逻辑的延迟,以及后一级触发器的建立时间,确保整体时序满足要求。