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

Subversion Repositories npigrctrl

[/] [npigrctrl/] [trunk/] [npi_vga_v1_00_b/] [hdl/] [vhdl/] [npi_vga.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 slavek
----------------------------------------------------------------------
2
----                                                              ----
3
---- NPI VGA Top module                                           ----
4
----                                                              ----
5
---- Author(s):                                                   ----
6
---- - Slavek Valach, s.valach@dspfpga.com                        ----
7
----                                                              ----
8
----------------------------------------------------------------------
9
----                                                              ----
10
---- Copyright (C) 2008 Authors and OPENCORES.ORG                 ----
11
----                                                              ----
12
---- This source file may be used and distributed without         ----
13
---- restriction provided that this copyright statement is not    ----
14
---- removed from the file and that any derivative work contains  ----
15
---- the original copyright notice and the associated disclaimer. ----
16
----                                                              ----
17
---- This source file is free software; you can redistribute it   ----
18
---- and/or modify it under the terms of the GNU General          ----
19
---- Public License as published by the Free Software Foundation; ----
20
---- either version 2.0 of the License, or (at your option) any   ----
21
---- later version.                                               ----
22
----                                                              ----
23
---- This source is distributed in the hope that it will be       ----
24
---- useful, but WITHOUT ANY WARRANTY; without even the implied   ----
25
---- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ----
26
---- PURPOSE. See the GNU General Public License for more details.----
27
----                                                              ----
28
---- You should have received a copy of the GNU General           ----
29
---- Public License along with this source; if not, download it   ----
30
---- from http://www.gnu.org/licenses/gpl.txt                     ----
31
----                                                              ----
32
----------------------------------------------------------------------
33
 
34
LIBRARY ieee;
35
USE ieee.std_logic_1164.all;
36
use ieee.std_logic_unsigned.all;
37
use work.video_cfg.all;
38
 
39
entity npi_vga is
40
generic (
41
   C_VD_ADDR               : std_logic_vector   := x"00800000";
42
   C_VD_STRIDE             : natural            := 1280;
43
   C_VD_WIDTH              : natural            := 1280;
44
   C_VD_HEIGHT             : integer            := 1024;
45
   C_VD_PIXEL_D            : natural            := 32;
46
   C_VD_PIXEL_DEPTH        : natural            := 8;
47
 
48
   C_VD_H_BP               : natural            := 48 + 8;
49
   C_VD_H_FP               : natural            := 8 + 8;
50
   C_VD_H_SYNC_W           : natural            := 96;
51
   C_VD_H_POL              : std_logic          := '0';
52
   C_VD_V_BP               : natural            := 25 + 8;
53
   C_VD_V_FP               : natural            := 2 + 8;
54
   C_VD_V_SYNC_W           : natural            := 2;
55
   C_VD_V_POL              : std_logic          := '0';
56
 
57
   C_NPI_BURST_SIZE        : integer            := 256;
58
   C_NPI_ADDR_WIDTH        : integer            := 32;
59
   C_NPI_DATA_WIDTH        : integer            := 64;
60
   C_NPI_BE_WIDTH          : integer            := 8;
61
   C_NPI_RDWDADDR_WIDTH    : integer            := 4;
62
   C_SPLB_AWIDTH           : integer            := 32;
63
   C_SPLB_DWIDTH           : integer            := 128;
64
   C_SPLB_NUM_MASTERS      : integer            := 8;
65
   C_SPLB_MID_WIDTH        : integer            := 3;
66
   C_SPLB_NATIVE_DWIDTH    : integer            := 32;
67
   C_SPLB_P2P              : integer            := 0;
68
   C_SPLB_SUPPORT_BURSTS   : integer            := 0;
69
   C_SPLB_SMALLEST_MASTER  : integer            := 32;
70
   C_SPLB_CLK_PERIOD_PS    : integer            := 10000;
71
   C_FAMILY                : string             := "virtex5";
72
   C_MEM0_BASEADDR         : std_logic_vector   := X"FFFFFFFF";
73
   C_MEM0_HIGHADDR         : std_logic_vector   := X"00000000";
74
   C_MEM1_BASEADDR         : std_logic_vector   := X"FFFFFFFF";
75
   C_MEM1_HIGHADDR         : std_logic_vector   := X"00000000"
76
 
77
   );
78
port(
79
 
80
   NPI_Clk                 : in     std_logic;
81
   NPI_RST                 : in     std_logic;
82
 
83
   NPI_Addr                : out    std_logic_vector(C_NPI_ADDR_WIDTH - 1 downto 0);
84
   NPI_AddrReq             : out    std_logic;
85
   NPI_AddrAck             : in     std_logic;
86
   NPI_RNW                 : out    std_logic;
87
   NPI_Size                : out    std_logic_vector(3 downto 0);
88
   NPI_WrFIFO_Data         : out    std_logic_vector(C_NPI_DATA_WIDTH - 1 downto 0);
89
   NPI_WrFIFO_BE           : out    std_logic_vector(C_NPI_BE_WIDTH - 1 downto 0);
90
   NPI_WrFIFO_Push         : out    std_logic;
91
   NPI_RdFIFO_Data         : in     std_logic_vector(C_NPI_DATA_WIDTH - 1 downto 0);
92
   NPI_RdFIFO_Pop          : out    std_logic;
93
   NPI_RdFIFO_RdWdAddr     : in     std_logic_vector(C_NPI_RDWDADDR_WIDTH - 1 downto 0);
94
   NPI_WrFIFO_Empty        : in     std_logic;
95
   NPI_WrFIFO_AlmostFull   : in     std_logic;
96
   NPI_WrFIFO_Flush        : out    std_logic;
97
   NPI_RdFIFO_Empty        : in     std_logic;
98
   NPI_RdFIFO_Flush        : out    std_logic;
99
   NPI_RdFIFO_Latency      : in     std_logic_vector(1 downto 0);
100
   NPI_RdModWr             : out    std_logic;
101
   NPI_InitDone            : in     std_logic;
102
 
103
   INTR                    : out    std_logic;
104
 
105
   VIDEO_CLK               : in     std_logic;                    -- LCD Clock signal
106
   VIDEO_VSYNC             : out    std_logic;
107
   VIDEO_HSYNC             : out    std_logic;
108
   VIDEO_DE                : out    std_logic;
109
   VIDEO_CLK_OUT           : out    std_logic;
110
   VIDEO_R                 : out    std_logic_vector(C_VD_PIXEL_DEPTH - 1 downto 0);
111
   VIDEO_G                 : out    std_logic_vector(C_VD_PIXEL_DEPTH - 1 downto 0);
112
   VIDEO_B                 : out    std_logic_vector(C_VD_PIXEL_DEPTH - 1 downto 0);
113
 
114
   X                       : out    std_logic_vector(7 downto 0);
115
   X1                      : out    std_logic;
116
   X2                      : out    std_logic;
117
   X3                      : out    std_logic;
118
   X4                      : out    std_logic;
119
   X5                      : out    std_logic;
120
   X6                      : out    std_logic;
121
   X7                      : out    std_logic;
122
   X8                      : out    std_logic;
123
   X9                      : out    std_logic;
124
   X10                     : out    std_logic;
125
 
126
   SPLB_Clk                : in  std_logic;
127
   SPLB_Rst                : in  std_logic;
128
   PLB_ABus                : in  std_logic_vector(0 to 31);
129
   PLB_UABus               : in  std_logic_vector(0 to 31);
130
   PLB_PAValid             : in  std_logic;
131
   PLB_SAValid             : in  std_logic;
132
   PLB_rdPrim              : in  std_logic;
133
   PLB_wrPrim              : in  std_logic;
134
   PLB_masterID            : in  std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
135
   PLB_abort               : in  std_logic;
136
   PLB_busLock             : in  std_logic;
137
   PLB_RNW                 : in  std_logic;
138
   PLB_BE                  : in  std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
139
   PLB_MSize               : in  std_logic_vector(0 to 1);
140
   PLB_size                : in  std_logic_vector(0 to 3);
141
   PLB_type                : in  std_logic_vector(0 to 2);
142
   PLB_lockErr             : in  std_logic;
143
   PLB_wrDBus              : in  std_logic_vector(0 to C_SPLB_DWIDTH-1);
144
   PLB_wrBurst             : in  std_logic;
145
   PLB_rdBurst             : in  std_logic;
146
   PLB_wrPendReq           : in  std_logic;
147
   PLB_rdPendReq           : in  std_logic;
148
   PLB_wrPendPri           : in  std_logic_vector(0 to 1);
149
   PLB_rdPendPri           : in  std_logic_vector(0 to 1);
150
   PLB_reqPri              : in  std_logic_vector(0 to 1);
151
   PLB_TAttribute          : in  std_logic_vector(0 to 15);
152
   Sl_addrAck              : out std_logic;
153
   Sl_SSize                : out std_logic_vector(0 to 1);
154
   Sl_wait                 : out std_logic;
155
   Sl_rearbitrate          : out std_logic;
156
   Sl_wrDAck               : out std_logic;
157
   Sl_wrComp               : out std_logic;
158
   Sl_wrBTerm              : out std_logic;
159
   Sl_rdDBus               : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
160
   Sl_rdWdAddr             : out std_logic_vector(0 to 3);
161
   Sl_rdDAck               : out std_logic;
162
   Sl_rdComp               : out std_logic;
163
   Sl_rdBTerm              : out std_logic;
164
   Sl_MBusy                : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
165
   Sl_MWrErr               : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
166
   Sl_MRdErr               : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
167
   Sl_MIRQ                 : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1)
168
   );
