对于32位向量中的每个位,当输入信号从一个时钟周期的1变为下一个时钟周期的0时进行捕获。"捕获"意味着输出将保持为1,直到寄存器被复位(同步复位)。
每个输出位的行为类似于SR触发器:在发生1到0的转换后的周期中,输出位应该被设置为1。当复位为高电平时,在正的时钟沿上,输出位应该被复位为0。如果上述两个事件同时发生,则复位具有优先权。在下面的示例波形的最后4个周期中,"复位"事件比"设置"事件提前一个周期,因此这里没有冲突。
在下面的示例波形中,为了清晰起见,分别显示了复位、in[1]和out[1]。
代码:
module top_module (
input clk,
input reset,
input [31:0] in,
output [31:0] out
);
reg[31:0] temp;
always@(posedge clk)begin
temp <= in;
if(reset)
out <= 32'b0;
else
out <= (temp&~in)|out;
end
endmodule
测试波形: