From e1c081bd2089b87808c592e3dabc4ac464b2a57c Mon Sep 17 00:00:00 2001 From: uvok Date: Fri, 26 Dec 2025 15:12:58 +0100 Subject: Add working toggle implementation --- led_toggle.tb.v | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ led_toggle.v | 31 +++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 led_toggle.tb.v create mode 100644 led_toggle.v 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 -- cgit v1.2.3