From 12ab5f4dc8203553f1e3842a5187cc55d77fe87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1si=20Benjamin?= <halftome@yahoo.com> Date: Wed, 15 Oct 2014 20:56:35 +0200 Subject: [PATCH] counter, debouncer, parity --- cntr.v | 37 +++++++++++++++++++++++++++++++++++++ debouncer.v | 25 +++++++++++++++++++++++++ parity.v | 21 +++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 cntr.v create mode 100644 debouncer.v create mode 100644 parity.v diff --git a/cntr.v b/cntr.v new file mode 100644 index 0000000..4535726 --- /dev/null +++ b/cntr.v @@ -0,0 +1,37 @@ +module cntr( + input clk, rst, en, par, + output [3:0] q, +); + +reg [3:0] cntr; + +always @ (posedge clk) begin + if(rst) begin + cntr <= 0; + end + + else if(en) begin + + if(par) begin + if(cntr >= 9) begin + cntr <= 0; + end + else begin + cntr <= cntr + 1; + end + end + + else begin + if(cntr >= 8) begin + cntr <= 0; + end + else begin + cntr <= cntr + 1; + end + end + + end +end + +assign q = cntr; +endmodule diff --git a/debouncer.v b/debouncer.v new file mode 100644 index 0000000..3b1cf00 --- /dev/null +++ b/debouncer.v @@ -0,0 +1,25 @@ +module debouncer( +input clk, rst, din, +output q, +); + +reg state; + +always @ (posedge clk) begin + if(rst) begin + state <= 0; + end + + else begin + if(din) begin + state <= 1; + end + else begin + state <= 0; + end + end + +end + +assign q = (~state && din) +endmodule diff --git a/parity.v b/parity.v new file mode 100644 index 0000000..b337867 --- /dev/null +++ b/parity.v @@ -0,0 +1,21 @@ +module parity( + input clk, rst, din, + output q, +); + +reg t; + +always @ (posedge clk) begin + if(rst) begin +// t <= 0; // Even parity + t <= 1; // Odd parity + end + + else if(din) begin + t <= ~t; + end +end + +assign q = t; + +endmodule -- GitLab