Post date: May 19, 2021 3:34:21 AM
Converts 011 sequence to a single pulse. Can also be used as switch debouncer when clocked with ~10ms/period.
module dff(input slow_clk, D, output reg Q);
always @ (posedge slow_clk)
Q <= D;
endmodule
module prescaler(input clk50M, output reg slow_clk);
reg [26:0] counter;
always @ (posedge clk50M) begin
counter <= counter - 1;
if (!counter) begin
counter = 24999; // need to check this
slow_clk = ~slow_clk
end
end
endmodule
module debouncer(input Sig, slow_clk, output Deb_sig);
wire q0, q1, q2;
dff d0(slow_clk, Sig, q0);
dff d1(slow_clk, q0, q1);
dff d2(slow_clk, q1, q2);
assign Deb_sig = q0 & q1 & ~q2;
endmodule