建立时间
在时钟有效沿到来之前,数据必须维持一段时间保持不变,这段时间就是建立时间 Tsetup
1 基本概念
建立时间(Setup Time):
在 SystemVerilog 中,建立时间是指在时钟信号的有效边沿(例如上升沿或者下降沿,取决于电路设计)到来之前,数据信号必须保持稳定的最小时间。这个时间是为了确保在时钟边沿到达时,数据能够被正确地采样和存储。就好像一个运动员在起跑枪响(时钟有效边沿)之前,需要提前站在起跑线上(数据稳定)准备起跑,这个提前准备的时间就是建立时间。
保持时间(Hold Time):
保持时间是指在时钟信号的有效边沿到来之后,数据信号必须保持稳定的最小时间。它保证了在时钟边沿对数据采样之后,数据不会因为变化太快而导致错误的存储。例如,就像拍照时,在按下快门(时钟有效边沿)之后,拍摄对象(数据)需要保持静止一小段时间,这样才能拍出清晰的照片,这个拍摄对象保持静止的时间就是保持时间。
2 示例
-
- 示例电路:假设有一个简单的 D 触发器,时钟信号为
clk
,数据输入信号为d
,输出信号为q
。D 触发器的工作原理是在clk
的上升沿对d
进行采样,并将采样的值输出到q
。 - 建立时间计算:设 D 触发器的建立时间为
T_setup
,时钟周期为T_clk
。如果d
信号在clk
上升沿之前的T_setup
时间内发生变化,那么就可能导致数据采样错误。例如,T_clk = 10ns
,T_setup = 2ns
,那么在clk
上升沿到来前的 2ns 内,d
信号必须保持稳定。 - 保持时间计算:设保持时间为
T_hold
。在clk
上升沿之后的T_hold
时间内,d
信号也需要保持稳定。例如,T_hold = 1ns
,那么在clk
上升沿后的 1ns 内,d
信号不能发生变化,否则可能会使 D 触发器存储错误的数据。
- 示例电路:假设有一个简单的 D 触发器,时钟信号为
3 违反建立时间和保持时间的后果
- 亚稳态(Metastability):如果数据信号没有满足建立时间和保持时间的要求,就可能导致 D 触发器进入亚稳态。亚稳态是一种不稳定的状态,此时触发器的输出可能会在一个不确定的时间内处于一个不确定的电平。这种不确定的电平可能会导致后续电路出现错误的操作,因为后续电路可能会将这个不确定的电平当作有效的逻辑电平进行处理。
- 数据错误:除了亚稳态之外,违反建立时间和保持时间还可能直接导致数据错误。例如,本来应该存储为 “0” 的数据,由于数据在不适当的时间发生变化,可能会被错误地存储为 “1”,从而影响整个数字系统的功能。