OpenCores
URL https://opencores.org/ocsvn/zx_ula/zx_ula/trunk

Subversion Repositories zx_ula

[/] [zx_ula/] [branches/] [xilinx/] [spectrum_48k_spartan3_starter_kit_timex_hicolor_ulaplus/] [display.v] - Blame information for rev 15

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 15 mcleod_ide
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3
// Company:        Dept. Architecture and Computing Technology. University of Seville
4
// Engineer:       Miguel Angel Rodriguez Jodar. rodriguj@atc.us.es
5
// 
6
// Create Date:    19:13:39 20-May-2011 
7
// Design Name:    7-segment display for Spartan 3 Starter Board
8
// Module Name:    7-segment display for Spartan 3 Starter Board
9
// Project Name: 
10
// Target Devices: 
11
// Tool versions: 
12
// Description: 
13
//
14
// Dependencies: 
15
//
16
// Revision: 
17
// Revision 1.00 - File Created
18
// Additional Comments: GPL License policies apply to the contents of this file.
19
//
20
//////////////////////////////////////////////////////////////////////////////////
21
module display(
22
    input clk,          // some megahertzs are enough
23
    input load,   // positive-edge load signal
24
    input [15:0] valor, // 16-bit (4 hex digit) value to show
25
    output [3:0] an,             // 4 anodes (4 displays)
26
    output [6:0] seg             // 7 cathodes per display
27
    );
28
 
29
        reg [3:0] ranodo = 4'b1110;
30
        assign an = ranodo;
31
        reg [6:0] rseg = 7'b0000000;
32
        assign seg = rseg;
33
 
34
        reg [3:0] rvalor[0:3];
35
        reg [1:0] digito = 2'b00;
36
 
37
        reg [15:0] contador = 16'h0000;
38
        wire clkdisplay = contador[15];
39
        always @(posedge clk)
40
                contador <= contador + 1;
41
 
42
        always @(posedge load)
43
                begin
44
                        rvalor[0] <= valor[3:0];
45
                        rvalor[1] <= valor[7:4];
46
                        rvalor[2] <= valor[11:8];
47
                        rvalor[3] <= valor[15:12];
48
                end
49
 
50
        always @(posedge clkdisplay)
51
        begin
52
                digito = digito + 1;
53
                ranodo = {ranodo[2:0],ranodo[3]};
54
                rseg = ~hex2seg(rvalor[digito]);
55
        end
56
 
57
function [6:0] hex2seg (input [3:0] v);
58
        case (v)
59
                 0: hex2seg = 7'b1101111;
60
                 1: hex2seg = 7'b0100100;
61
                 2: hex2seg = 7'b1110011;
62
                 3: hex2seg = 7'b1110110;
63
                 4: hex2seg = 7'b0111100;
64
                 5: hex2seg = 7'b1011110;
65
                 6: hex2seg = 7'b1011111;
66
                 7: hex2seg = 7'b1101100;
67
                 8: hex2seg = 7'b1111111;
68
                 9: hex2seg = 7'b1111110;
69
                10: hex2seg = 7'b1111101;
70
                11: hex2seg = 7'b0011111;
71
                12: hex2seg = 7'b1001011;
72
                13: hex2seg = 7'b0110111;
73
                14: hex2seg = 7'b1011011;
74
                15: hex2seg = 7'b1011001;
75
        endcase
76
endfunction
77
 
78
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.