169
end entity;
170
 
171
architecture arch_npi_vga OF npi_vga IS
172
 
173
constant c_vcnt_range      : natural := C_VD_V_BP + C_VD_V_FP + C_VD_HEIGHT + C_VD_V_SYNC_W;
174
constant C_VCNT_SIZE       : natural := log2(c_vcnt_range);
175
constant c_hcnt_range      : natural := C_VD_H_BP + C_VD_H_FP + C_VD_WIDTH + C_VD_H_SYNC_W;
176
constant C_HCNT_SIZE       : natural := log2(c_hcnt_range);
177
 
178
component plbbr is
179
generic (
180
   C_SPLB_AWIDTH           : integer;
181
   C_SPLB_DWIDTH           : integer;
182
   C_SPLB_NUM_MASTERS      : integer;
183
   C_SPLB_MID_WIDTH        : integer;
184
   C_SPLB_NATIVE_DWIDTH    : integer;
185
   C_SPLB_P2P              : integer;
186
   C_SPLB_SUPPORT_BURSTS   : integer;
187
   C_SPLB_SMALLEST_MASTER  : integer;
188
   C_SPLB_CLK_PERIOD_PS    : integer;
189
   C_FAMILY                : string;
190
   C_MEM0_BASEADDR         : std_logic_vector;
191
   C_MEM0_HIGHADDR         : std_logic_vector;
192
   C_MEM1_BASEADDR         : std_logic_vector;
193
   C_MEM1_HIGHADDR         : std_logic_vector);
