summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--led_toggle.tb.v55
-rw-r--r--led_toggle.v31
2 files changed, 86 insertions, 0 deletions
diff --git a/led_toggle.tb.v b/led_toggle.tb.v
new file mode 100644
index 0000000..f6c6dad
--- /dev/null
+++ b/led_toggle.tb.v
@@ -0,0 +1,55 @@
+`timescale 1us/1ns
+
+module led_toggle_tb (
+);
+
+reg clk_i;
+reg rst_i;
+reg key_i;
+wire [5:0] led;
+integer i = 0;
+
+led_toggle uut(
+ .rst_i(rst_i),
+ .clk_i(clk_i),
+ .key_i(key_i),
+ .led(led)
+);
+defparam uut.STABLE_PERIOD = 2;
+
+initial begin
+ $dumpfile("led_toggle.lxt2"); $dumpvars();
+ clk_i <= 0;
+ key_i <= 1'b1;
+ #1
+ rst_i <= 0;
+ #1
+ rst_i <= 1;
+end
+
+always #10 clk_i = ~clk_i;
+
+
+initial begin
+ // initial key press
+ #25
+ key_i <= ~key_i;
+ #40
+ key_i <= ~key_i;
+
+ // try bouncing
+
+ #50
+
+ for (i=0; i < 19; i = i + 1) begin
+ #20
+ key_i <= ~key_i;
+ end
+ #200
+ key_i <= ~key_i;
+
+ #205
+ $finish();
+end
+
+endmodule
diff --git a/led_toggle.v b/led_toggle.v
new file mode 100644
index 0000000..df86bf8
--- /dev/null
+++ b/led_toggle.v
@@ -0,0 +1,31 @@
+// From the book
+// bouncy variant
+
+`include "led_toggle_bouncy.v"
+`include "debounce.v"
+
+module led_toggle (
+ input rst_i,
+ input clk_i,
+ input key_i,
+ output [5:0] led
+);
+parameter STABLE_PERIOD = 50;
+
+wire outsig;
+
+debounce db(
+ .rst_i(rst_i),
+ .clk_i(clk_i),
+ .signal_i(key_i),
+ .signal_o(outsig)
+);
+defparam db.STABLE_PERIOD = STABLE_PERIOD;
+
+led_toggle_bouncy tgler(
+ .clk_i(clk_i),
+ .key_i(outsig),
+ .led(led)
+);
+
+endmodule