/***
 * 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
