Implement Counter/BCD/Segments
This commit is contained in:
48
SegDriver.sv
Normal file
48
SegDriver.sv
Normal file
@ -0,0 +1,48 @@
|
||||
`default_nettype none
|
||||
|
||||
module SingleSegDriver(
|
||||
input var logic[3:0] bcdin,
|
||||
output var logic[6:0] segments
|
||||
);
|
||||
|
||||
// The segments are enabled on a low logic level
|
||||
always_comb case (bcdin)
|
||||
// +----a----+
|
||||
// | |
|
||||
// f b
|
||||
// | |
|
||||
// +----g----+
|
||||
// | |
|
||||
// e c
|
||||
// | |
|
||||
// +----d----+ gfedcba
|
||||
4'b0000: segments = ~7'b0111111;
|
||||
4'b0001: segments = ~7'b0000110;
|
||||
4'b0010: segments = ~7'b1011011;
|
||||
4'b0011: segments = ~7'b1001111;
|
||||
4'b0100: segments = ~7'b1100110;
|
||||
4'b0101: segments = ~7'b1101101;
|
||||
4'b0110: segments = ~7'b1111101;
|
||||
4'b0111: segments = ~7'b0000111;
|
||||
4'b1000: segments = ~7'b1111111;
|
||||
4'b1001: segments = ~7'b1100111;
|
||||
default: segments = ~7'b0;
|
||||
endcase
|
||||
endmodule
|
||||
|
||||
module SegDriver
|
||||
#(parameter integer DIGITS = 4)(
|
||||
input var logic[3:0] bcdin[DIGITS-1:0],
|
||||
output var logic[6:0] segments[DIGITS-1:0]
|
||||
);
|
||||
|
||||
genvar ii;
|
||||
generate
|
||||
for (ii = 0; ii < DIGITS; ii = ii + 1) begin : generate_seg_drivers
|
||||
SingleSegDriver ssd(
|
||||
.bcdin(bcdin[ii]),
|
||||
.segments(segments[ii])
|
||||
);
|
||||
end
|
||||
endgenerate
|
||||
endmodule
|
Reference in New Issue
Block a user