`timescale 1ns/1ns module edge_detect( input clk, input rst_n, input a, output reg rise, output reg down ); reg a_pre; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin rise <= 0; down <= 0; end else begin if (!a_pre & a) rise <= 1; else rise <= 0; if (a_pre & !a) down <= 1; else down <= 0; end a_pre <= a; end endmodule