added seven segment display logic / seconds counter
All checks were successful
ci/woodpecker/push/test-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/test-workflow Pipeline was successful
This commit is contained in:
parent
423f89a665
commit
4b041651d4
60
design/display_converter.sv
Normal file
60
design/display_converter.sv
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
* display_converter.sv - decodes a 5 bit digit input into its seven segment
|
||||||
|
* display equivalent using a lookup table. Display can
|
||||||
|
* do 0 - 9, A - F, individual segmentsm and special
|
||||||
|
* characters.
|
||||||
|
* @author: Dilanthi Prentice, Waylon Cude
|
||||||
|
* @date: [not sure when its due yet]
|
||||||
|
*
|
||||||
|
*
|
||||||
|
****/
|
||||||
|
module display_converter(
|
||||||
|
input logic [4:0] digit,
|
||||||
|
output logic [6:0] segment
|
||||||
|
);
|
||||||
|
|
||||||
|
localparam ROM_SIZE=32;
|
||||||
|
|
||||||
|
//ROM lookup table for seven segment display
|
||||||
|
localparam logic [6:0] segment_rom [0:ROM_SIZE-1] = '{
|
||||||
|
7'b1111110, //0
|
||||||
|
7'b0000110, //1
|
||||||
|
7'b1101101, //2
|
||||||
|
7'b1111001, //3
|
||||||
|
7'b1011011, //4
|
||||||
|
7'b1011011, //5
|
||||||
|
7'b1011111, //6
|
||||||
|
7'b1110000, //7
|
||||||
|
7'b1111111, //8
|
||||||
|
7'b1111011, //9
|
||||||
|
|
||||||
|
7'b1110111, //A
|
||||||
|
7'b0011111, //B
|
||||||
|
7'b1001110, //C
|
||||||
|
7'b0111101, //D
|
||||||
|
7'b1001111, //E
|
||||||
|
7'b1000111, //F
|
||||||
|
|
||||||
|
7'b1000000, //segment a
|
||||||
|
7'b0100000, //segment b
|
||||||
|
7'b0010000, //segment c
|
||||||
|
7'b0001000, //segment d
|
||||||
|
7'b0000100, //segment e
|
||||||
|
7'b0000001, //segment f
|
||||||
|
|
||||||
|
7'b0110111, //H
|
||||||
|
7'b0001110, //L
|
||||||
|
7'b1110111, //R
|
||||||
|
7'b0000110, //l
|
||||||
|
7'b0000101, //r
|
||||||
|
|
||||||
|
7'b0000000, //blank
|
||||||
|
7'b0000000, //blank
|
||||||
|
7'b0000000, //blank
|
||||||
|
7'b0000000, //blank
|
||||||
|
7'b0000000 //blank
|
||||||
|
};
|
||||||
|
//use digit input to index segment_rom lookup table.
|
||||||
|
assign segment = segment_rom[digit];
|
||||||
|
|
||||||
|
endmodule
|
||||||
@ -1,10 +1,29 @@
|
|||||||
module seconds_display(
|
/***
|
||||||
input logic clk,
|
* seconds_display.sv - convert a seconds counter to a seven segement display.
|
||||||
input logic reset,
|
*
|
||||||
input [$clog2(60)-1:0] counter,
|
* @author: Dilanthi Prentice, Waylon Cude
|
||||||
output [7:0] display_tens,
|
* @date:[unsure of due date]
|
||||||
output [7:0] display_ones
|
*
|
||||||
|
*/
|
||||||
|
module seconds_display
|
||||||
|
(
|
||||||
|
input [$clog2(60)-1:0] seconds,
|
||||||
|
output [6:0] display_tens,
|
||||||
|
output [6:0] display_ones
|
||||||
);
|
);
|
||||||
|
|
||||||
|
logic [4:0] ones_digit;
|
||||||
|
logic [4:0] tens_digit;
|
||||||
|
|
||||||
|
always_comb
|
||||||
|
begin
|
||||||
|
ones_digit = seconds % 10;
|
||||||
|
tens_digit = seconds / 10;
|
||||||
|
end
|
||||||
|
|
||||||
|
//instantiate the display_converter to convert the counter
|
||||||
|
//to a seven segment display number
|
||||||
|
display_converter ones (ones_digit, display_ones);
|
||||||
|
display_converter tens (tens_digit, display_tens);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user