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

Subversion Repositories c16

[/] [c16/] [tags/] [V10/] [vhdl/] [bin_to_7segment.vhd] - Blame information for rev 26

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jsauermann
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5
 
6
--  Uncomment the following lines to use the declarations that are
7
--  provided for instantiating Xilinx primitive components.
8
--library UNISIM;
9
--use UNISIM.VComponents.all;
10
 
11
entity bin_to_7segment is
12
    Port(       CLK_I : in std_logic;
13
                        T2    : in std_logic;
14
                        PC    : in std_logic_vector(15 downto 0);
15
                        SEG1  : out std_logic_vector(7 downto 1);
16
                        SEG2  : out std_logic_vector(7 downto 0));
17
end bin_to_7segment;
18
 
19
architecture Behavioral of bin_to_7segment is
20
 
21
                                                                --                                        +-------      middle  upper
22
                                                                --                                        |+-------     right   upper
23
                                                                --                                        ||+------     right   lower
24
                                                                --                                        |||+-----     middle  lower
25
                                                                --                                        ||||+----     left    lower
26
                                                                --                                        |||||+---     left    upper
27
                                                                --                                        ||||||+--     middle  middle
28
                                                                --                                        |||||||
29
constant LEDV_0         : std_logic_vector(6 downto 0):= "1111110";-- 0
30
constant LEDV_1         : std_logic_vector(6 downto 0):= "0110000";-- 1
31
constant LEDV_2         : std_logic_vector(6 downto 0):= "1101101";-- 2
32
constant LEDV_3         : std_logic_vector(6 downto 0):= "1111001";-- 3
33
constant LEDV_4         : std_logic_vector(6 downto 0):= "0110011";-- 4
34
constant LEDV_5         : std_logic_vector(6 downto 0):= "1011011";-- 5
35
constant LEDV_6         : std_logic_vector(6 downto 0):= "1011111";-- 6
36
constant LEDV_7         : std_logic_vector(6 downto 0):= "1110000";-- 7
37
constant LEDV_8         : std_logic_vector(6 downto 0):= "1111111";-- 8
38
constant LEDV_9         : std_logic_vector(6 downto 0):= "1111011";-- 9
39
constant LEDV_A         : std_logic_vector(6 downto 0):= "1110111";-- A
40
constant LEDV_b         : std_logic_vector(6 downto 0):= "0011111";-- b
41
constant LEDV_C         : std_logic_vector(6 downto 0):= "1001110";-- C
42
constant LEDV_d         : std_logic_vector(6 downto 0):= "0111101";-- d
43
constant LEDV_E         : std_logic_vector(6 downto 0):= "1001111";-- E
44
constant LEDV_F         : std_logic_vector(6 downto 0):= "1000111";-- F
45
 
46
        signal LED_CNT  : std_logic_vector(24 downto 0);
47
        signal LED_VAL  : std_logic_vector(15 downto 0);
48
 
49
begin
50
 
51
        process(CLK_I)
52
 
53
                variable LED4H, LED4L  : std_logic_vector(3 downto 0);
54
 
55
        begin
56
                if (rising_edge(CLK_I)) then
57
                        if (T2 = '1') then
58
                                if (LED_CNT(24) = '0')   then
59
                                        LED4H := LED_VAL( 7 downto  4);
60
                                        LED4L := LED_VAL( 3 downto  0);
61
                                else
62
                                        LED4H := LED_VAL(15 downto 12);
63
                                        LED4L := LED_VAL(11 downto  8);
64
                                end if;
65
 
66
                                if (LED_CNT = 0) then    LED_VAL <= PC;  end if;
67
                                LED_CNT <= LED_CNT + 1;
68
 
69
                                case LED4H is
70
                                        when X"0" =>     SEG1 <= LEDV_0;
71
                                        when X"1" =>    SEG1 <= LEDV_1;
72
                                        when X"2" =>    SEG1 <= LEDV_2;
73
                                        when X"3" =>    SEG1 <= LEDV_3;
74
                                        when X"4" =>    SEG1 <= LEDV_4;
75
                                        when X"5" =>    SEG1 <= LEDV_5;
76
                                        when X"6" =>    SEG1 <= LEDV_6;
77
                                        when X"7" =>    SEG1 <= LEDV_7;
78
                                        when X"8" =>    SEG1 <= LEDV_8;
79
                                        when X"9" =>    SEG1 <= LEDV_9;
80
                                        when X"A" =>    SEG1 <= LEDV_A;
81
                                        when X"B" =>    SEG1 <= LEDV_b;
82
                                        when X"C" =>    SEG1 <= LEDV_c;
83
                                        when X"D" =>    SEG1 <= LEDV_d;
84
                                        when X"E" =>    SEG1 <= LEDV_E;
85
                                        when others =>  SEG1 <= LEDV_F;
86
                                end case;
87
 
88
                                case LED4L is
89
                                        when X"0" =>     SEG2(7 downto 1) <= LEDV_0;
90
                                        when X"1" =>    SEG2(7 downto 1) <= LEDV_1;
91
                                        when X"2" =>    SEG2(7 downto 1) <= LEDV_2;
92
                                        when X"3" =>    SEG2(7 downto 1) <= LEDV_3;
93
                                        when X"4" =>    SEG2(7 downto 1) <= LEDV_4;
94
                                        when X"5" =>    SEG2(7 downto 1) <= LEDV_5;
95
                                        when X"6" =>    SEG2(7 downto 1) <= LEDV_6;
96
                                        when X"7" =>    SEG2(7 downto 1) <= LEDV_7;
97
                                        when X"8" =>    SEG2(7 downto 1) <= LEDV_8;
98
                                        when X"9" =>    SEG2(7 downto 1) <= LEDV_9;
99
                                        when X"A" =>    SEG2(7 downto 1) <= LEDV_A;
100
                                        when X"B" =>    SEG2(7 downto 1) <= LEDV_b;
101
                                        when X"C" =>    SEG2(7 downto 1) <= LEDV_c;
102
                                        when X"D" =>    SEG2(7 downto 1) <= LEDV_d;
103
                                        when X"E" =>    SEG2(7 downto 1) <= LEDV_E;
104
                                        when others =>  SEG2(7 downto 1) <= LEDV_F;
105
                                end case;
106
 
107
                                SEG2(0) <= LED_CNT(24);
108
                        end if;
109
                end if;
110
        end process;
111
 
112
end Behavioral;

powered by: WebSVN 2.1.0

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