/********************************************** __ __ __ \ /\ /|\ /| __ __ / / | / | __ descript: author : Young Version: creaded: madified: ***********************************************/ module edge_generator #(
parameter MODE = "NORMAL" // FAST NORMAL BEST
)(
input clk, input rst_n, input in, output raising, output falling
);
reg in_d0; reg in_d1; reg raising_reg; reg falling_reg;
always@(posedge clk/*,negedge rst_n*/)begin
if(~rst_n)begin in_d0 <= 1'b0; in_d1 <= 1'b0; raising_reg <= 1'b0; falling_reg <= 1'b0; end else begin in_d0 <= in; in_d1 <= in_d0; if(MODE == "NORMAL")begin raising_reg <= {in_d0,in} == 2'b01 ; falling_reg <= {in_d0,in} == 2'b10 ; end else if(MODE == "BEST")begin raising_reg <= {in_d1,in_d0} == 2'b01 ; falling_reg <= {in_d1,in_d0} == 2'b10 ; end else begin raising_reg <= 1'b0; falling_reg <= 1'b0;
end end end
assign raising = (MODE == “FAST”)? {in_d0,in} == 2'b01 : raising_reg; assign falling = (MODE == “FAST”)? {in_d0,in} == 2'b10 : falling_reg;
endmodule