在时序分析中,恢复时间(Recovery Time) 和 去除时间(Removal Time) 是与异步复位和异步置位信号相关的两个重要参数。它们用于确保复位或置位信号不会干扰时序路径的正确工作。
恢复时间(Recovery Time)
恢复时间 是指复位信号从低电平变为高电平(非激活状态)后,必须在下一个时钟上升沿到来之前保持非激活状态的最短时间。------假设低复位有效
去除时间(Removal Time)
去除时间 是指复位信号从低电平变为高电平(非激活状态)之前,必须保持低电平(激活状态)的最短时间,以保证当前时钟沿不会受到复位信号变化的干扰。------假设低复位有效
【注意】这里说复位信号激活active,并没有指定0或1,因为有的时候是为1能够使寄存器复位,这个时候我们说high active,而有的时候是0能够使寄存器复位,这个时候我们说low active。
Verilog 示例代码
假设有一个带有低电平有效复位信号 reset_n
的 D 触发器,时钟信号为 clk
。
module dff (
input wire clk, // 时钟信号
input wire reset_n,// 低电平有效复位信号
input wire d, // 数据输入
output reg q // 数据输出
);
always @(posedge clk or negedge reset_n) begin
if (!reset_n)
q <= 0; // 复位时输出0
else
q <= d; // 否则按输入d更新输出
end
endmodule
详细解释
恢复时间(Recovery Time)
- 在复位信号
reset_n
从低电平变为高电平的瞬间,到下一个时钟上升沿之间的时间间隔。 - 图中,recovery time表示复位信号
reset_n
从低电平变为高电平后的时间段,直到下一个时钟上升沿。
去除时间(Removal Time)
- 在复位信号
reset_n
从低电平变为高电平之前,复位信号需要保持低电平的时间间隔。 - 图中,removal time表示复位信号
reset_n
从低电平开始持续的时间段,直到它变为高电平。
总结
- 恢复时间(Recovery Time) 适用于复位信号的释放过程,确保复位信号在下一个时钟沿之前有足够的时间稳定在非激活状态。如果不满足,会影响下一个时钟沿的正确采样。
- 去除时间(Removal Time) 适用于复位信号的施加过程,确保复位信号在当前时钟沿之前有足够的时间保持在激活状态。如果不满足,会影响当前时钟沿的时序稳定性。
- 不满足恢复时间(Recovery Time) 会影响:
- 下一个时钟沿的正确采样:如果复位信号没有足够时间稳定在非激活状态,下一个时钟上升沿可能会错误地采样输入数据。这会导致寄存器无法正确从复位状态恢复到正常操作状态,进而引发数据不一致或逻辑错误。
- 不满足去除时间(Removal Time) 会影响:
- 当前时钟沿的时序稳定性:如果复位信号在当前时钟上升沿之前没有足够时间稳定在激活状态,复位信号的变化可能干扰当前时钟沿的采样过程。这会导致当前时钟沿采样的不确定性和潜在的逻辑错误。
recovery time指的是reset release之后要求距离下一个时钟沿的最小间隔,可以类比于其他信号datapth上的setup time。
removal time指的是reset release之前(即reset需要保持一段时间)要求距离上一个时钟沿的最小间隔,可以类比于其他信号datapth上的hold time。