在下面的上升沿检测器代码中,为什么在一个 clk 周期的上升沿检测到上升沿时,检测到的信号被赋值为 1,而 prev_signal 获得延迟 1 个 clk 周期的信号值?
module rising_edge_detector(
input clk,
input signal,
output reg detected
);
reg prev_signal;
always @(posedge clk) begin
if (signal && !prev_signal) begin
detected <= 1;
end else begin
detected <= 0;
end
prev_signal <= signal;
end
endmodule
TIA
当我模拟这段代码时,我得到了正确的上升沿检测器。但是 prev_signal 获得延迟 1 个 clk 周期的信号值,其中检测到在同一 clk 周期中获得 0 和 1 的值。