对于 32 位矢量中的每个位,捕获输入信号从一个时钟周期中的 1 变为下一个时钟周期的 0 时。“捕获”表示输出将保持1,直到寄存器复位(同步复位)。
每个输出位的行为类似于SR触发器:输出位应设置为(1)发生1到0转换后的周期。当复位为高电平时,输出位应在正时钟边沿复位(至0)。如果上述两个事件同时发生,则重置优先。在以下示例波形的最后 4 个周期中,“重置”事件比“设置”事件早一个周期发生,因此这里没有冲突。
在下面的示例波形中,为清楚起见,重置、输入 [1] 和输出 [1] 再次单独显示。
module top_module (
input clk,
input reset,
input [31:0] in,
output [31:0] out
);
reg [31:0] in_reg;
always@ (posedge clk)
in_reg <= in;
always@ (posedge clk)
if(reset == 1'b1)
out <= 32'b0;
else begin
out <= (~in) & in_reg | out;
end
endmodule