1 | 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 | entity top is
|
7 | generic (ii : natural := 0);
|
8 |
|
9 | port(
|
10 | Clk_G : in std_logic;
|
11 | S_Reset : in std_logic;
|
12 | -- out-ports from the environment
|
13 | H : out std_logic;
|
14 | V : out std_logic;
|
15 | DE_out : out std_logic;
|
16 | Re : out std_logic_vector (7 downto 0);
|
17 | Gr : out std_logic_vector (7 downto 0);
|
18 | Bl : out std_logic_vector (7 downto 0);
|
19 | Pixels_Tot : inout std_logic_vector (11 downto 0);
|
20 | Lines_Tot : inout std_logic_vector (10 downto 0);
|
21 | Pixels_Act : out std_logic_vector (11 downto 0);
|
22 | Lines_Act : out std_logic_vector (10 downto 0);
|
23 | Hor_sync : out std_logic_vector (5 downto 0);
|
24 | Ver_sync : out std_logic_vector (5 downto 0);
|
25 | Hor_F_P : out std_logic_vector (9 downto 0);
|
26 | Hor_B_P : out std_logic_vector (9 downto 0);
|
27 | H_sync_Pol : out std_logic;
|
28 | Ver_F_P : out std_logic_vector (2 downto 0);
|
29 | Ver_B_P : out std_logic_vector (5 downto 0);
|
30 | V_sync_Pol : out std_logic
|
31 |
|
32 | );
|
33 |
|
34 | end;
|
35 |
|
36 | architecture top_arch of top is
|
37 | -- buffer-signals to hand the analysis-result(aResult_) data to the mux_displayUnit(anaResult_)
|
38 | signal tempAnaResult_pixHorizontal : std_logic_vector(11 downto 0);
|
39 | signal tempAnaResult_linesVertical : std_logic_vector(10 downto 0);
|
40 | signal tempAnaResult_pixTotalHorizontal : std_logic_vector(11 downto 0);
|
41 | signal tempAnaResult_linesTotalVertical : std_logic_vector(10 downto 0);
|
42 | signal tempAnaResult_syncPixHorizontal : std_logic_vector(5 downto 0);
|
43 | signal tempAnaResult_syncPixVertical : std_logic_vector(5 downto 0);
|
44 | signal tempAnaResult_frontPorchHorizontal : std_logic_vector(9 downto 0);
|
45 | signal tempAnaResult_frontPorchVertical : std_logic_vector(2 downto 0);
|
46 | signal tempAnaResult_backPorchHorizontal : std_logic_vector(9 downto 0);
|
47 | signal tempAnaResult_backPorchVertical : std_logic_vector(5 downto 0);
|
48 | signal tempAnaResult_syncPolarityHorizontal : std_logic;
|
49 | signal tempAnaResult_syncPolarityVertical : std_logic;
|
50 | signal sel : std_logic_vector(7 downto 0);
|
51 | signal du_horizontalPix : natural; -- active horizontal pix
|
52 | signal du_verticalLines : natural; -- active vertical lines
|
53 | signal du_horizontalTotalPix : natural; -- total horizontal pix (active pix + frontporch + etc.)
|
54 | signal du_verticalTotalLines : natural; -- total vertical lines (active lines + frontporch + etc.)
|
55 | signal du_horizontalSyncPix : natural; -- horizontal pix-size for the sync-signal
|
56 | signal du_verticalSyncPix : natural; -- vertical line-size for the sync-signal
|
57 | signal du_horizontalFrontPorch : natural; -- horizontal frontporch
|
58 | signal du_horizontalBackPorch : natural; -- horizontal backporch
|
59 | signal du_verticalFrontPorch : natural; -- vertical frontporch
|
60 | signal du_verticalBackPorch : natural; -- vertical backporch
|
61 | signal du_hSyncPolarity : std_logic; -- HSync-Polarity
|
62 | signal du_vSyncPolarity : std_logic; -- VSync-Polarity
|
63 | signal manual_pixHorizontal : natural;
|
64 | signal manual_linesVertical : natural;
|
65 | signal manual_pixTotalHorizontal : natural;
|
66 | signal manual_linesTotalVertical : natural;
|
67 | signal manual_syncPixHorizontal : natural;
|
68 | signal manual_syncPixVertical : natural;
|
69 | signal manual_frontPorchHorizontal : natural;
|
70 | signal manual_frontPorchVertical : natural;
|
71 | signal manual_backPorchHorizontal : natural;
|
72 | signal manual_backPorchVertical : natural;
|
73 | signal manual_syncPolarityHorizontal : std_logic;
|
74 | signal manual_syncPolarityVertical : std_logic;
|
75 | signal resetFormatChange : std_logic;
|
76 |
|
77 | signal clock : std_logic;
|
78 |
|
79 |
|
80 | component displayunit
|
81 | generic (i : natural := 0);
|
82 | port(
|
83 | clk : in std_logic;
|
84 | reset : in std_logic;
|
85 | DE : out std_logic;
|
86 | hSync : out std_logic;
|
87 | vSync : out std_logic;
|
88 | R : out std_logic_vector (7 downto 0);
|
89 | G : out std_logic_vector (7 downto 0);
|
90 | B : out std_logic_vector (7 downto 0);
|
91 | -- in-ports from the displayUnit
|
92 | du_horizontalPix : in natural; -- active horizontal pix
|
93 | du_verticalLines : in natural; -- active vertical lines
|
94 | du_horizontalTotalPix : in natural; -- total horizontal pix (active pix + frontporch + etc.)
|
95 | du_verticalTotalLines : in natural; -- total vertical lines (active lines + frontporch + etc.)
|
96 | du_horizontalSyncPix : in natural; -- horizontal pix-size for the sync-signal
|
97 | du_verticalSyncPix : in natural; -- vertical line-size for the sync-signal
|
98 | du_horizontalFrontPorch : in natural; -- horizontal frontporch
|
99 | du_horizontalBackPorch : in natural; -- horizontal backporch
|
100 | du_verticalFrontPorch : in natural; -- vertical frontporch
|
101 | du_verticalBackPorch : in natural; -- vertical backporch
|
102 | du_hSyncPolarity : in std_logic; -- HSync-Polarity
|
103 | du_vSyncPolarity : in std_logic -- VSync-Polarity
|
104 | );
|
105 |
|
106 |
|
107 | end component;
|
108 | signal internH, internV, internDE : std_logic;
|
109 |
|
110 | component analysis
|
111 | port(
|
112 | -- in-ports for the analysis(handed by the video-in-port)
|
113 | analysisClk : in std_logic;
|
114 | analysisReset : in std_logic;
|
115 | analysisHSync : in std_logic;
|
116 | analysisVSync : in std_logic;
|
117 | analysisDE : in std_logic;
|
118 | -- out-port from analysis(signal to alert about a format-change)
|
119 | formatChange : out std_logic;
|
120 | -- in-port from analysis(to reset the formatChange-signal)
|
121 | resetFormatChange : in std_logic;
|
122 | -- out-ports from the analysis
|
123 | aResult_totalPix : inout std_logic_vector (11 downto 0);
|
124 | aResult_totalLines : inout std_logic_vector (10 downto 0);
|
125 | aResult_activePix : out std_logic_vector (11 downto 0);
|
126 | aResult_activeLines : out std_logic_vector (10 downto 0);
|
127 | aResult_hSync : out std_logic_vector (5 downto 0);
|
128 | aResult_vSync : out std_logic_vector (5 downto 0);
|
129 | aResult_horizontalFrontPorch : out std_logic_vector (9 downto 0);
|
130 | aResult_horizontalBackPorch : out std_logic_vector (9 downto 0);
|
131 | aResult_hSyncPolarity : out std_logic;
|
132 | aResult_verticalFrontPorch : out std_logic_vector (2 downto 0);
|
133 | aResult_verticalBackPorch : out std_logic_vector (5 downto 0);
|
134 | aResult_vSyncPolarity : out std_logic
|
135 | );
|
136 | end component;
|
137 |
|
138 | component mux_displayUnit
|
139 | port(
|
140 | muxClk : in std_logic;
|
141 | -- in-port from mux_displayUnit(to select the source of format-data)
|
142 | sel : in std_logic_vector (7 downto 0);
|
143 | -- in-port from analysis(to reset the formatChange-signal)
|
144 | anaResult_pixHorizontal : in std_logic_vector(11 downto 0);
|
145 | anaResult_linesVertical : in std_logic_vector(10 downto 0);
|
146 | anaResult_pixTotalHorizontal : in std_logic_vector(11 downto 0);
|
147 | anaResult_linesTotalVertical : in std_logic_vector(10 downto 0);
|
148 | anaResult_syncPixHorizontal : in std_logic_vector(5 downto 0);
|
149 | anaResult_syncPixVertical : in std_logic_vector(5 downto 0);
|
150 | anaResult_frontPorchHorizontal : in std_logic_vector(9 downto 0);
|
151 | anaResult_frontPorchVertical : in std_logic_vector(2 downto 0);
|
152 | anaResult_backPorchHorizontal : in std_logic_vector(9 downto 0);
|
153 | anaResult_backPorchVertical : in std_logic_vector(5 downto 0);
|
154 | anaResult_syncPolarityHorizontal : in std_logic;
|
155 | anaResult_syncPolarityVertical : in std_logic;
|
156 | -- in-ports from mux_displayUnit(manual-input handed by the localbus)
|
157 | manual_pixHorizontal : in natural;
|
158 | manual_linesVertical : in natural;
|
159 | manual_pixTotalHorizontal : in natural;
|
160 | manual_linesTotalVertical : in natural;
|
161 | manual_syncPixHorizontal : in natural;
|
162 | manual_syncPixVertical : in natural;
|
163 | manual_frontPorchHorizontal : in natural;
|
164 | manual_frontPorchVertical : in natural;
|
165 | manual_backPorchHorizontal : in natural;
|
166 | manual_backPorchVertical : in natural;
|
167 | manual_syncPolarityHorizontal : in std_logic;
|
168 | manual_syncPolarityVertical : in std_logic;
|
169 | -- resultdata which will be handed to the displayUnit
|
170 | result_pixHorizontal : out std_logic_vector(11 downto 0);
|
171 | result_linesVertical : out std_logic_vector(10 downto 0);
|
172 | result_pixTotalHorizontal : out std_logic_vector(11 downto 0);
|
173 | result_linesTotalVertical : out std_logic_vector(10 downto 0);
|
174 | result_syncPixHorizontal : out std_logic_vector(5 downto 0);
|
175 | result_syncPixVertical : out std_logic_vector(5 downto 0);
|
176 | result_frontPorchHorizontal : out std_logic_vector(9 downto 0);
|
177 | result_frontPorchVertical : out std_logic_vector(2 downto 0);
|
178 | result_backPorchHorizontal : out std_logic_vector(9 downto 0);
|
179 | result_backPorchVertical : out std_logic_vector(5 downto 0);
|
180 | result_syncPolarityHorizontal : out std_logic;
|
181 | result_syncPolarityVertical : out std_logic
|
182 | );
|
183 | end component;
|
184 |
|
185 |
|
186 | begin
|
187 |
|
188 |
|
189 | clock <= Clk_G ;
|
190 |
|
191 |
|
192 | aa: displayunit
|
193 | port map(
|
194 | clk => Clk_G,
|
195 | reset => S_Reset,
|
196 | DE => internDE,
|
197 | hSync => internH,
|
198 | vSync => internV,
|
199 | R => Re,
|
200 | G => Gr,
|
201 | B => Bl,
|
202 | du_horizontalPix => du_horizontalPix,
|
203 | du_verticalLines => du_verticalLines,
|
204 | du_horizontalTotalPix => du_horizontalTotalPix,
|
205 | du_verticalTotalLines => du_verticalTotalLines,
|
206 | du_horizontalSyncPix => du_horizontalSyncPix,
|
207 | du_verticalSyncPix => du_verticalSyncPix,
|
208 | du_horizontalFrontPorch => du_horizontalFrontPorch,
|
209 | du_horizontalBackPorch => du_horizontalBackPorch,
|
210 | du_verticalFrontPorch => du_verticalFrontPorch,
|
211 | du_verticalBackPorch => du_verticalBackPorch,
|
212 | du_hSyncPolarity => du_hSyncPolarity,
|
213 | du_vSyncPolarity => du_vSyncPolarity
|
214 | );
|
215 |
|
216 | bb: analysis
|
217 | port map(
|
218 | --
|
219 | analysisClk => Clk_G,
|
220 | analysisReset => S_Reset,
|
221 | analysisHSync => internH,
|
222 | analysisVSync => internV,
|
223 | analysisDE => internDE,
|
224 | -- out-ports(results) of analysis mapped on the buffer-signals
|
225 | aResult_totalPix => tempAnaResult_pixTotalHorizontal,
|
226 | aResult_totalLines => tempAnaResult_linesTotalVertical,
|
227 | aResult_activePix => tempAnaResult_pixHorizontal,
|
228 | aResult_activeLines => tempAnaResult_linesVertical,
|
229 | aResult_hSync => tempAnaResult_syncPixHorizontal,
|
230 | aResult_vSync => tempAnaResult_syncPixVertical,
|
231 | aResult_horizontalFrontPorch => tempAnaResult_frontPorchHorizontal,
|
232 | aResult_horizontalBackPorch => tempAnaResult_backPorchHorizontal,
|
233 | aResult_hSyncPolarity => tempAnaResult_syncPolarityHorizontal,
|
234 | aResult_verticalFrontPorch => tempAnaResult_frontPorchVertical,
|
235 | aResult_verticalBackPorch => tempAnaResult_backPorchVertical,
|
236 | aResult_vSyncPolarity => tempAnaResult_syncPolarityVertical,
|
237 | -- formatChange => formatChange,
|
238 | resetFormatChange => resetFormatChange
|
239 | );
|
240 |
|
241 | cc: mux_displayUnit
|
242 | port map(
|
243 | muxClk => clock,
|
244 | -- in-ports from mux_displayUnit mapped on the buffer-signals
|
245 | anaResult_pixTotalHorizontal => tempAnaResult_pixTotalHorizontal,
|
246 | anaResult_linesTotalVertical => tempAnaResult_linesTotalVertical,
|
247 | anaResult_pixHorizontal => tempAnaResult_pixHorizontal,
|
248 | anaResult_linesVertical => tempAnaResult_linesVertical,
|
249 | anaResult_syncPixHorizontal => tempAnaResult_syncPixHorizontal,
|
250 | anaResult_syncPixVertical => tempAnaResult_syncPixVertical,
|
251 | anaResult_frontPorchHorizontal => tempAnaResult_frontPorchHorizontal,
|
252 | anaResult_backPorchHorizontal => tempAnaResult_backPorchHorizontal,
|
253 | anaResult_syncPolarityHorizontal => tempAnaResult_syncPolarityHorizontal,
|
254 | anaResult_frontPorchVertical => tempAnaResult_frontPorchVertical,
|
255 | anaResult_backPorchVertical => tempAnaResult_backPorchVertical,
|
256 | anaResult_syncPolarityVertical => tempAnaResult_syncPolarityVertical,
|
257 | manual_pixHorizontal => manual_pixHorizontal,
|
258 | manual_linesVertical => manual_linesVertical,
|
259 | manual_pixTotalHorizontal => manual_pixTotalHorizontal,
|
260 | manual_linesTotalVertical => manual_linesTotalVertical,
|
261 | manual_syncPixHorizontal => manual_syncPixHorizontal,
|
262 | manual_syncPixVertical => manual_syncPixVertical,
|
263 | manual_frontPorchHorizontal => manual_frontPorchHorizontal,
|
264 | manual_frontPorchVertical => manual_frontPorchVertical,
|
265 | manual_backPorchHorizontal => manual_backPorchHorizontal,
|
266 | manual_backPorchVertical => manual_backPorchVertical,
|
267 | manual_syncPolarityHorizontal => manual_syncPolarityHorizontal,
|
268 | manual_syncPolarityVertical => manual_syncPolarityVertical,
|
269 | sel => sel
|
270 | );
|
271 | H <= internH;
|
272 | V <= internV;
|
273 | DE_out <= internDE;
|
274 |
|
275 | end top_arch;
|