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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [designs/] [leon3-wildcard-xcv300e/] [wildfpga.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
------------------------------------------------------------------------------
2
--  This file is a part of the GRLIB VHDL IP LIBRARY
3
--  Copyright (C) 2003, Gaisler Research
4
--
5
--  This program is free software; you can redistribute it and/or modify
6
--  it under the terms of the GNU General Public License as published by
7
--  the Free Software Foundation; either version 2 of the License, or
8
--  (at your option) any later version.
9
--
10
--  This program is distributed in the hope that it will be useful,
11
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
--  GNU General Public License for more details.
14
--
15
--  You should have received a copy of the GNU General Public License
16
--  along with this program; if not, write to the Free Software
17
--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
18
--============================================================================--
19
-- Design unit  : WildCard FPGA (entity and architecture declarations)
20
--
21
-- File name    : wildfpga.vhd
22
--
23
-- Purpose      : WildCard FPGA design
24
--
25
-- Library      : Work
26
--
27
-- Authors      : Mr Sandi Alexander Habinc
28
--                Gaisler Research
29
--
30
-- Contact      : mailto:support@gaisler.com
31
--                http://www.gaisler.com
32
--
33
-- Disclaimer   : All information is provided "as is", there is no warranty that
34
--                the information is correct or suitable for any purpose,
35
--                neither implicit nor explicit.
36
--============================================================================--
37
 
38
----------------------------------- Glossary -----------------------------------
39
--
40
--  Name Key:
41
--  =========
42
--  _AS       : Address Strobe
43
--  _CE       : Clock Enable
44
--  _CS       : Chip Select
45
--  _DS       : Data Strobe
46
--  _EN       : Enable
47
--  _OE       : Output Enable
48
--  _RD       : Read Select
49
--  _WE       : Write Enable
50
--  _WR       : Write Select
51
--  _d[d...]  : Delayed (registered) signal (each 'd' denotes one
52
--              level of delay)
53
--  _n        : Active low signals (must be last part of name)
54
--
55
--  Port Name                      Dir  Description
56
--  ============================   ===  ================================
57
--  Clocks_F_Clk                    I   Frequency synthesizer clock
58
--  Clocks_M_Clk                    I   Memory clock
59
--  Clocks_P_Clk                    I   Processor clock
60
--  Clocks_K_Clk                    I   LAD-bus clock
61
--  Clocks_IO_Clk                   I   External I/O connector clock
62
--  Clocks_M_Clk_Out_Pe             O   M_Clk to the PE
63
--  Clocks_M_Clk_Out_CB_Ctrl        O   M_Clk to the CardBus controller
64
--  Clocks_M_Clk_Out_Right_Mem      O   M_Clk to the right memory bank
65
--  Clocks_M_Clk_Out_Left_Mem       O   M_Clk to the left memory bank
66
--  Clocks_P_Clk_Out_Pe             O   P_Clk to the PE
67
--  Clocks_P_Clk_Out_CB_Ctrl        O   P_Clk to the CardBus controller
68
--  Reset_Reset                     I   Global PE reset
69
--  Audio_Audio                     O   Pulse-width modulated audio pad
70
--  LAD_Bus_Addr_Data               B   LAD-bus shared address/data bus
71
--  LAD_Bus_AS_n                    I   LAD-bus address strobe
72
--  LAD_Bus_DS_n                    I   LAD-bus data strobe
73
--  LAD_Bus_WR_n                    I   LAD-bus write select
74
--  LAD_Bus_CS_n                    I   LAD-bus chip select
75
--  LAD_Bus_Reg_n                   I   LAD-bus register select
76
--  LAD_Bus_Ack_n                   O   LAD-bus acknowledge strobe
77
--  LAD_Bus_Int_Req_n               O   LAD-bus interrupt request
78
--  LAD_Bus_DMA_0_Data_OK_n         O   LAD-bus DMA chan 0 data OK flag
79
--  LAD_Bus_DMA_0_Burst_OK_n        O   LAD-bus DMA chan 0 burst OK flag
80
--  LAD_Bus_DMA_1_Data_OK_n         O   LAD-bus DMA chan 1 data OK flag
81
--  LAD_Bus_DMA_1_Burst_OK_n        O   LAD-bus DMA chan 1 burst OK flag
82
--  LAD_Bus_Reg_Data_OK_n           O   LAD-bus reg space data OK flag
83
--  LAD_Bus_Reg_Burst_OK_n          O   LAD-bus reg space burst OK flag
84
--  LAD_Bus_Force_K_Clk_n           O   LAD-bus K_Clk forced-run select
85
--  LAD_Bus_Reserved                -   Reserved for future use
86
--  Left_Mem_Addr                   O   Left memory address bus
87
--  Left_Mem_Data                   B   Left memory data bus
88
--  Left_Mem_Byte_WR_n              O   Left memory byte write select
89
--  Left_Mem_CS_n                   O   Left memory chip select
90
--  Left_Mem_CE_n                   O   Left memory clock enable
91
--  Left_Mem_WE_n                   O   Left memory write enable
92
--  Left_Mem_OE_n                   O   Left memory output enable
93
--  Left_Mem_Sleep_EN               O   Left memory sleep enable
94
--  Left_Mem_Load_EN_n              O   Left memory load enable
95
--  Left_Mem_Burst_Mode             O   Left memory burst mode select
96
--  Right_Mem_Addr                  O   Right memory address bus
97
--  Right_Mem_Data                  B   Right memory data bus
98
--  Right_Mem_Byte_WR_n             O   Right memory byte write select
99
--  Right_Mem_CS_n                  O   Right memory chip select
100
--  Right_Mem_CE_n                  O   Right memory clock enable
101
--  Right_Mem_WE_n                  O   Right memory write enable
102
--  Right_Mem_OE_n                  O   Right memory output enable
103
--  Right_Mem_Sleep_EN              O   Right memory sleep enable
104
--  Right_Mem_Load_EN_n             O   Right memory load enable
105
--  Left_Mem_Burst_Mode             O   Right memory burst mode select
106
--  Left_IO                         B   Left external I/O connector
107
--  Right_IO                        B   Right external I/O connector
108
--============================================================================--
109
 
110
library  IEEE;
111
use      IEEE.Std_Logic_1164.all;
112
 
113
entity WildFpga is
114
   generic (
115
      fabtech:                            integer := 1;
116
      memtech:                            integer := 1;
117
      padtech:                            integer := 1;
118
      clktech:                            integer := 1;
119
      netlist:                            integer := 1);
120
   port (
121
      Clocks_F_Clk:                in     std_logic;
122
      Clocks_M_Clk:                in     std_logic;
123
      Clocks_P_Clk:                in     std_logic;
124
      Clocks_K_Clk:                in     std_logic;
125
      Clocks_IO_Clk:               in     std_logic;
126
 
127
      Clocks_M_Clk_Out_PE:         out    std_logic;
128
      Clocks_M_Clk_Out_CB_Ctrl:    out    std_logic;
129
      Clocks_M_Clk_Out_Right_Mem:  out    std_logic;
130
      Clocks_M_Clk_Out_Left_Mem:   out    std_logic;
131
      Clocks_P_Clk_Out_PE:         out    std_logic;
132
      Clocks_P_Clk_Out_CB_Ctrl:    out    std_logic;
133
 
134
      Reset_Reset:                 in     std_logic;
135
      Audio_Audio:                 out    std_logic;
136
 
137
      LAD_Bus_Addr_Data:           inout  std_logic_vector (31 downto 0);
138
      LAD_Bus_AS_n:                in     std_logic;
139
      LAD_Bus_DS_n:                in     std_logic;
140
      LAD_Bus_WR_n:                in     std_logic;
141
      LAD_Bus_CS_n:                in     std_logic;
142
      LAD_Bus_Reg_n:               in     std_logic;
143
      LAD_Bus_Ack_n:               out    std_logic;
144
      LAD_Bus_Int_Req_n:           out    std_logic;
145
      LAD_Bus_DMA_0_Data_OK_n:     out    std_logic;
146
      LAD_Bus_DMA_0_Burst_OK:      out    std_logic;
147
      LAD_Bus_DMA_1_Data_OK_n:     out    std_logic;
148
      LAD_Bus_DMA_1_Burst_OK:      out    std_logic;
149
      LAD_Bus_Reg_Data_OK_n:       out    std_logic;
150
      LAD_Bus_Reg_Burst_OK:        out    std_logic;
151
      LAD_Bus_Force_K_Clk_n:       out    std_logic;
152
      LAD_Bus_Reserved:            out    std_logic;
153
 
154
      Left_Mem_Addr:               out    std_logic_vector (18 downto 0);
155
      Left_Mem_Data:               inout  std_logic_vector (35 downto 0);
156
      Left_Mem_Byte_WR_n:          out    std_logic_vector (3 downto 0);
157
      Left_Mem_CS_n:               out    std_logic;
158
      Left_Mem_CE_n:               out    std_logic;
159
      Left_Mem_WE_n:               out    std_logic;
160
      Left_Mem_OE_n:               out    std_logic;
161
      Left_Mem_Sleep_EN:           out    std_logic;
162
      Left_Mem_Load_EN_n:          out    std_logic;
163
      Left_Mem_Burst_Mode:         out    std_logic;
164
 
165
      Right_Mem_Addr:              out    std_logic_vector (18 downto 0);
166
      Right_Mem_Data:              inout  std_logic_vector (35 downto 0);
167
      Right_Mem_Byte_WR_n:         out    std_logic_vector (3 downto 0);
168
      Right_Mem_CS_n:              out    std_logic;
169
      Right_Mem_CE_n:              out    std_logic;
170
      Right_Mem_WE_n:              out    std_logic;
171
      Right_Mem_OE_n:              out    std_logic;
172
      Right_Mem_Sleep_EN:          out    std_logic;
173
      Right_Mem_Load_EN_n:         out    std_logic;
174
      Right_Mem_Burst_Mode:        out    std_logic;
175
 
176
      Left_IO:                     inout  std_logic_vector (12 downto 0);
177
      Right_IO:                    inout  std_logic_vector (12 downto 0));
178
end entity WildFpga; --=======================================================--
179
 
180
library  IEEE;
181
use      IEEE.Std_Logic_1164.all;
182
 
183
library  Work;
184
use      Work.config.all;
185
 
186
library  grlib;
187
use      grlib.amba.all;
188
 
189
library  gaisler;
190
use      gaisler.memctrl.all;
191
use      gaisler.misc.all;
192
use      gaisler.uart.all;
193
use      gaisler.leon3.all;
194
use      gaisler.haps.all;
195
use      gaisler.wild.all;
196
 
197
library  techmap;
198
use      techmap.gencomp.all;
199
 
200
architecture RTL of WildFpga is
201
 
202
   -- clock generation
203
   signal   rst, rstn:       Std_ULogic;
204
 
205
   signal   kclk, clkk, clkkn,  rstkn, rstkraw: Std_ULogic;
206
   signal   cgik:             clkgen_in_type;
207
   signal   cgok:             clkgen_out_type;
208
 
209
   signal   fclk, clkf1, clkf, rstfn, rstfraw: Std_ULogic;
210
   signal   cgif:             clkgen_in_type;
211
   signal   cgof:             clkgen_out_type;
212
 
213
   signal   vcc, gnd:         Std_ULogic;
214
 
215
   -- gpio
216
   signal   gpioi:            gpio_in_type;
217
   signal   gpioo:            gpio_out_type;
218
 
219
   -- uarts
220
   signal   u1i, u2i:         uart_in_type;
221
   signal   u1o, u2o:         uart_out_type;
222
 
223
   -- timers
224
   signal   gpti:             gptimer_in_type;
225
 
226
   -- memory interface
227
   signal   memir, memil:     memory_in_type;
228
   signal   memor, memol:     memory_out_type;
229
 
230
   -- LEON3 debug interface
231
   signal   dbgi:             l3_debug_in_vector(0 to 0);
232
   signal   dbgo:             l3_debug_out_vector(0 to 0);
233
 
234
   signal   dsui:             dsu_in_type;
235
   signal   dsuo:             dsu_out_type;
236
 
237
   -- interrupt controller
238
   signal   irqi:             irq_in_vector(0 to 0);
239
   signal   irqo:             irq_out_vector(0 to 0);
240
 
241
   -- local address and data bus
242
   signal   ladi:             lad_in_type;
243
   signal   lado:             lad_out_type;
244
 
245
   -- amba apb interface
246
   signal   apbi:             APB_Slv_In_Type;
247
   signal   apbo:             APB_Slv_Out_Vector := (others => apb_none);
248
   signal   ahbsi:            AHB_Slv_In_Type;
249
   signal   ahbso:            AHB_Slv_Out_Vector := (others => ahbs_none);
250
   signal   ahbmi:            AHB_Mst_In_Type;
251
   signal   ahbmo:            AHB_Mst_Out_Vector := (others => ahbm_none);
252
 
253
begin
254
 
255
   -----------------------------------------------------------------------------
256
   -- Reset and Clock generation
257
   -----------------------------------------------------------------------------
258
   vcc <= '1';
259
   gnd <= '0';
260
 
261
   -- Reset input
262
   rst_pad : inpad
263
      port map(Reset_Reset, rst);
264
 
265
   rstn <= not rst;
266
 
267
 
268
   -- PCI clock domain, 33 MHz, Clk_K
269
   cgik.pllctrl <= "00";
270
   cgik.pllrst  <= rstkraw;
271
   cgik.pllref  <= '0';
272
 
273
   clkk_pad : clkpad
274
      generic map (tech => padtech)
275
      port map (Clocks_K_Clk, kclk);
276
 
277
   clkgenk : clkgen                                      -- clock generator
278
      generic map (0, 2, 2, 0, 0, 0, 0, 0)
279
      port map (kclk, kclk, clkk, clkkn, open, open, open, cgik, cgok);
280
 
281
   rstgenk : rstgen                                      -- reset generator
282
      port map (rstn, clkkn, cgok.clklock, rstkn, rstkraw);
283
 
284
   -- Main clock domain, X MHz, Clk_F
285
   cgif.pllctrl <= "00";
286
   cgif.pllrst  <= rstfraw;
287
 
288
   clkfk_pad : clkpad
289
      generic map (tech => padtech)
290
      port map (Clocks_F_Clk, fclk);
291
 
292
   pllref_pad : clkpad
293
      generic map (tech => padtech)
294
      port map (Clocks_M_Clk, cgif.pllref);
295
 
296
   clkgenf : clkgen                                      -- clock generator
297
      generic map (clktech, 2, 2, 1, 0, 0, 0, 0, 10000, 0)
298
      port map (fclk, gnd, clkf, open, open, clkf1, open, cgif, cgof);
299
 
300
   rstgenf : rstgen                                      -- reset generator
301
      port map (rstn, clkf, cgof.clklock, rstfn, rstfraw);
302
 
303
 
304
   Clocks_P_Clk_Out_PE_PAD: outpad
305
      generic map (tech => padtech, slew => 1, strength => 24)
306
      port map(Clocks_P_Clk_Out_PE, clkf1);
307
 
308
   Clocks_P_Clk_Out_CB_Ctrl_PAD: outpad
309
      generic map (tech => padtech, slew => 1, strength => 24)
310
      port map(Clocks_P_Clk_Out_CB_Ctrl, clkf1);
311
 
312
   Clocks_M_Clk_Out_PE_PAD: outpad
313
      generic map (tech => padtech, slew => 1, strength => 24)
314
      port map(Clocks_M_Clk_Out_PE, clkf1);
315
 
316
   Clocks_M_Clk_Out_CB_Ctrl_PAD: outpad
317
      generic map (tech => padtech, slew => 1, strength => 24)
318
      port map(Clocks_M_Clk_Out_CB_Ctrl, clkf1);
319
 
320
   Clocks_M_Clk_Out_Right_Mem_PAD: outpad
321
      generic map (tech => padtech, slew => 1, strength => 24)
322
      port map(Clocks_M_Clk_Out_Right_Mem, clkf1);
323
 
324
   Clocks_M_Clk_Out_Left_Mem_PAD: outpad
325
      generic map (tech => padtech, slew => 1, strength => 24)
326
      port map(Clocks_M_Clk_Out_Left_Mem, clkf1);
327
 
328
   -----------------------------------------------------------------------------
329
   -- AMBA AHB Controller
330
   -----------------------------------------------------------------------------
331
   ahb0 : ahbctrl       -- AHB arbiter/multiplexer
332
      generic map (
333
         nahbm          => 1+CFG_LEON3,
334
         nahbs          => 3+CFG_DSU+CFG_AHBRAMEN,
335
         fpnpen         => 1)
336
      port map (rstfn, clkf, ahbmi, ahbmo, ahbsi, ahbso);
337
 
338
   -----------------------------------------------------------------------------
339
   -- LEON3 processor with Debug Support Unit
340
   -----------------------------------------------------------------------------
341
   leongen : if CFG_LEON3=1 and CFG_NCPU=1 generate
342
      u0 : leon3s
343
         generic map (0, fabtech, memtech,
344
             CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, 0, CFG_MAC, CFG_PCLOW, 0, CFG_NWP,
345
             CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, CFG_ISETSZ, CFG_ILOCK,
346
             CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, CFG_DLOCK, CFG_DSNOOP,
347
             CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR,
348
             CFG_DLRAMEN, CFG_DLRAMSZ, CFG_DLRAMADDR,
349
             CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP,
350
             CFG_LDDEL, CFG_DISAS, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, 0, CFG_DFIXED)
351
         port map (clkf, rstfn, ahbmi, ahbmo(0), ahbsi, ahbso,
352
             irqi(0), irqo(0), dbgi(0), dbgo(0));
353
   end generate;
354
 
355
   dsugen : if CFG_DSU=1 generate
356
      dsu0 : dsu3
357
         generic map (hindex => 1, haddr => 16#900#, hmask => 16#F00#,
358
            ncpu => 1, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ)
359
         port map (rstfn, clkf, ahbmi, ahbsi, ahbso(1), dbgo, dbgi, dsui, dsuo);
360
 
361
      dsui.enable <= '1'; dsui.break <= '0';
362
   end generate;
363
 
364
   -----------------------------------------------------------------------------
365
   -- Local Address and Data Bus to AMBA AHB bus DMA interface
366
   -----------------------------------------------------------------------------
367
   wild2ahb0: wild2ahb
368
      generic map (
369
         hindex   => CFG_LEON3,
370
         burst    => 5,
371
         syncrst  => 1)
372
      port map(rstkn, clkk, rstfn, clkf, ahbmi, ahbmo(CFG_LEON3), ladi, lado);
373
 
374
   -----------------------------------------------------------------------------
375
   -- AHB/APB Bridge
376
   -----------------------------------------------------------------------------
377
   apb0 : apbctrl       -- AHB/APB bridge
378
      generic map (
379
         hindex         => 0,
380
         haddr          => 16#800#,
381
         hmask          => 16#FFF#,
382
         nslaves        => 16)
383
      port map (rstfn, clkf, ahbsi, ahbso(0), apbi, apbo);
384
 
385
--   apbo(0)  <= apb_none;
386
--   apbo(1)  <= apb_none;
387
--   apbo(2)  <= apb_none;
388
--   apbo(3)  <= apb_none;
389
--   apbo(4)  <= apb_none;
390
--   apbo(5)  <= apb_none;
391
   apbo(6)  <= apb_none;
392
   apbo(7)  <= apb_none;
393
   apbo(8)  <= apb_none;
394
   apbo(9)  <= apb_none;
395
   apbo(10) <= apb_none;
396
   apbo(11) <= apb_none;
397
   apbo(12) <= apb_none;
398
   apbo(13) <= apb_none;
399
   apbo(14) <= apb_none;
400
   apbo(15) <= apb_none;
401
 
402
   -----------------------------------------------------------------------------
403
   -- Interrupt controller, timer and uart
404
   -----------------------------------------------------------------------------
405
   irqctrl0 : irqmp           -- interrupt controller
406
      generic map (pindex => 0, paddr => 2, ncpu => 1)
407
      port map (rstfn, clkf, apbi, apbo(0), irqo, irqi);
408
 
409
   timer0: gptimer            -- timers
410
      generic map (pindex => 1, paddr => 3, pirq => 8, sepirq => 1,
411
         sbits => 8, ntimers => 2, nbits => 32, wdog => 0)
412
      port map (rstfn, clkf, apbi, apbo(1), gpti, open);
413
   gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0';
414
 
415
   uart1: apbuart             -- uart
416
      generic map (pindex => 2, paddr => 1,  pirq => 2, console => 0, fifosize => 2)
417
      port map (rstfn, clkf, apbi, apbo(2), u1i, u1o);
418
      u1i.extclk <= '0'; u1i.ctsn <= '0'; u1i.rxd <= u1o.txd;
419
 
420
   -----------------------------------------------------------------------------
421
   -- General Purpose Input Output with pads
422
   -----------------------------------------------------------------------------
423
   grgpio0: grgpio
424
      generic map(pindex => 3, paddr => 11, imask => 0, nbits => 27, oepol => 0, syncrst =>0)
425
      port map(rstfn, clkf, apbi, apbo(3), gpioi, gpioo);
426
 
427
   left_io_pads : for i in 12 downto 0 generate
428
      left_io_pad : iopad
429
         generic map (tech => padtech)
430
         port map (Left_IO(i), gpioo.dout(i+13), gpioo.oen(i+13), gpioi.din(i+13));
431
   end generate;
432
 
433
   right_io_pads : for i in 12 downto 0 generate
434
      right_io_pad : iopad
435
         generic map (tech => padtech)
436
         port map (Right_IO(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));
437
   end generate;
438
 
439
   -----------------------------------------------------------------------------
440
   -- Audio pad
441
   -----------------------------------------------------------------------------
442
   audio_io_pad : toutpad
443
      generic map (tech => padtech)
444
      port map (Audio_Audio, gpioo.dout(26), gpioo.oen(26));
445
 
446
   -----------------------------------------------------------------------------
447
   -- SSRAM controller - left
448
   -----------------------------------------------------------------------------
449
   ssraml : sram_1x1
450
      generic map (hindex => 1+CFG_DSU, pindex => 4, paddr => 4,
451
                   romaddr => 16#100#, rommask => 0,
452
                   ioaddr => 16#200#, iomask => 0,
453
                   ramaddr => 16#400#, rammask => 16#FFF#,
454
                   bus16 => netlist, netlist => netlist, tech => 2)
455
      port map (rstfn, clkf, ahbsi, ahbso(1+CFG_DSU), apbi, apbo(4), memil, memol);
456
 
457
   memil.writen <= '1'; memil.wrn <= "1111"; memil.bwidth <= "10";
458
   memil.brdyn <= '1'; memil.bexcn <= '1';
459
 
460
   -- ssram pads
461
   addr_l_pad : outpadv
462
      generic map (width => 19, tech => padtech, slew => 1)
463
      port map (Left_Mem_Addr, memol.address(20 downto 2));
464
   rams_l_pad : outpad
465
      generic map (tech => padtech, slew => 1)
466
      port map (Left_Mem_CS_n, memol.ramsn(0));
467
   oen_l_pad  : outpad
468
      generic map (tech => padtech, slew => 1)
469
      port map (Left_Mem_OE_n, memol.oen);
470
   write_l_pad  : outpad
471
      generic map (tech => padtech, slew => 1)
472
      port map (Left_Mem_WE_n, memol.writen);
473
   rwen_l_pad0 : outpad
474
      generic map (tech => padtech, slew => 1)
475
      port map (Left_Mem_Byte_WR_n(0), memol.wrn(3));
476
   rwen_l_pad1 : outpad
477
      generic map (tech => padtech, slew => 1)
478
      port map (Left_Mem_Byte_WR_n(1), memol.wrn(2));
479
   rwen_l_pad2 : outpad
480
      generic map (tech => padtech, slew => 1)
481
      port map (Left_Mem_Byte_WR_n(2), memol.wrn(1));
482
   rwen_l_pad3 : outpad
483
      generic map (tech => padtech, slew => 1)
484
      port map (Left_Mem_Byte_WR_n(3), memol.wrn(0));
485
   data_l_pads : iopadvv
486
      generic map (tech => padtech, width => 32, slew => 1)
487
      port map (Left_Mem_Data(31 downto 0), memol.data(31 downto 0),
488
                memol.vbdrive(31 downto 0), memil.data(31 downto 0));
489
 
490
   Left_Mem_Sleep_EN             <= '0';
491
   Left_Mem_Burst_Mode           <= '0';
492
   Left_Mem_Load_EN_n            <= '0';
493
   Left_Mem_CE_n                 <= '0';
494
   Left_Mem_Data(35 downto 32)   <= (others => 'Z');
495
 
496
   -----------------------------------------------------------------------------
497
   -- SSRAM controller - right
498
   -----------------------------------------------------------------------------
499
   ssramr : sram_1x1
500
      generic map (hindex => 2+CFG_DSU, pindex => 5, paddr => 5,
501
                   romaddr => 16#300#, rommask => 0,
502
                   ioaddr => 16#500#, iomask => 0,
503
                   ramaddr => 16#600#, rammask => 16#FFF#,
504
                   bus16 => netlist, netlist => netlist, tech => 2)
505
      port map (rstfn, clkf, ahbsi, ahbso(2+CFG_DSU), apbi, apbo(5), memir, memor);
506
 
507
   memir.writen <= '1'; memir.wrn <= "1111"; memir.bwidth <= "10";
508
   memir.brdyn <= '1'; memir.bexcn <= '1';
509
 
510
   -- ssram pads
511
   addr_r_pad : outpadv
512
      generic map (width => 19, tech => padtech, slew => 1)
513
      port map (Right_Mem_Addr, memor.address(20 downto 2));
514
   rams_r_pad : outpad
515
      generic map (tech => padtech, slew => 1)
516
      port map (Right_Mem_CS_n, memor.ramsn(0));
517
   oen_r_pad  : outpad
518
      generic map (tech => padtech, slew => 1)
519
      port map (Right_Mem_OE_n, memor.oen);
520
   write_r_pad  : outpad
521
      generic map (tech => padtech, slew => 1)
522
      port map (Right_Mem_WE_n, memor.writen);
523
   rwen_r_pad0 : outpad
524
      generic map (tech => padtech, slew => 1)
525
      port map (Right_Mem_Byte_WR_n(0), memor.wrn(3));
526
   rwen_r_pad1 : outpad
527
      generic map (tech => padtech, slew => 1)
528
      port map (Right_Mem_Byte_WR_n(1), memor.wrn(2));
529
   rwen_r_pad2 : outpad
530
      generic map (tech => padtech, slew => 1)
531
      port map (Right_Mem_Byte_WR_n(2), memor.wrn(1));
532
   rwen_r_pad3 : outpad
533
      generic map (tech => padtech, slew => 1)
534
      port map (Right_Mem_Byte_WR_n(3), memor.wrn(0));
535
   data_r_pads : iopadvv
536
      generic map (tech => padtech, width => 32, slew => 1)
537
      port map (Right_Mem_Data(31 downto 0), memor.data(31 downto 0),
538
                memor.vbdrive(31 downto 0), memir.data(31 downto 0));
539
 
540
   Right_Mem_Sleep_EN             <= '0';
541
   Right_Mem_Burst_Mode           <= '0';
542
   Right_Mem_Load_EN_n            <= '0';
543
   Right_Mem_CE_n                 <= '0';
544
   Right_Mem_Data(35 downto 32)   <= (others => 'Z');
545
 
546
   -----------------------------------------------------------------------------
547
   -- On-chip memory
548
   -----------------------------------------------------------------------------
549
   memgen : if CFG_AHBRAMEN=1 generate
550
      mem0: ahbram
551
         generic map (hindex => 3+CFG_DSU, haddr => CFG_AHBRADDR, hmask => 16#FFF#,
552
                      tech => memtech, kbytes => CFG_AHBRSZ)
553
         port map (rstfn, clkf, ahbsi, ahbso(3+CFG_DSU));
554
   end generate;
555
 
556
   -----------------------------------------------------------------------------
557
   -- Local Address and Data Bus pads
558
   -----------------------------------------------------------------------------
559
   addr_data_pad : for i in LAD_Bus_Addr_Data'range generate
560
    ad_pad : iopad
561
      generic map(
562
         slew     => 1,
563
         strength => 24)
564
      port map(
565
         pad      => LAD_Bus_Addr_Data(i),
566
         i        => lado.Addr_Data(i),
567
         en       => lado.Addr_Data_OE_n(i),
568
         o        => ladi.Addr_Data(i));
569
   end generate;
570
 
571
   ladi.AS_n                  <= LAD_Bus_AS_n;
572
   ladi.DS_n                  <= LAD_Bus_DS_n;
573
   ladi.WR_n                  <= LAD_Bus_WR_n;
574
   ladi.CS_n                  <= LAD_Bus_CS_n;
575
   ladi.Reg_n                 <= LAD_Bus_Reg_n;
576
 
577
   LAD_Bus_Ack_n              <= lado.Ack_n;
578
   LAD_Bus_Int_Req_n          <= lado.Int_Req_n;
579
   LAD_Bus_DMA_0_Data_OK_n    <= lado.DMA_0_Data_OK_n;
580
   LAD_Bus_DMA_0_Burst_OK     <= lado.DMA_0_Burst_OK;
581
   LAD_Bus_DMA_1_Data_OK_n    <= lado.DMA_1_Data_OK_n;
582
   LAD_Bus_DMA_1_Burst_OK     <= lado.DMA_1_Burst_OK;
583
   LAD_Bus_Reg_Data_OK_n      <= lado.Reg_Data_OK_n;
584
   LAD_Bus_Reg_Burst_OK       <= lado.Reg_Burst_OK;
585
   LAD_Bus_Force_K_Clk_n      <= lado.Force_K_Clk_n;
586
   LAD_Bus_Reserved           <= lado.Reserved;
587
 
588
end architecture RTL; --======================================================--

powered by: WebSVN 2.1.0

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