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

Subversion Repositories graphicsaccelerator

[/] [graphicsaccelerator/] [trunk/] [VGA_Top.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 OmarMokhta
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
         entity VGA_Top is
4
    Port ( R : out  STD_LOGIC;
5
           G : out  STD_LOGIC;
6
           B : out  STD_LOGIC;
7
           Clk : in  STD_LOGIC;
8
           HS : out  STD_LOGIC;
9
           VS : out  STD_LOGIC;
10
                          button : in  STD_LOGIC;
11
                          reset : in  STD_LOGIC;
12
                          LED : out  STD_LOGIC;
13
                          Enables : out  STD_LOGIC_VECTOR(3 downto 0);
14
                          Segments : out  STD_LOGIC_VECTOR(6 downto 0);
15
                          inColor : in  STD_LOGIC_VECTOR (2 downto 0);
16
                          MoveUp : in  STD_LOGIC;
17
                          MoveDown : in  STD_LOGIC;
18
                          MoveLeft : in  STD_LOGIC;
19
                          MoveRight : in  STD_LOGIC;
20
                          MoveP1 : in  STD_LOGIC;
21
                          MoveP2 : in  STD_LOGIC);
22
end VGA_Top;
23
architecture Behavioral of VGA_Top is
24
COMPONENT Debouncer
25
        PORT(
26
                Clk : IN std_logic;
27
                Button : IN std_logic;
28
                Dout : OUT std_logic);
29
END COMPONENT;
30
COMPONENT Bresenhamer
31
        PORT(
32
                X1 : IN std_logic_vector(9 downto 0);
33
                Y1 : IN std_logic_vector(8 downto 0);
34
                X2 : IN std_logic_vector(9 downto 0);
35
                Y2 : IN std_logic_vector(8 downto 0);
36
                Clk : IN std_logic;
37
                StartDraw : IN std_logic;
38
                WriteEnable : OUT std_logic;
39
                SS : OUT STD_LOGIC_VECTOR (3 downto 0);
40
                X : OUT std_logic_vector(9 downto 0);
41
                Y : OUT std_logic_vector(8 downto 0);
42
                Reset : in  STD_LOGIC);
43
END COMPONENT;
44
Component Synchronizer is
45
    Port ( R : out  STD_LOGIC;
46
           G : out  STD_LOGIC;
47
           B : out  STD_LOGIC;
48
           HS : out  STD_LOGIC;
49
           VS : out  STD_LOGIC;
50
           Clk : in  STD_LOGIC;
51
                          dataIn : in  STD_LOGIC_VECTOR (2 downto 0);
52
                          AddressX : out  STD_LOGIC_VECTOR (9 downto 0);
53
                          AddressY : out  STD_LOGIC_VECTOR (8 downto 0));
54
end Component;
55
Component FrameBuffer is
56
    Port ( inX : in  STD_LOGIC_VECTOR (9 downto 0);
57
           inY : in  STD_LOGIC_VECTOR (8 downto 0);
58
           outX : in  STD_LOGIC_VECTOR (9 downto 0);
59
           outY : in  STD_LOGIC_VECTOR (8 downto 0);
60
           outColor : out  STD_LOGIC_VECTOR (2 downto 0);
61
           inColor : in  STD_LOGIC_VECTOR (2 downto 0);
62
           BufferWrite : in  STD_LOGIC;
63
           Clk : in  STD_LOGIC);
64
end Component;
65
COMPONENT SevenSegment
66
        PORT(   Clk : IN std_logic;
67
                        data : IN std_logic_vector(15 downto 0);
68
                        Enables : OUT std_logic_vector(3 downto 0);
69
                        Segments : OUT std_logic_vector(6 downto 0));
70
END COMPONENT;
71
COMPONENT Pointer
72
        Generic (initX : STD_LOGIC_VECTOR (9 downto 0);
73
                                initY : STD_LOGIC_VECTOR (8 downto 0));
74
        PORT(   MoveUp : IN std_logic;
75
                        MoveDown : IN std_logic;
76
                        MoveLeft : IN std_logic;
77
                        MoveRight : IN std_logic;
78
                        Move : IN std_logic;
79
                        Clk : IN std_logic;
80
                        X : OUT std_logic_vector(9 downto 0);
81
                        Y : OUT std_logic_vector(8 downto 0);
82
                        syncX : IN std_logic_vector(9 downto 0);
83
                        syncY : IN std_logic_vector(8 downto 0);
84
                        Here : OUT std_logic);
85
END COMPONENT;
86
COMPONENT FreqDiv
87
        PORT(   Clk : IN std_logic;
88
                        Clk2 : OUT std_logic);
89
END COMPONENT;
90
signal Adx,GPU_X : STD_LOGIC_VECTOR (9 downto 0);
91
signal Ady,GPU_Y : STD_LOGIC_VECTOR (8 downto 0);
92
signal data : STD_LOGIC_VECTOR (2 downto 0);
93
signal GIM : STD_LOGIC_VECTOR (22 downto 0);
94
signal GPU_COLOR_TO_BUFFER : STD_LOGIC_VECTOR (2 downto 0);
95
signal BufferWrite : STD_LOGIC;
96
signal Dout : STD_LOGIC;
97
signal SS : STD_LOGIC_VECTOR (3 downto 0);
98
signal Clk2 : STD_LOGIC;
99
signal P1Region,p2Region : STD_LOGIC;
100
signal Rt,Gt,Bt : STD_LOGIC;
101
signal X1,X2 : STD_LOGIC_VECTOR (9 downto 0);
102
signal Y1,Y2 : STD_LOGIC_VECTOR (8 downto 0);
103
begin
104
ins_FrameBuffer : FrameBuffer PORT MAP (
105
        inX => GPU_X,
106
   inY => GPU_Y,
107
   outX => Adx,
108
   outY => Ady,
109
   outColor => data,
110
   inColor => inColor,
111
   BufferWrite => BufferWrite,
112
   Clk => Clk);
113
ins_Synchronizer : Synchronizer PORT MAP (
114
         R => Rt,
115
    G => Gt,
116
    B => Bt,
117
    HS => HS,
118
    VS => VS,
119
    Clk => Clk,
120
         dataIn => data,
121
         AddressX => Adx,
122
         AddressY => Ady);
123
Inst_Debouncer: Debouncer PORT MAP(
124
        Clk => Clk,
125
        Button => Button,
126
        Dout => Dout);
127
Inst_Bresenhamer: Bresenhamer PORT MAP(
128
        WriteEnable => BufferWrite,
129
        X => GPU_X,
130
        Y => GPU_Y,
131
        X1 => X1,
132
        Y1 => Y1,
133
        X2 => X2,
134
        Y2 => Y2,
135
        Clk => Clk,
136
        SS => SS,
137
        Reset => reset,
138
        StartDraw => Dout);
139
 
140
LED <= BufferWrite;
141
 
142
R <= Rt when (P1Region='0' and P2Region='0') else not Rt;
143
 
144
G <= Gt when (P1Region='0' and P2Region='0') else not Gt;
145
 
146
B <= Bt when (P1Region='0' and P2Region='0') else not Bt;
147
 
148
Inst_SevenSegment: SevenSegment PORT MAP(
149
        Clk => Clk,
150
        Enables => Enables,
151
        Segments => Segments,
152
        data(3 downto 0) => SS,
153
        data(15 downto 4) => "000000000000");
154
 
155
Inst_Pointer1: Pointer
156
        GENERIC MAP (initX => "0000000100",
157
                                         initY => "011110000")
158
        PORT MAP(
159
        MoveUp => MoveUp,
160
        MoveDown => MoveDown,
161
        MoveLeft => MoveLeft,
162
        MoveRight => MoveRight,
163
        Move => MoveP1,
164
        Clk => Clk2,
165
        Here => P1Region,
166
        X => X1,
167
        Y => Y1,
168
        syncX => Adx,
169
        syncY => Ady);
170
 
171
Inst_FreqDiv: FreqDiv PORT MAP(
172
        Clk => Clk,
173
        Clk2 => Clk2);
174
 
175
Inst_Pointer2: Pointer
176
        GENERIC MAP (InitX => "1001111000",
177
                                         InitY => "011110000")
178
        PORT MAP(
179
        MoveUp => MoveUp,
180
        MoveDown => MoveDown,
181
        MoveLeft => MoveLeft,
182
        MoveRight => MoveRight,
183
        Move => MoveP2,
184
        Clk => Clk2,
185
        Here => P2Region,
186
        X => X2,
187
        Y => Y2,
188
        syncX => Adx,
189
        syncY => Ady);
190
 
191
end Behavioral;

powered by: WebSVN 2.1.0

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