194
port (
195
   GR_DATA_O               : out    std_logic_vector(31 downto 0);
196
   GR_DATA_I0              : in     std_logic_vector(31 downto 0);
197
   GR_DATA_I1              : in     std_logic_vector(31 downto 0);
198
   GR_ADDR                 : out    std_logic_vector(15 downto 2);
199
   GR_RNW                  : out    std_logic;
200
   GR_CS                   : out    std_logic_vector(1 downto 0);
201
 
202
   SPLB_Clk                : in  std_logic;
203
   SPLB_Rst                : in  std_logic;
204
   PLB_ABus                : in  std_logic_vector(0 to 31);
205
   PLB_UABus               : in  std_logic_vector(0 to 31);
206
   PLB_PAValid             : in  std_logic;
207
   PLB_SAValid             : in  std_logic;
208
   PLB_rdPrim              : in  std_logic;
209
   PLB_wrPrim              : in  std_logic;
210
   PLB_masterID            : in  std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
211
   PLB_abort               : in  std_logic;
212
   PLB_busLock             : in  std_logic;
213
   PLB_RNW                 : in  std_logic;
214
   PLB_BE                  : in  std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
215
   PLB_MSize               : in  std_logic_vector(0 to 1);
216
   PLB_size                : in  std_logic_vector(0 to 3);
217
   PLB_type                : in  std_logic_vector(0 to 2);
218
   PLB_lockErr             : in  std_logic;
219
   PLB_wrDBus              : in  std_logic_vector(0 to C_SPLB_DWIDTH-1);
220
   PLB_wrBurst             : in  std_logic;
221
   PLB_rdBurst             : in  std_logic;
222
   PLB_wrPendReq           : in  std_logic;
223
   PLB_rdPendReq           : in  std_logic;
224
   PLB_wrPendPri           : in  std_logic_vector(0 to 1);
225
   PLB_rdPendPri           : in  std_logic_vector(0 to 1);
226
   PLB_reqPri              : in  std_logic_vector(0 to 1);
227
   PLB_TAttribute          : in  std_logic_vector(0 to 15);
228
   Sl_addrAck              : out std_logic;
229
   Sl_SSize                : out std_logic_vector(0 to 1);
230
   Sl_wait                 : out std_logic;
231
   Sl_rearbitrate          : out std_logic;
232
   Sl_wrDAck               : out std_logic;
233
   Sl_wrComp               : out std_logic;
234
   Sl_wrBTerm              : out std_logic;
235
   Sl_rdDBus               : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
236
   Sl_rdWdAddr             : out std_logic_vector(0 to 3);
237
   Sl_rdDAck               : out std_logic;
238
   Sl_rdComp               : out std_logic;
239
   Sl_rdBTerm              : out std_logic;
240
   Sl_MBusy                : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
241
   Sl_MWrErr               : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
242
   Sl_MRdErr               : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
243
   Sl_MIRQ                 : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1));
