summaryrefslogtreecommitdiff
path: root/n/asserv/src/counter/quad_decoder.v
diff options
context:
space:
mode:
authorschodet2005-07-24 09:17:11 +0000
committerschodet2005-07-24 09:17:11 +0000
commit3410f6e649992bcac7674fdc8e282927fa09e3de (patch)
tree8cd9da5f904106b28ec2722e341fd2d3adb97bdf /n/asserv/src/counter/quad_decoder.v
parentc3550a079957aa01633ed32632a5229ae4edb4c3 (diff)
Ajout des cartes asserv et du verilog pour le compteur.
Diffstat (limited to 'n/asserv/src/counter/quad_decoder.v')
-rw-r--r--n/asserv/src/counter/quad_decoder.v42
1 files changed, 42 insertions, 0 deletions
diff --git a/n/asserv/src/counter/quad_decoder.v b/n/asserv/src/counter/quad_decoder.v
new file mode 100644
index 0000000..1bd3f99
--- /dev/null
+++ b/n/asserv/src/counter/quad_decoder.v
@@ -0,0 +1,42 @@
+`timescale 1ns / 1ps
+
+module quad_decoder(clk, rst, q, counter);
+ parameter bits = 8;
+ input clk;
+ input rst;
+ input [1:0] q;
+ output [bits-1:0] counter;
+
+ reg [1:0] ql;
+ reg [bits-1:0] counter;
+
+ always @(posedge clk or negedge rst) begin
+ if (!rst) begin
+ ql <= 2'b00;
+ counter <= 0;
+ end
+ else begin
+ case ({ ql, q })
+ 4'b0001:
+ counter <= counter + 1;
+ 4'b0010:
+ counter <= counter - 1;
+ 4'b0111:
+ counter <= counter + 1;
+ 4'b0100:
+ counter <= counter - 1;
+ 4'b1110:
+ counter <= counter + 1;
+ 4'b1101:
+ counter <= counter - 1;
+ 4'b1000:
+ counter <= counter + 1;
+ 4'b1011:
+ counter <= counter - 1;
+ default:
+ counter <= counter;
+ endcase
+ ql <= q;
+ end
+ end
+endmodule