SDVD/design/debouncer.sv
2025-06-02 17:47:35 -07:00

31 lines
640 B
Systemverilog

/***
* debouncer.sv - generates a debounced button press and turns it into
* a single pulse.
*
* @author: Waylon Cude, Dilanthi Prentice
* @date: 6-12-25
*
* */
//NOTE: you should drive this with a slow clock to actually debounce input
module debouncer(input logic clk, input reset, input source, output logic out);
logic pressed;
always_ff @(posedge clk) begin
if (reset)
pressed <= 0;
if (!source) begin
pressed <= 0;
out <= 0;
end
else
if (pressed)
out <= 0;
else begin
pressed <= 1;
out <= 1;
end
end
endmodule