summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-12-26 13:33:40 +0100
committeruvok2025-12-26 13:33:40 +0100
commit35210703cb1fbd3d45365b22f425cc84ea630c90 (patch)
treea9af058734bcfd7909c8979c096eddf382bf02a6
parent71ec72d7c63a7739fb760c2bdf1df86c0c2561aa (diff)
prepare debouncer
-rw-r--r--debounce.tb.v58
-rw-r--r--debounce.v15
2 files changed, 73 insertions, 0 deletions
diff --git a/debounce.tb.v b/debounce.tb.v
new file mode 100644
index 0000000..36f3a27
--- /dev/null
+++ b/debounce.tb.v
@@ -0,0 +1,58 @@
+`timescale 1us/1ns
+
+module debounce_tb (
+);
+
+reg rst_i;
+reg clk_i;
+reg signal_i;
+wire signal_o;
+
+integer i = 0;
+
+debounce uut(
+ .rst_i(rst_i),
+ .clk_i(clk_i),
+ .signal_i(signal_i),
+ .signal_o(signal_o)
+);
+
+initial begin
+ $dumpfile("debounce.lxt2"); $dumpvars();
+
+ clk_i <= 0;
+ rst_i <= 1'b1;
+ signal_i <= 1'b1;
+ #4
+ rst_i <= 1'b0;
+ #4
+ rst_i <= 1'b1;
+end
+
+always #10 clk_i = ~clk_i;
+
+initial begin
+ // initial key press
+ #25
+ signal_i <= ~signal_i;
+ #40
+ signal_i <= ~signal_i;
+
+ // try bouncing
+
+ #50
+
+ for (i=0; i < 20; i = i + 1) begin
+ #20
+ signal_i <= ~signal_i;
+ end
+ #20
+ signal_i <= ~signal_i;
+ #500
+ signal_i <= ~signal_i;
+
+ #105
+ $finish();
+end
+
+endmodule
diff --git a/debounce.v b/debounce.v
new file mode 100644
index 0000000..efeb845
--- /dev/null
+++ b/debounce.v
@@ -0,0 +1,15 @@
+module debounce (
+ input rst_i,
+ input clk_i,
+ input signal_i,
+ output reg signal_o
+);
+
+always @(posedge clk_i or negedge rst_i) begin
+ if (!rst_i) begin
+
+ end
+ signal_o <= signal_i;
+end
+
+endmodule