244
end component;
245
 
246
constant BYTES_PER_PIXEL   : natural := (C_VD_PIXEL_D / 8);
247
constant VD_STRIDE         : natural := C_VD_STRIDE * BYTES_PER_PIXEL;
248
constant BURST_LENGHT      : natural := (C_VD_WIDTH * BYTES_PER_PIXEL) / C_NPI_BURST_SIZE;
249
 
250
component graphic is
251
Generic(
252
   C_FAMILY                : string;
253
   C_VD_DATA_WIDTH         : integer;
254
   PIXEL_DEPTH             : integer;
255
   PIXEL_WIDTH             : natural;
256
 
257
   C_VD_V_POL              : std_logic;
258
   C_VCNT_SIZE             : integer;
259
   C_VBACK_PORCH           : natural;
260
   C_VFRONT_PORCH          : natural;
261
   C_VVIDEO_ACTIVE         : natural;
262
   C_VSYNC_PULSE           : natural;
263
 
264
   C_VD_H_POL              : std_logic;
265
   C_HCNT_SIZE             : natural;
266
   C_HBACK_PORCH           : natural;
267
   C_HFRONT_PORCH          : natural;
268
   C_HVIDEO_ACTIVE         : natural;
269
   C_HSYNC_PULSE           : natural);
270
port (
271
   -- System interface      
272
   Sys_Clk                 : in     std_logic;                    -- Base system clock
273
   NPI_CLK                 : in     std_logic;
274
 
275
   Sys_Rst                 : in     std_logic;                    -- System reset
276
 
277
   VIDEO_CLK               : in     std_logic;                    -- LCD Clock signal
278
 
279
   VIDEO_VSYNC             : out    std_logic;
280
   VIDEO_HSYNC             : out    std_logic;
281
   VIDEO_DE                : out    std_logic;
282
   VIDEO_CLK_OUT           : out    std_logic;
283
 
284
   VIDEO_R                 : out    std_logic_vector(0 to PIXEL_DEPTH - 1);
285
   VIDEO_G                 : out    std_logic_vector(0 to PIXEL_DEPTH - 1);
286
   VIDEO_B                 : out    std_logic_vector(0 to PIXEL_DEPTH - 1);
287
 
288
   INTR                    : out    std_logic;
289
 
290
   DMA_INIT                : in     std_logic;
291
   DMA_DACK                : in     std_logic;
292
   DMA_DATA                : in     std_logic_vector(0 to C_VD_DATA_WIDTH - 1);
293
   DMA_DREQ                : out    std_logic;
294
   DMA_RSYNC               : out    std_logic;
295
   DMA_TC                  : in     std_logic;
296
 
297
   GR_DATA_I               : in     std_logic_vector(31 downto 0);
298
   GR_DATA_O               : out    std_logic_vector(31 downto 0);
299
   GR_ADDR                 : in     std_logic_vector(15 downto 0);
300
   GR_RNW                  : in     std_logic;
301
   GR_CS                   : in     std_logic;
302
 
303
   X                       : out    std_logic_vector(7 downto 0));
