/* * Design: ECE 274 - Button Debouncer Test Circuit for Synthesis * Author: Roman Lysecky * Copyright 2008, All Rights Reserved * * Date: March 25, 2008 * */ `timescale 1ns / 1ns module DebounceTester(Clk, Rst, Debounced, Fail); input Clk, Rst; input Debounced; output reg Fail; reg lDebounced, diff; reg [16: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 != 100000) 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 < 100000 ) begin iFail <= 1; Fail <= 1; end else begin iFail <= 0; Fail <= 0; end end endmodule