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