304
end component;
305
 
306
component npi_eng is
307
generic (
308
   C_FAMILY                : string;
309
   C_VD_ADDR               : std_logic_vector;
310
   C_VD_PIXEL_D            : natural;
311
   C_VD_STRIDE             : integer;
312
   C_VD_WIDTH              : integer;
313
   C_VD_HEIGHT             : integer;
314
   C_NPI_BURST_SIZE        : integer;
315
   C_NPI_ADDR_WIDTH        : integer;
316
   C_NPI_DATA_WIDTH        : integer;
317
   C_NPI_BE_WIDTH          : integer;
318
   C_NPI_RDWDADDR_WIDTH    : integer);
319
port(
320
 
321
   NPI_Clk                 : in     std_logic;
322
   Sys_Clk                 : in     std_logic;
323
   NPI_RST                 : in     std_logic;
324
 
325
   NPI_Addr                : out    std_logic_vector(C_NPI_ADDR_WIDTH-1 downto 0);
326
   NPI_AddrReq             : out    std_logic;
327
   NPI_AddrAck             : in     std_logic;
328
   NPI_RNW                 : out    std_logic;
329
   NPI_Size                : out    std_logic_vector(3 downto 0);
330
   NPI_WrFIFO_Data         : out    std_logic_vector(C_NPI_DATA_WIDTH-1 downto 0);
331
   NPI_WrFIFO_BE           : out    std_logic_vector(C_NPI_BE_WIDTH-1 downto 0);
332
   NPI_WrFIFO_Push         : out    std_logic;
333
   NPI_RdFIFO_Data         : in     std_logic_vector(C_NPI_DATA_WIDTH-1 downto 0);
334
   NPI_RdFIFO_Pop          : out    std_logic;
335
   NPI_RdFIFO_RdWdAddr     : in     std_logic_vector(C_NPI_RDWDADDR_WIDTH-1 downto 0);
336
   NPI_WrFIFO_Empty        : in     std_logic;
337
   NPI_WrFIFO_AlmostFull   : in     std_logic;
338
   NPI_WrFIFO_Flush        : out    std_logic;
339
   NPI_RdFIFO_Empty        : in     std_logic;
340
   NPI_RdFIFO_Flush        : out    std_logic;
341
   NPI_RdFIFO_Latency      : in     std_logic_vector(1 downto 0);
342
   NPI_RdModWr             : out    std_logic;
343
   NPI_InitDone            : in     std_logic;
344
 
345
   GR_DATA_I               : in     std_logic_vector(31 downto 0);
346
   GR_DATA_O               : out    std_logic_vector(31 downto 0);
347
   GR_ADDR                 : in     std_logic_vector(15 downto 0);
348
   GR_RNW                  : in     std_logic;
349
   GR_CS                   : in     std_logic;
350
 
351
   DMA_INIT                : out    std_logic;
352
   DMA_DREQ                : in     std_logic;     -- Data request
353
   DMA_DACK                : out    std_logic;     -- Data ack
354
   DMA_RSYNC               : in     std_logic;     -- Synchronization reset (restarts the channel)
355
   DMA_TC                  : out    std_logic;     -- Terminal count (the signal is generated at the end of the transfer)
356
   DMA_DATA                : out    std_logic_vector(C_NPI_DATA_WIDTH - 1 downto 0);
357
 
358
   X                       : out    std_logic_vector(7 downto 0));
