/* * Design: ECE 274 - Button Debouncer Test Circuit for Simulation * Author: Roman Lysecky * Copyright 2008, All Rights Reserved * * Date: March 25, 2008 * */ `timescale 1us / 1us module DebounceTester_Sim(Clk, Rst, Debounced, Fail); input Clk, Rst; input Debounced; output reg Fail; reg lDebounced, diff; reg [3:0] tCnt; reg iFail; // Reg1 Procedure always @(posedge Clk) begin if (Rst == 1) lDebounced <= 0; else lDebounced <= Debounced; end // Diff Procedure always @(Debounced, lDebounced) begin diff <= Debounced ^ lDebounced; end // Timer Procedure always @(posedge Clk) begin if (Rst == 1) tCnt <= 0; else if (diff == 1) tCnt <= 0; else if (tCnt != 4'hF) tCnt <= tCnt + 1; else tCnt <= tCnt; end // Debounce Tester Procedure always @(posedge Clk) begin if (Rst == 1) begin iFail <= 0; Fail <= 0; end else if (iFail == 1) begin iFail <= 1; Fail <= 1; end else if (diff == 1 && tCnt < 10 ) begin iFail <= 1; Fail <= 1; end else begin iFail <= 0; Fail <= 0; end end endmodule