1
Files
quartus-7-segment-counter/Counter.sv
2023-03-29 16:03:48 +02:00

38 lines
891 B
Systemverilog

`default_nettype none
module Counter
#(parameter integer DIGITS = 4,
parameter integer WIDTH = 14)(
input var logic clock,
input var logic reset,
input var logic decrement,
output var logic[WIDTH-1:0] binout
);
var logic[WIDTH-1:0] countervalue;
always @(posedge clock or posedge reset) begin
if (reset) begin
// Reset the counter to 0
countervalue <= '0;
end else if (~decrement) begin
// Increment the counter
if (countervalue == 10**DIGITS-1) begin
// Overflow
countervalue <= '0;
end else begin
countervalue <= countervalue + 1;
end
end else if (decrement) begin
// Decrement the Counter
if (countervalue == 0) begin
// Underflow
countervalue <= '{10**DIGITS-1};
end else begin
countervalue <= countervalue - 1;
end
end
end
assign binout = countervalue;
endmodule