359
end component;
360
 
361
signal burst_cnt              : integer range 0 to C_VD_WIDTH / C_NPI_BURST_SIZE;
362
signal burst_cnt_one          : std_logic;
363
 
364
signal line_cnt               : integer range 0 to C_VD_HEIGHT;
365
signal line_cnt_one           : std_logic;
366
 
367
signal addr_cnt_i             : std_logic_vector(C_NPI_ADDR_WIDTH - 1 downto 0);
368
signal line_addr              : std_logic_vector(C_NPI_ADDR_WIDTH - 1 downto 0);
369
 
370
signal NPI_AddrReq_i          : std_logic;
371
signal NPI_RNW_i              : std_logic;
372
signal NPI_RdFIFO_Pop_i       : std_logic;
373
 
374
signal NPI_RST_i              : std_logic;
375
signal RD_Req                 : std_logic;
376
 
377
signal DMA_DataReq            : std_logic;
378
 
379
signal dma_dack_d0            : std_logic;
380
signal dma_dack_d1            : std_logic;
381
 
382
signal dma_dreq               : std_logic;
383
signal dma_dack               : std_logic;
384
signal dma_rsync              : std_logic;
385
signal dma_tc                 : std_logic;
386
signal dma_data               : std_logic_vector(C_NPI_DATA_WIDTH - 1 downto 0);
387
signal dma_init               : std_logic;
388
 
389
signal gr_data_i              : std_logic_vector(31 downto 0);
390
signal gr_data_o0             : std_logic_vector(31 downto 0);
391
signal gr_data_o1             : std_logic_vector(31 downto 0);
392
signal gr_addr                : std_logic_vector(15 downto 0);
393
signal gr_rnw                 : std_logic;
394
signal gr_cs                  : std_logic_vector(0 to 1);
395
 
396
BEGIN
397
 
398
npi_eng_inst : npi_eng
399
generic map (
400
   C_FAMILY                => C_FAMILY,
401
   C_VD_ADDR               => C_VD_ADDR,
402
   C_VD_PIXEL_D            => C_VD_PIXEL_D,
403
   C_VD_STRIDE             => C_VD_STRIDE,
404
   C_VD_WIDTH              => C_VD_WIDTH,
405
   C_VD_HEIGHT             => C_VD_HEIGHT,
406
   C_NPI_BURST_SIZE        => C_NPI_BURST_SIZE,
407
   C_NPI_ADDR_WIDTH        => C_NPI_ADDR_WIDTH,
408
   C_NPI_DATA_WIDTH        => C_NPI_DATA_WIDTH,
409
   C_NPI_BE_WIDTH          => C_NPI_BE_WIDTH,
410
   C_NPI_RDWDADDR_WIDTH    => C_NPI_RDWDADDR_WIDTH)
