有一个时钟周期的延时。
module EdgeCheck (
input clk;
input rst_n;
input Signal;
output PosEdge;
output NegEdge;
output BothEdge;
);
reg sig_r0;
reg sig_r1;
always @ (posedge clk or negedge rst_n)
if (!rst_n)
begin
sig_r0 <= 1'b0;
sig_r1 <= 1'b0;
end
else
begin
sig_r0 <= Signal;
sig_r1 <= sig_r0;
end
assign PosEdge = (~sig_r1) & (sig_r0);
assign NegEdge = sig_r1 & (~sig_r0);
assign BothEdge = sig_r1 ^ sig_r0;
endmodule