URL
https://opencores.org/ocsvn/forwardcom/forwardcom/trunk
Subversion Repositories forwardcom
[/] [forwardcom/] [trunk/] [seg7.sv] - Rev 8
Compare with Previous | Blame | View Log
//////////////////////////////////////////////////////////////////////////////////// Engineer: Agner Fog//// Create Date: 2020-05-01// Last modified: 2021-04-30// Module Name: seg7// Project Name: ForwardCom soft core// Target Devices: Artix 7// Tool Versions: Vivado v. 2020.1// License: CERN-OHL-W v. 2 or later// Description: Decoder and driver for 8 digit 7 segment display//////////////////////////////////////////////////////////////////////////////////// Driver for 8 digit, 7 segment multiplexed displaymodule seg7 (input clock, // system clock 100 MHzinput [31:0] dispin, // input, hexadecimal or BCDinput [7:0] enable, // enable each digitoutput reg [7:0] segment7seg, // segment output, active lowoutput reg [7:0] digit7seg // digit select output, active low);reg [14:0] count = 0;logic [2:0] index;logic [3:0] digit;logic [7:0] segment;always_comb beginindex[2:0] = count[13:11]; // digit indexdigit[3:0] = dispin >> (index*4); // digit valuecase(digit) // pgfedcba 7-segment bit pattern lookup0: segment = 8'b00111111;1: segment = 8'b00000110;2: segment = 8'b01011011;3: segment = 8'b01001111;4: segment = 8'b01100110;5: segment = 8'b01101101;6: segment = 8'b01111101;7: segment = 8'b00000111;8: segment = 8'b01111111;9: segment = 8'b01101111;4'hA: segment = 8'b01110111;4'hB: segment = 8'b01111100;4'hC: segment = 8'b00111001;4'hD: segment = 8'b01011110;4'hE: segment = 8'b01111001;4'hF: segment = 8'b01110001;endcaseendalways_ff @(posedge clock) begincount <= count + 1; // clock dividerif (count[10:0] == 0) begin // scan rate = clock / 2**11segment7seg <= ~segment; // active low output/*if (enable[index])digit7seg <= ~(8'b1 << index); // enable one digit at indexelsedigit7seg <= 8'b11111111; // disabled digit*/digit7seg <= ~((8'b1 << index) & enable); // enable one digit at indexend;endendmodule