411
port map (
412
   NPI_Clk                 => NPI_Clk,
413
   Sys_Clk                 => SPLB_Clk,
414
   NPI_RST                 => NPI_Rst,
415
 
416
   NPI_Addr                => NPI_Addr,
417
   NPI_AddrReq             => NPI_AddrReq,
418
   NPI_AddrAck             => NPI_AddrAck,
419
   NPI_RNW                 => NPI_RNW,
420
   NPI_Size                => NPI_Size,
421
   NPI_WrFIFO_Data         => NPI_WrFIFO_Data,
422
   NPI_WrFIFO_BE           => NPI_WrFIFO_BE,
423
   NPI_WrFIFO_Push         => NPI_WrFIFO_Push,
424
   NPI_RdFIFO_Data         => NPI_RdFIFO_Data,
425
   NPI_RdFIFO_Pop          => NPI_RdFIFO_Pop,
426
   NPI_RdFIFO_RdWdAddr     => NPI_RdFIFO_RdWdAddr,
427
   NPI_WrFIFO_Empty        => NPI_WrFIFO_Empty,
428
   NPI_WrFIFO_AlmostFull   => NPI_WrFIFO_AlmostFull,
429
   NPI_WrFIFO_Flush        => NPI_WrFIFO_Flush,
430
   NPI_RdFIFO_Empty        => NPI_RdFIFO_Empty,
431
   NPI_RdFIFO_Flush        => NPI_RdFIFO_Flush,
432
   NPI_RdFIFO_Latency      => NPI_RdFIFO_Latency,
433
   NPI_RdModWr             => NPI_RdModWr,
434
   NPI_InitDone            => NPI_InitDone,
435
 
436
   GR_DATA_I               => gr_data_i,
437
   GR_DATA_O               => gr_data_o1,
438
   GR_ADDR                 => gr_addr,
439
   GR_RNW                  => gr_rnw,
440
   GR_CS                   => gr_cs(1),
441
 
442
   DMA_INIT                => dma_init,
443
   DMA_DREQ                => dma_dreq,
444
   DMA_DACK                => dma_dack,
445
   DMA_RSYNC               => dma_rsync,
446
   DMA_TC                  => dma_tc,
447
   DMA_DATA                => dma_data,
448
 
449
   X                       => X);
450
 
451
graphic_ctrl_inst : graphic
452
Generic map (
453
 
454
   C_FAMILY                => C_FAMILY,
455
   C_VD_DATA_WIDTH         => C_NPI_DATA_WIDTH,
456
   PIXEL_DEPTH             => C_VD_PIXEL_DEPTH,
457
   PIXEL_WIDTH             => C_VD_PIXEL_D,
458
 
459
   C_VCNT_SIZE             => C_VCNT_SIZE,
460
   C_VD_V_POL              => C_VD_V_POL,
461
   C_VBACK_PORCH           => C_VD_V_BP,
462
   C_VFRONT_PORCH          => C_VD_V_FP,
463
   C_VVIDEO_ACTIVE         => C_VD_HEIGHT,
464
   C_VSYNC_PULSE           => C_VD_V_SYNC_W,
465
 
466
   C_HCNT_SIZE             => C_HCNT_SIZE,
467
   C_VD_H_POL              => C_VD_H_POL,
468
   C_HBACK_PORCH           => C_VD_H_BP,
469
   C_HFRONT_PORCH          => C_VD_H_FP,
470
   C_HVIDEO_ACTIVE         => C_VD_WIDTH,
471
   C_HSYNC_PULSE           => C_VD_H_SYNC_W)
472
 
473
port map (
474
   -- System interface      
475
   Sys_Clk                 => SPLB_Clk,
476
   NPI_CLK                 => NPI_CLK,
477
   Sys_Rst                 => NPI_Rst,
478
 
479
   VIDEO_CLK               => VIDEO_CLK,
480
 
481
   VIDEO_VSYNC             => VIDEO_VSYNC,
482
   VIDEO_HSYNC             => VIDEO_HSYNC,
483
   VIDEO_DE                => VIDEO_DE,
484
   VIDEO_CLK_OUT           => VIDEO_CLK_OUT,
485
 
486
   VIDEO_R                 => VIDEO_R,
487
   VIDEO_G                 => VIDEO_G,
488
   VIDEO_B                 => VIDEO_B,
489
 
490
   INTR                    => INTR,
491
 
492
   DMA_INIT                => dma_init,
493
   DMA_DACK                => dma_dack,
494
   DMA_DATA                => dma_data,
495
   DMA_DREQ                => dma_dreq,
496
   DMA_RSYNC               => dma_rsync,
497
   DMA_TC                  => dma_tc,
498
 
499
   GR_DATA_I               => gr_data_i,
500
   GR_DATA_O               => gr_data_o0,
501
   GR_ADDR                 => gr_addr,
502
   GR_RNW                  => gr_rnw,
503
   GR_CS                   => gr_cs(0),
504
 
505
   X                       => open);
506
 
