diff --git a/cntr.v b/cntr.v new file mode 100644 index 0000000000000000000000000000000000000000..45357267e0bb245ef935561505fe251d24601855 --- /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 0000000000000000000000000000000000000000..3b1cf005c44324d62958464427a89a2884e09cab --- /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 0000000000000000000000000000000000000000..b33786737043f478d20e6215ecb54b646adf3bc2 --- /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