这题还是很巧妙的。首先用了两个always 块,使得输入值在下一个时钟赋给中间值,并且这一操作不会跟Reset always块起冲突。 其次,将检测信号与输出信号相或,得以使输出信号一直维持下去,而不会因为检测信号消失而消失。
module top_module (
input clk,
input reset,
input [31:0] in,
output [31:0] out
);
reg [31:0]in1;
always @(posedge clk)
in1<= in;
always @(posedge clk) begin
if (reset)
out <= 0;
else
out<= ~in&in1 | out;
end
endmodule