507
plbbr_inst : plbbr
508
generic map (
509
   C_SPLB_AWIDTH           => C_SPLB_AWIDTH,
510
   C_SPLB_DWIDTH           => C_SPLB_DWIDTH,
511
   C_SPLB_NUM_MASTERS      => C_SPLB_NUM_MASTERS,
512
   C_SPLB_MID_WIDTH        => C_SPLB_MID_WIDTH,
513
   C_SPLB_NATIVE_DWIDTH    => C_SPLB_NATIVE_DWIDTH,
514
   C_SPLB_P2P              => C_SPLB_P2P,
515
   C_SPLB_SUPPORT_BURSTS   => C_SPLB_SUPPORT_BURSTS,
516
   C_SPLB_SMALLEST_MASTER  => C_SPLB_SMALLEST_MASTER,
517
   C_SPLB_CLK_PERIOD_PS    => C_SPLB_CLK_PERIOD_PS,
518
   C_FAMILY                => C_FAMILY,
519
   C_MEM0_BASEADDR         => C_MEM0_BASEADDR,
520
   C_MEM0_HIGHADDR         => C_MEM0_HIGHADDR,
521
   C_MEM1_BASEADDR         => C_MEM1_BASEADDR,
522
   C_MEM1_HIGHADDR         => C_MEM1_HIGHADDR)
523
 
524
port map (
525
   GR_DATA_O               => gr_data_i,
526
   GR_DATA_I0              => gr_data_o0,
527
   GR_DATA_I1              => gr_data_o1,
528
   GR_ADDR                 => gr_addr(15 downto 2),
529
   GR_RNW                  => gr_rnw,
530
   GR_CS                   => gr_cs,
531
 
532
   SPLB_Clk                => SPLB_Clk,
533
   SPLB_Rst                => SPLB_Rst,
534
   PLB_ABus                => PLB_ABus,
535
   PLB_UABus               => PLB_UABus,
536
   PLB_PAValid             => PLB_PAValid,
537
   PLB_SAValid             => PLB_SAValid,
538
   PLB_rdPrim              => PLB_rdPrim,
539
   PLB_wrPrim              => PLB_wrPrim,
540
   PLB_masterID            => PLB_masterID,
541
   PLB_abort               => PLB_abort,
542
   PLB_busLock             => PLB_busLock,
543
   PLB_RNW                 => PLB_RNW,
544
   PLB_BE                  => PLB_BE,
545
   PLB_MSize               => PLB_MSize,
546
   PLB_size                => PLB_size,
547
   PLB_type                => PLB_type,
548
   PLB_lockErr             => PLB_lockErr,
549
   PLB_wrDBus              => PLB_wrDBus,
550
   PLB_wrBurst             => PLB_wrBurst,
551
   PLB_rdBurst             => PLB_rdBurst,
552
   PLB_wrPendReq           => PLB_wrPendReq,
553
   PLB_rdPendReq           => PLB_rdPendReq,
554
   PLB_wrPendPri           => PLB_wrPendPri,
555
   PLB_rdPendPri           => PLB_rdPendPri,
556
   PLB_reqPri              => PLB_reqPri,
557
   PLB_TAttribute          => PLB_TAttribute,
558
   Sl_addrAck              => Sl_addrAck,
559
   Sl_SSize                => Sl_SSize,
560
   Sl_wait                 => Sl_wait,
561
   Sl_rearbitrate          => Sl_rearbitrate,
562
   Sl_wrDAck               => Sl_wrDAck,
563
   Sl_wrComp               => Sl_wrComp,
564
   Sl_wrBTerm              => Sl_wrBTerm,
565
   Sl_rdDBus               => Sl_rdDBus,
566
   Sl_rdWdAddr             => Sl_rdWdAddr,
567
   Sl_rdDAck               => Sl_rdDAck,
568
   Sl_rdComp               => Sl_rdComp,
569
   Sl_rdBTerm              => Sl_rdBTerm,
570
   Sl_MBusy                => Sl_MBusy,
571
   Sl_MWrErr               => Sl_MWrErr,
572
   Sl_MRdErr               => Sl_MRdErr,
573
   Sl_MIRQ                 => Sl_MIRQ);
574
 
575
END arch_npi_vga;
576
 
577
 

powered by: WebSVN 2.1.0

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