33 lines
600 B
Systemverilog
33 lines
600 B
Systemverilog
`default_nettype none
|
|
|
|
module SegmentDisplay
|
|
#(parameter integer DIGITS = 4,
|
|
parameter integer WIDTH = 14)(
|
|
input var logic reset,
|
|
input var logic clock,
|
|
input var logic decrement,
|
|
output var logic[6:0] segments[DIGITS-1:0]
|
|
);
|
|
|
|
tri[WIDTH-1:0] cntout;
|
|
tri[3:0] bcdout[DIGITS-1:0];
|
|
|
|
Counter cnt(
|
|
// The KEY's provide a high logic level when not pressed
|
|
.clock(~clock),
|
|
.reset(~reset),
|
|
.decrement(decrement),
|
|
.binout(cntout)
|
|
);
|
|
|
|
BinToBcd bcd(
|
|
.binin(cntout),
|
|
.bcdout(bcdout)
|
|
);
|
|
|
|
SegDriver seg(
|
|
.bcdin(bcdout),
|
|
.segments(segments)
|
|
);
|
|
|
|
endmodule |