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-gr-xc3s-1500/] [leon3mp.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
-----------------------------------------------------------------------------
2
--  LEON3 Demonstration design
3
--  Copyright (C) 2004 Jiri Gaisler, 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
 
20
 
21
library ieee;
22
use ieee.std_logic_1164.all;
23
library grlib, techmap;
24
use grlib.amba.all;
25
use grlib.stdlib.all;
26
use techmap.gencomp.all;
27
library gaisler;
28
use gaisler.memctrl.all;
29
use gaisler.leon3.all;
30
use gaisler.uart.all;
31
use gaisler.misc.all;
32
use gaisler.can.all;
33
use gaisler.net.all;
34
use gaisler.jtag.all;
35
use gaisler.spacewire.all;
36
use gaisler.grusb.all;
37
use gaisler.ata.all;
38
 
39
library esa;
40
use esa.memoryctrl.all;
41
 
42
use work.config.all;
43
 
44
entity leon3mp is
45
  generic (
46
    fabtech       : integer := CFG_FABTECH;
47
    memtech       : integer := CFG_MEMTECH;
48
    padtech       : integer := CFG_PADTECH;
49
    clktech       : integer := CFG_CLKTECH;
50
    disas         : integer := CFG_DISAS;       -- Enable disassembly to console
51
    dbguart       : integer := CFG_DUART;       -- Print UART on console
52
    pclow         : integer := CFG_PCLOW
53
  );
54
  port (
55
    resetn        : in  std_ulogic;
56
    clk           : in  std_ulogic;     -- 50 MHz main clock
57
    clk3          : in  std_ulogic;     -- 25 MHz ethernet clock
58
    pllref        : in  std_ulogic;
59
    errorn        : out std_ulogic;
60
    wdogn         : out std_ulogic;
61
    address       : out std_logic_vector(27 downto 0);
62
    data          : inout std_logic_vector(31 downto 0);
63
    ramsn         : out std_logic_vector (4 downto 0);
64
    ramoen        : out std_logic_vector (4 downto 0);
65
    rwen          : out std_logic_vector (3 downto 0);
66
    oen           : out std_ulogic;
67
    writen        : out std_ulogic;
68
    read          : out std_ulogic;
69
    iosn          : out std_ulogic;
70
    bexcn         : in  std_ulogic;                     -- DSU rx data
71
    brdyn         : in  std_ulogic;                     -- DSU rx data
72
    romsn         : out std_logic_vector (1 downto 0);
73
    sdclk         : out std_ulogic;
74
    sdcsn         : out std_logic_vector (1 downto 0);    -- sdram chip select
75
    sdwen         : out std_ulogic;                       -- sdram write enable
76
    sdrasn        : out std_ulogic;                       -- sdram ras
77
    sdcasn        : out std_ulogic;                       -- sdram cas
78
    sddqm         : out std_logic_vector (3 downto 0);    -- sdram dqm
79
 
80
    dsuen         : in std_ulogic;
81
    dsubre        : in std_ulogic;
82
    dsuact        : out std_ulogic;
83
 
84
    txd1          : out std_ulogic;                     -- UART1 tx data
85
    rxd1          : in  std_ulogic;                     -- UART1 rx data
86
    ctsn1         : in  std_ulogic;                     -- UART1 rx data
87
    rtsn1         : out std_ulogic;                     -- UART1 rx data
88
    txd2          : out std_ulogic;                     -- UART2 tx data
89
    rxd2          : in  std_ulogic;                     -- UART2 rx data
90
    ctsn2         : in  std_ulogic;                     -- UART1 rx data
91
    rtsn2         : out std_ulogic;                     -- UART1 rx data
92
 
93
    pio           : inout std_logic_vector(17 downto 0);         -- I/O port
94
 
95
    emdio         : inout std_logic;            -- ethernet PHY interface
96
    etx_clk       : in std_ulogic;
97
    erx_clk       : in std_ulogic;
98
    erxd          : in std_logic_vector(3 downto 0);
99
    erx_dv        : in std_ulogic;
100
    erx_er        : in std_ulogic;
101
    erx_col       : in std_ulogic;
102
    erx_crs       : in std_ulogic;
103
    etxd          : out std_logic_vector(3 downto 0);
104
    etx_en        : out std_ulogic;
105
    etx_er        : out std_ulogic;
106
    emdc          : out std_ulogic;
107
 
108
    ps2clk        : inout std_logic_vector(1 downto 0);
109
    ps2data       : inout std_logic_vector(1 downto 0);
110
 
111
    vid_clock     : out std_ulogic;
112
    vid_blankn    : out std_ulogic;
113
    vid_syncn     : out std_ulogic;
114
    vid_hsync     : out std_ulogic;
115
    vid_vsync     : out std_ulogic;
116
    vid_r         : out std_logic_vector(7 downto 0);
117
    vid_g         : out std_logic_vector(7 downto 0);
118
    vid_b         : out std_logic_vector(7 downto 0);
119
 
120
    spw_clk       : in  std_ulogic;
121
    spw_rxdp      : in  std_logic_vector(0 to 2);
122
    spw_rxdn      : in  std_logic_vector(0 to 2);
123
    spw_rxsp      : in  std_logic_vector(0 to 2);
124
    spw_rxsn      : in  std_logic_vector(0 to 2);
125
    spw_txdp      : out std_logic_vector(0 to 2);
126
    spw_txdn      : out std_logic_vector(0 to 2);
127
    spw_txsp      : out std_logic_vector(0 to 2);
128
    spw_txsn      : out std_logic_vector(0 to 2);
129
 
130
    usb_clkout    : in std_ulogic;
131
    usb_d         : inout std_logic_vector(15 downto 0);
132
    usb_linestate : in std_logic_vector(1 downto 0);
133
    usb_opmode    : out std_logic_vector(1 downto 0);
134
    usb_reset     : out std_ulogic;
135
    usb_rxactive  : in std_ulogic;
136
    usb_rxerror   : in std_ulogic;
137
    usb_rxvalid   : in std_ulogic;
138
    usb_suspend   : out std_ulogic;
139
    usb_termsel   : out std_ulogic;
140
    usb_txready   : in std_ulogic;
141
    usb_txvalid   : out std_ulogic;
142
    usb_validh    : inout std_ulogic;
143
    usb_xcvrsel   : out std_ulogic;
144
    usb_vbus      : in std_ulogic;
145
 
146
    ata_rstn  : out std_logic;
147
    ata_data  : inout std_logic_vector(15 downto 0);
148
    ata_da    : out std_logic_vector(2 downto 0);
149
    ata_cs0   : out std_logic;
150
    ata_cs1   : out std_logic;
151
    ata_dior  : out std_logic;
152
    ata_diow  : out std_logic;
153
    ata_iordy : in std_logic;
154
    ata_intrq : in std_logic;
155
    ata_dmarq : in std_logic;
156
    ata_dmack : out std_logic;
157
    --ata_dasp  : in std_logic
158
    ata_csel  : out std_logic
159
 
160
        );
161
end;
162
 
163
architecture rtl of leon3mp is
164
 
165
attribute syn_netlist_hierarchy : boolean;
166
attribute syn_netlist_hierarchy of rtl : architecture is false;
167
 
168
constant blength : integer := 12;
169
constant fifodepth : integer := 8;
170
constant maxahbm : integer := CFG_NCPU+CFG_AHB_UART+CFG_GRETH+
171
        CFG_AHB_JTAG+CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSB_DCL+CFG_SVGA_ENABLE+
172
        CFG_ATA+CFG_GRUSBDC;
173
 
174
signal vcc, gnd   : std_logic_vector(4 downto 0);
175
signal memi  : memory_in_type;
176
signal memo  : memory_out_type;
177
signal wpo   : wprot_out_type;
178
signal sdi   : sdctrl_in_type;
179
signal sdo   : sdram_out_type;
180
signal sdo2, sdo3 : sdctrl_out_type;
181
 
182
signal apbi  : apb_slv_in_type;
183
signal apbo  : apb_slv_out_vector := (others => apb_none);
184
signal ahbsi : ahb_slv_in_type;
185
signal ahbso : ahb_slv_out_vector := (others => ahbs_none);
186
signal ahbmi : ahb_mst_in_type;
187
signal ahbmo : ahb_mst_out_vector := (others => ahbm_none);
188
 
189
signal clkm, rstn, rstraw, sdclkl : std_ulogic;
190
signal cgi   : clkgen_in_type;
191
signal cgo   : clkgen_out_type;
192
signal u1i, u2i, dui : uart_in_type;
193
signal u1o, u2o, duo : uart_out_type;
194
 
195
signal irqi : irq_in_vector(0 to CFG_NCPU-1);
196
signal irqo : irq_out_vector(0 to CFG_NCPU-1);
197
 
198
signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1);
199
signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1);
200
 
201
signal dsui : dsu_in_type;
202
signal dsuo : dsu_out_type;
203
 
204
signal ethi, ethi1, ethi2 : eth_in_type;
205
signal etho, etho1, etho2 : eth_out_type;
206
 
207
signal gpti : gptimer_in_type;
208
signal gpto : gptimer_out_type;
209
 
210
signal gpioi : gpio_in_type;
211
signal gpioo : gpio_out_type;
212
 
213
signal can_lrx, can_ltx   : std_logic_vector(0 to 7);
214
 
215
signal lclk, rst, ndsuact, wdogl : std_ulogic;
216
signal tck, tckn, tms, tdi, tdo : std_ulogic;
217
 
218
signal ethclk : std_ulogic;
219
 
220
signal kbdi  : ps2_in_type;
221
signal kbdo  : ps2_out_type;
222
signal moui  : ps2_in_type;
223
signal mouo  : ps2_out_type;
224
signal vgao  : apbvga_out_type;
225
 
226
constant BOARD_FREQ : integer := 50000;   -- input frequency in KHz
227
constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV;  -- cpu frequency in KHz
228
constant IOAEN : integer := CFG_CAN + CFG_ATA + CFG_GRUSBDC;
229
 
230
signal spwi : grspw_in_type_vector(0 to 2);
231
signal spwo : grspw_out_type_vector(0 to 2);
232
signal spw_clkl   : std_ulogic;
233
signal stati : ahbstat_in_type;
234
 
235
signal uclk : std_ulogic;
236
signal usbi : grusb_in_type;
237
signal usbo : grusb_out_type;
238
 
239
signal idei : ata_in_type;
240
signal ideo : ata_out_type;
241
 
242
constant SPW_LOOP_BACK : integer := 0;
243
 
244
signal dac_clk, video_clk, clk50 : std_logic;  -- signals to vga_clkgen.
245
signal clk_sel : std_logic_vector(1 downto 0);
246
 
247
attribute keep : boolean;
248
attribute syn_keep : boolean;
249
attribute syn_preserve : boolean;
250
attribute syn_keep of clk50 : signal is true;
251
attribute syn_preserve of clk50 : signal is true;
252
attribute keep of clk50 : signal is true;
253
 
254
begin
255
 
256
----------------------------------------------------------------------
257
---  Reset and Clock generation  -------------------------------------
258
----------------------------------------------------------------------
259
 
260
  vcc <= (others => '1'); gnd <= (others => '0');
261
  cgi.pllctrl <= "00"; cgi.pllrst <= rstraw;
262
 
263
  pllref_pad : clkpad generic map (tech => padtech) port map (pllref, cgi.pllref);
264
  ethclk_pad : inpad generic map (tech => padtech) port map(clk3, ethclk);
265
  clk_pad : clkpad generic map (tech => padtech) port map (clk, lclk);
266
  clkgen0 : clkgen              -- clock generator
267
    generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN,
268
        CFG_CLK_NOFB, 0, 0, 0, BOARD_FREQ)
269
    port map (lclk, lclk, clkm, open, open, sdclkl, open, cgi, cgo, open, clk50);
270
 
271
  sdclk_pad : outpad generic map (tech => padtech, slew => 1, strength => 24)
272
        port map (sdclk, sdclkl);
273
 
274
  resetn_pad : inpad generic map (tech => padtech) port map (resetn, rst);
275
  rst0 : rstgen                 -- reset generator
276
  port map (rst, clkm, cgo.clklock, rstn, rstraw);
277
 
278
----------------------------------------------------------------------
279
---  AHB CONTROLLER --------------------------------------------------
280
----------------------------------------------------------------------
281
 
282
  ahb0 : ahbctrl                -- AHB arbiter/multiplexer
283
  generic map (defmast => CFG_DEFMST, split => CFG_SPLIT,
284
        rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO,
285
        ioen => IOAEN, nahbm => maxahbm, nahbs => 8)
286
  port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso);
287
 
288
----------------------------------------------------------------------
289
---  LEON3 processor and DSU -----------------------------------------
290
----------------------------------------------------------------------
291
 
292
  l3 : if CFG_LEON3 = 1 generate
293
    cpu : for i in 0 to CFG_NCPU-1 generate
294
      u0 : leon3s                       -- LEON3 processor      
295
      generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8,
296
        0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE,
297
        CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ,
298
        CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN,
299
          CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP,
300
          CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1)
301
      port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso,
302
                irqi(i), irqo(i), dbgi(i), dbgo(i));
303
    end generate;
304
    errorn_pad : odpad generic map (tech => padtech) port map (errorn, dbgo(0).error);
305
 
306
    dsugen : if CFG_DSU = 1 generate
307
      dsu0 : dsu3                       -- LEON3 Debug Support Unit
308
      generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#,
309
         ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ)
310
      port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo);
311
      dsuen_pad : inpad generic map (tech => padtech) port map (dsuen, dsui.enable);
312
      dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break);
313
      dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, ndsuact);
314
      ndsuact <= not dsuo.active;
315
    end generate;
316
  end generate;
317
  nodsu : if CFG_DSU = 0 generate
318
    dsuo.tstop <= '0'; dsuo.active <= '0';
319
  end generate;
320
 
321
  dcomgen : if CFG_AHB_UART = 1 generate
322
    dcom0: ahbuart              -- Debug UART
323
    generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7)
324
    port map (rstn, clkm, dui, duo, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU));
325
    dsurx_pad : inpad generic map (tech => padtech) port map (rxd2, dui.rxd);
326
    dsutx_pad : outpad generic map (tech => padtech) port map (txd2, duo.txd);
327
  end generate;
328
  nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate;
329
 
330
  ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate
331
    ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => CFG_NCPU+CFG_AHB_UART)
332
      port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART),
333
               open, open, open, open, open, open, open, gnd(0));
334
  end generate;
335
 
336
----------------------------------------------------------------------
337
---  Memory controllers ----------------------------------------------
338
----------------------------------------------------------------------
339
 
340
  memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "00";
341
  brdyn_pad : inpad generic map (tech => padtech) port map (brdyn, memi.brdyn);
342
  bexcn_pad : inpad generic map (tech => padtech) port map (bexcn, memi.bexcn);
343
 
344
  mctrl0 : mctrl generic map (hindex => 0, pindex => 0,
345
        paddr => 0, srbanks => 2, ram8 => CFG_MCTRL_RAM8BIT,
346
        ram16 => CFG_MCTRL_RAM16BIT, sden => CFG_MCTRL_SDEN,
347
        invclk => CFG_CLK_NOFB, sepbus => CFG_MCTRL_SEPBUS,
348
        pageburst => CFG_MCTRL_PAGE)
349
  port map (rstn, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo);
350
  sdpads : if CFG_MCTRL_SDEN = 1 generate               -- SDRAM controller
351
      sdwen_pad : outpad generic map (tech => padtech)
352
           port map (sdwen, sdo.sdwen);
353
      sdras_pad : outpad generic map (tech => padtech)
354
           port map (sdrasn, sdo.rasn);
355
      sdcas_pad : outpad generic map (tech => padtech)
356
           port map (sdcasn, sdo.casn);
357
      sddqm_pad : outpadv generic map (width =>4, tech => padtech)
358
           port map (sddqm, sdo.dqm(3 downto 0));
359
  end generate;
360
  sdcsn_pad : outpadv generic map (width =>2, tech => padtech)
361
           port map (sdcsn, sdo.sdcsn);
362
 
363
  addr_pad : outpadv generic map (width => 28, tech => padtech)
364
        port map (address, memo.address(27 downto 0));
365
  rams_pad : outpadv generic map (width => 5, tech => padtech)
366
        port map (ramsn, memo.ramsn(4 downto 0));
367
  roms_pad : outpadv generic map (width => 2, tech => padtech)
368
        port map (romsn, memo.romsn(1 downto 0));
369
  oen_pad  : outpad generic map (tech => padtech)
370
        port map (oen, memo.oen);
371
  rwen_pad : outpadv generic map (width => 4, tech => padtech)
372
        port map (rwen, memo.wrn);
373
  roen_pad : outpadv generic map (width => 5, tech => padtech)
374
        port map (ramoen, memo.ramoen(4 downto 0));
375
  wri_pad  : outpad generic map (tech => padtech)
376
        port map (writen, memo.writen);
377
  read_pad : outpad generic map (tech => padtech)
378
        port map (read, memo.read);
379
  iosn_pad : outpad generic map (tech => padtech)
380
        port map (iosn, memo.iosn);
381
  bdr : for i in 0 to 3 generate
382
      data_pad : iopadv generic map (tech => padtech, width => 8)
383
      port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8),
384
        memo.bdrive(i), memi.data(31-i*8 downto 24-i*8));
385
  end generate;
386
 
387
----------------------------------------------------------------------
388
---  APB Bridge and various periherals -------------------------------
389
----------------------------------------------------------------------
390
 
391
  bpromgen : if CFG_AHBROMEN /= 0 generate
392
    brom : entity work.ahbrom
393
      generic map (hindex => 8, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP)
394
      port map ( rstn, clkm, ahbsi, ahbso(6));
395
  end generate;
396
 
397
----------------------------------------------------------------------
398
---  APB Bridge and various periherals -------------------------------
399
----------------------------------------------------------------------
400
 
401
  apb0 : apbctrl                                -- AHB/APB bridge
402
  generic map (hindex => 1, haddr => CFG_APBADDR, nslaves => 16)
403
  port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo );
404
 
405
  ua1 : if CFG_UART1_ENABLE /= 0 generate
406
    uart1 : apbuart                     -- UART 1
407
    generic map (pindex => 1, paddr => 1,  pirq => 2, console => dbguart,
408
        fifosize => CFG_UART1_FIFO)
409
    port map (rstn, clkm, apbi, apbo(1), u1i, u1o);
410
    u1i.extclk <= '0';
411
    rxd1_pad : inpad generic map (tech => padtech) port map (rxd1, u1i.rxd);
412
    txd1_pad : outpad generic map (tech => padtech) port map (txd1, u1o.txd);
413
    cts1_pad : inpad generic map (tech => padtech) port map (ctsn1, u1i.ctsn);
414
    rts1_pad : outpad generic map (tech => padtech) port map (rtsn1, u1o.rtsn);
415
  end generate;
416
  noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate;
417
 
418
  ua2 : if CFG_UART2_ENABLE /= 0 generate
419
    uart2 : apbuart                     -- UART 2
420
    generic map (pindex => 9, paddr => 9,  pirq => 3, fifosize => CFG_UART2_FIFO)
421
    port map (rstn, clkm, apbi, apbo(9), u2i, u2o);
422
    u2i.extclk <= '0';
423
    rxd2_pad : inpad generic map (tech => padtech) port map (rxd2, u2i.rxd);
424
    txd2_pad : outpad generic map (tech => padtech) port map (txd2, u2o.txd);
425
    cts2_pad : inpad generic map (tech => padtech) port map (ctsn2, u2i.ctsn);
426
    rts2_pad : outpad generic map (tech => padtech) port map (rtsn2, u2o.rtsn);
427
  end generate;
428
  noua1 : if CFG_UART2_ENABLE = 0 generate
429
    apbo(9) <= apb_none;  rtsn2 <= '0';
430
  end generate;
431
 
432
  irqctrl : if CFG_IRQ3_ENABLE /= 0 generate
433
    irqctrl0 : irqmp                    -- interrupt controller
434
    generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU)
435
    port map (rstn, clkm, apbi, apbo(2), irqo, irqi);
436
  end generate;
437
  irq3 : if CFG_IRQ3_ENABLE = 0 generate
438
    x : for i in 0 to CFG_NCPU-1 generate
439
      irqi(i).irl <= "0000";
440
    end generate;
441
    apbo(2) <= apb_none;
442
  end generate;
443
 
444
  gpt : if CFG_GPT_ENABLE /= 0 generate
445
    timer0 : gptimer                    -- timer unit
446
    generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ,
447
        sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM,
448
        nbits => CFG_GPT_TW, wdog => CFG_GPT_WDOGEN*CFG_GPT_WDOG)
449
    port map (rstn, clkm, apbi, apbo(3), gpti, gpto);
450
    gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0';
451
  end generate;
452
  wden : if CFG_GPT_WDOGEN /= 0 generate
453
    wdogl <= gpto.wdogn or not rstn;
454
    wdogn_pad : odpad generic map (tech => padtech) port map (wdogn, wdogl);
455
  end generate;
456
  wddis : if CFG_GPT_WDOGEN = 0 generate
457
    wdogn_pad : odpad generic map (tech => padtech) port map (wdogn, vcc(0));
458
  end generate;
459
 
460
  nogpt : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate;
461
 
462
  kbd : if CFG_KBD_ENABLE /= 0 generate
463
    ps21 : apbps2 generic map(pindex => 4, paddr => 4, pirq => 4)
464
      port map(rstn, clkm, apbi, apbo(4), moui, mouo);
465
    ps20 : apbps2 generic map(pindex => 5, paddr => 5, pirq => 5)
466
      port map(rstn, clkm, apbi, apbo(5), kbdi, kbdo);
467
  end generate;
468
  nokbd : if CFG_KBD_ENABLE = 0 generate
469
        apbo(4) <= apb_none; mouo <= ps2o_none;
470
        apbo(5) <= apb_none; kbdo <= ps2o_none;
471
  end generate;
472
  kbdclk_pad : iopad generic map (tech => padtech)
473
      port map (ps2clk(0),kbdo.ps2_clk_o, kbdo.ps2_clk_oe, kbdi.ps2_clk_i);
474
  kbdata_pad : iopad generic map (tech => padtech)
475
        port map (ps2data(0), kbdo.ps2_data_o, kbdo.ps2_data_oe, kbdi.ps2_data_i);
476
  mouclk_pad : iopad generic map (tech => padtech)
477
      port map (ps2clk(1),mouo.ps2_clk_o, mouo.ps2_clk_oe, moui.ps2_clk_i);
478
  mouata_pad : iopad generic map (tech => padtech)
479
        port map (ps2data(1), mouo.ps2_data_o, mouo.ps2_data_oe, moui.ps2_data_i);
480
 
481
  vga : if CFG_VGA_ENABLE /= 0 generate
482
    vga0 : apbvga generic map(memtech => memtech, pindex => 6, paddr => 6)
483
       port map(rstn, clkm, ethclk, apbi, apbo(6), vgao);
484
    video_clock_pad : outpad generic map ( tech => padtech)
485
        port map (vid_clock, video_clk);
486
    video_clk <= not ethclk;
487
   end generate;
488
 
489
  svga : if CFG_SVGA_ENABLE /= 0 generate
490
    svga0 : svgactrl generic map(memtech => memtech, pindex => 6, paddr => 6,
491
        hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG,
492
        clk0 => 40000, clk1 => 1000000000/((BOARD_FREQ * CFG_CLKMUL)/CFG_CLKDIV),
493
        clk2 => 20000, clk3 => 15385, burstlen => 6)
494
       port map(rstn, clkm, video_clk, apbi, apbo(6), vgao, ahbmi,
495
                ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG), clk_sel);
496
    vgaclk0 : entity work.vga_clkgen
497
       port map (rstn, clk_sel, ethclk, clkm, clk50, video_clk);
498
    dac_clk <= not video_clk;
499
    video_clock_pad : outpad generic map ( tech => padtech)
500
        port map (vid_clock, dac_clk);
501
  end generate;
502
 
503
  novga : if (CFG_VGA_ENABLE = 0 and CFG_SVGA_ENABLE = 0) generate
504
    apbo(6) <= apb_none; vgao <= vgao_none;
505
    video_clk <= not clkm;
506
    video_clock_pad : outpad generic map ( tech => padtech)
507
        port map (vid_clock, video_clk);
508
  end generate;
509
 
510
  blank_pad : outpad generic map (tech => padtech)
511
        port map (vid_blankn, vgao.blank);
512
  comp_sync_pad : outpad generic map (tech => padtech)
513
        port map (vid_syncn, vgao.comp_sync);
514
  vert_sync_pad : outpad generic map (tech => padtech)
515
        port map (vid_vsync, vgao.vsync);
516
  horiz_sync_pad : outpad generic map (tech => padtech)
517
        port map (vid_hsync, vgao.hsync);
518
  video_out_r_pad : outpadv generic map (width => 8, tech => padtech)
519
        port map (vid_r, vgao.video_out_r);
520
  video_out_g_pad : outpadv generic map (width => 8, tech => padtech)
521
        port map (vid_g, vgao.video_out_g);
522
  video_out_b_pad : outpadv generic map (width => 8, tech => padtech)
523
        port map (vid_b, vgao.video_out_b);
524
 
525
  gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate     -- GPIO unit
526
    grgpio0: grgpio
527
    generic map(pindex => 8, paddr => 8, imask => CFG_GRGPIO_IMASK, nbits => 18)
528
    port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(8),
529
    gpioi => gpioi, gpioo => gpioo);
530
    p0 : if (CFG_CAN = 0) or (CFG_CAN_NUM = 1) generate
531
      pio_pads : for i in 1 to 2 generate
532
        pio_pad : iopad generic map (tech => padtech)
533
            port map (pio(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));
534
      end generate;
535
    end generate;
536
    p1 : if (CFG_CAN = 0) generate
537
      pio_pads : for i in 4 to 5 generate
538
        pio_pad : iopad generic map (tech => padtech)
539
            port map (pio(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));
540
      end generate;
541
    end generate;
542
    pio_pad0 : iopad generic map (tech => padtech)
543
            port map (pio(0), gpioo.dout(0), gpioo.oen(0), gpioi.din(0));
544
    pio_pad1 : iopad generic map (tech => padtech)
545
            port map (pio(3), gpioo.dout(3), gpioo.oen(3), gpioi.din(3));
546
    pio_pads : for i in 6 to 17 generate
547
        pio_pad : iopad generic map (tech => padtech)
548
            port map (pio(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));
549
    end generate;
550
 
551
  end generate;
552
 
553
  ahbs : if CFG_AHBSTAT = 1 generate    -- AHB status register
554
    ahbstat0 : ahbstat generic map (pindex => 15, paddr => 15, pirq => 7,
555
        nftslv => CFG_AHBSTATN)
556
      port map (rstn, clkm, ahbmi, ahbsi, stati, apbi, apbo(15));
557
  end generate;
558
 
559
-----------------------------------------------------------------------
560
---  ETHERNET ---------------------------------------------------------
561
-----------------------------------------------------------------------
562
 
563
    eth0 : if CFG_GRETH = 1 generate -- Gaisler ethernet MAC
564
      e1 : grethm generic map(
565
        hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE,
566
        pindex => 13, paddr => 13, pirq => 13, memtech => memtech,
567
        mdcscaler => CPU_FREQ/1000, enable_mdio => 1, fifosize => CFG_ETH_FIFO,
568
        nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF,
569
        macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL,
570
        ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL, giga => CFG_GRETH1G)
571
      port map( rst => rstn, clk => clkm, ahbmi => ahbmi,
572
        ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE),
573
        apbi => apbi, apbo => apbo(13), ethi => ethi, etho => etho);
574
    end generate;
575
 
576
    ethpads : if (CFG_GRETH = 1) generate -- eth pads
577
      emdio_pad : iopad generic map (tech => padtech)
578
      port map (emdio, etho.mdio_o, etho.mdio_oe, ethi.mdio_i);
579
      etxc_pad : clkpad generic map (tech => padtech, arch => 2)
580
        port map (etx_clk, ethi.tx_clk);
581
      erxc_pad : clkpad generic map (tech => padtech, arch => 2)
582
        port map (erx_clk, ethi.rx_clk);
583
      erxd_pad : inpadv generic map (tech => padtech, width => 4)
584
        port map (erxd, ethi.rxd(3 downto 0));
585
      erxdv_pad : inpad generic map (tech => padtech)
586
        port map (erx_dv, ethi.rx_dv);
587
      erxer_pad : inpad generic map (tech => padtech)
588
        port map (erx_er, ethi.rx_er);
589
      erxco_pad : inpad generic map (tech => padtech)
590
        port map (erx_col, ethi.rx_col);
591
      erxcr_pad : inpad generic map (tech => padtech)
592
        port map (erx_crs, ethi.rx_crs);
593
 
594
      etxd_pad : outpadv generic map (tech => padtech, width => 4)
595
        port map (etxd, etho.txd(3 downto 0));
596
      etxen_pad : outpad generic map (tech => padtech)
597
        port map ( etx_en, etho.tx_en);
598
      etxer_pad : outpad generic map (tech => padtech)
599
        port map (etx_er, etho.tx_er);
600
      emdc_pad : outpad generic map (tech => padtech)
601
        port map (emdc, etho.mdc);
602
    end generate;
603
 
604
-----------------------------------------------------------------------
605
---  AHB RAM ----------------------------------------------------------
606
-----------------------------------------------------------------------
607
 
608
  ocram : if CFG_AHBRAMEN = 1 generate
609
    ahbram0 : ahbram generic map (hindex => 7, haddr => CFG_AHBRADDR,
610
        tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ)
611
    port map ( rstn, clkm, ahbsi, ahbso(7));
612
  end generate;
613
 
614
-----------------------------------------------------------------------
615
---  Multi-core CAN ---------------------------------------------------
616
-----------------------------------------------------------------------
617
 
618
   can0 : if CFG_CAN = 1 generate
619
     can0 : can_mc generic map (slvndx => 4, ioaddr => CFG_CANIO,
620
        iomask => 16#FF0#, irq => CFG_CANIRQ, memtech => memtech,
621
        ncores => CFG_CAN_NUM, sepirq => CFG_CANSEPIRQ)
622
      port map (rstn, clkm, ahbsi, ahbso(4), can_lrx, can_ltx );
623
      can_tx_pad1 : iopad generic map (tech => padtech)
624
            port map (pio(5), can_ltx(0), gnd(0), gpioi.din(5));
625
      can_rx_pad1 : iopad generic map (tech => padtech)
626
            port map (pio(4), gnd(0), vcc(0), can_lrx(0));
627
      canpas : if CFG_CAN_NUM = 2 generate
628
        can_tx_pad2 : iopad generic map (tech => padtech)
629
            port map (pio(2), can_ltx(1), gnd(0), gpioi.din(2));
630
        can_rx_pad2 : iopad generic map (tech => padtech)
631
            port map (pio(1), gnd(0), vcc(0), can_lrx(1));
632
      end generate;
633
   end generate;
634
 
635
   -- standby controlled by pio(3) and pio(0)
636
 
637
-----------------------------------------------------------------------
638
---  SPACEWIRE  -------------------------------------------------------
639
-----------------------------------------------------------------------
640
 
641
  spw : if CFG_SPW_EN > 0 generate
642
--   spw_clk_pad : clkpad generic map (tech => padtech) port map (clk3, spw_clkl); 
643
   spw_clkl <= clkm;
644
   swloop : for i in 0 to CFG_SPW_NUM-1 generate
645
 
646
   sw0 : grspwm generic map(tech => memtech,
647
     hindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+CFG_SVGA_ENABLE+i,
648
     sysfreq => CPU_FREQ, usegen => 1,
649
     pindex => 10+i, paddr => 10+i, pirq => 10+i,
650
     nsync => 1, rmap => CFG_SPW_RMAP,
651
     rmapcrc => CFG_SPW_RMAPCRC, fifosize1 => CFG_SPW_AHBFIFO,
652
     fifosize2 => CFG_SPW_RXFIFO, rxclkbuftype => 2, dmachan => 1,
653
     rmapbufs => CFG_SPW_RMAPBUF, ft => CFG_SPW_FT, ports => 1,
654
     spwcore => CFG_SPW_GRSPW, netlist => CFG_SPW_NETLIST)
655
     port map(rstn, clkm, spw_clkl, ahbmi,
656
        ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+CFG_SVGA_ENABLE+i),
657
        apbi, apbo(10+i), spwi(i), spwo(i));
658
     spwi(i).tickin <= '0'; spwi(i).rmapen <= '1';
659
     spwi(i).clkdiv10 <= conv_std_logic_vector(CPU_FREQ/10000-1, 8);
660
     spwlb0 : if SPW_LOOP_BACK = 1 generate
661
     spwi(i).d(0) <= spwo(i).d(0); spwi(i).s(0) <= spwo(i).s(0);
662
     end generate;
663
     nospwlb0 : if SPW_LOOP_BACK = 0 generate
664
       spw_rxd_pad : inpad_ds generic map (padtech, lvds, x25v)
665
         port map (spw_rxdp(i), spw_rxdn(i), spwi(i).d(0));
666
       spw_rxs_pad : inpad_ds generic map (padtech, lvds, x25v)
667
         port map (spw_rxsp(i), spw_rxsn(i), spwi(i).s(0));
668
       spw_txd_pad : outpad_ds generic map (padtech, lvds, x25v)
669
         port map (spw_txdp(i), spw_txdn(i), spwo(i).d(0), gnd(0));
670
       spw_txs_pad : outpad_ds generic map (padtech, lvds, x25v)
671
         port map (spw_txsp(i), spw_txsn(i), spwo(i).s(0), gnd(0));
672
     end generate;
673
   end generate;
674
  end generate;
675
 
676
-------------------------------------------------------------------------------
677
--- USB -----------------------------------------------------------------------
678
-------------------------------------------------------------------------------
679
  -- Note that the GRUSBDC and GRUSB_DCL can not be instantiated at the same
680
  -- time (board has only one USB transceiver), therefore they share AHB
681
  -- master/slave indexes
682
  -----------------------------------------------------------------------------
683
  -- Shared pads
684
  -----------------------------------------------------------------------------
685
  usbpads: if (CFG_GRUSBDC + CFG_GRUSB_DCL) /= 0 generate
686
    usb_clk_pad : clkpad generic map (tech => padtech, arch => 2)
687
      port map (usb_clkout, uclk);
688
 
689
    usb_d_pad: iopadv generic map(tech => padtech, width => 16, slew => 1)
690
      port map (usb_d, usbo.dataout, usbo.oen, usbi.datain);
691
 
692
    usb_txready_pad : inpad generic map (tech => padtech)
693
      port map (usb_txready,usbi.txready);
694
    usb_rxvalid_pad : inpad generic map (tech => padtech)
695
      port map (usb_rxvalid,usbi.rxvalid);
696
    usb_rxerror_pad : inpad generic map (tech => padtech)
697
      port map (usb_rxerror,usbi.rxerror);
698
    usb_rxactive_pad : inpad generic map (tech => padtech)
699
      port map (usb_rxactive,usbi.rxactive);
700
    usb_linestate_pad : inpadv generic map (tech => padtech, width => 2)
701
      port map (usb_linestate,usbi.linestate);
702
    usb_vbus_pad : inpad generic map (tech => padtech)
703
      port map (usb_vbus, usbi.vbusvalid);
704
 
705
    usb_reset_pad : outpad generic map (tech => padtech, slew => 1)
706
      port map (usb_reset,usbo.reset);
707
    usb_suspend_pad : outpad generic map (tech => padtech, slew => 1)
708
      port map (usb_suspend,usbo.suspendm);
709
    usb_termsel_pad : outpad generic map (tech => padtech, slew => 1)
710
      port map (usb_termsel,usbo.termselect);
711
    usb_xcvrsel_pad : outpad generic map (tech => padtech, slew => 1)
712
      port map (usb_xcvrsel,usbo.xcvrselect(0));
713
    usb_txvalid_pad : outpad generic map (tech => padtech, slew => 1)
714
      port map (usb_txvalid,usbo.txvalid);
715
    usb_opmode_pad : outpadv generic map (tech =>padtech ,width =>2, slew =>1)
716
      port map (usb_opmode,usbo.opmode);
717
 
718
    usb_validh_pad:iopad generic map(tech => padtech, slew => 1)
719
      port map (usb_validh, usbo.txvalidh, usbo.oen, usbi.rxvalidh);
720
 
721
  end generate;
722
 
723
  -----------------------------------------------------------------------------
724
  -- USB 2.0 Device Controller
725
  -----------------------------------------------------------------------------
726
  usbdc0: if CFG_GRUSBDC = 1 generate
727
    usbdc0: grusbdc
728
      generic map(
729
        hsindex => 5, hirq => 9, haddr => 16#004#, hmask => 16#FFC#,
730
        hmindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+
731
        CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN,
732
        aiface => CFG_GRUSBDC_AIFACE, uiface => 0, dwidth => CFG_GRUSBDC_DW,
733
        nepi => CFG_GRUSBDC_NEPI, nepo => CFG_GRUSBDC_NEPO,
734
        i0 => CFG_GRUSBDC_I0, i1 => CFG_GRUSBDC_I1,
735
        i2 => CFG_GRUSBDC_I2, i3 => CFG_GRUSBDC_I3,
736
        i4 => CFG_GRUSBDC_I4, i5 => CFG_GRUSBDC_I5,
737
        i6 => CFG_GRUSBDC_I6, i7 => CFG_GRUSBDC_I7,
738
        i8 => CFG_GRUSBDC_I8, i9 => CFG_GRUSBDC_I9,
739
        i10 => CFG_GRUSBDC_I10, i11 => CFG_GRUSBDC_I11,
740
        i12 => CFG_GRUSBDC_I12, i13 => CFG_GRUSBDC_I13,
741
        i14 => CFG_GRUSBDC_I14, i15 => CFG_GRUSBDC_I15,
742
        o0 => CFG_GRUSBDC_O0, o1 => CFG_GRUSBDC_O1,
743
        o2 => CFG_GRUSBDC_O2, o3 => CFG_GRUSBDC_O3,
744
        o4 => CFG_GRUSBDC_O4, o5 => CFG_GRUSBDC_O5,
745
        o6 => CFG_GRUSBDC_O6, o7 => CFG_GRUSBDC_O7,
746
        o8 => CFG_GRUSBDC_O8, o9 => CFG_GRUSBDC_O9,
747
        o10 => CFG_GRUSBDC_O10, o11 => CFG_GRUSBDC_O11,
748
        o12 => CFG_GRUSBDC_O12, o13 => CFG_GRUSBDC_O13,
749
        o14 => CFG_GRUSBDC_O14, o15 => CFG_GRUSBDC_O15,
750
        memtech => memtech)
751
      port map(
752
        uclk  => uclk,
753
        usbi  => usbi,
754
        usbo  => usbo,
755
        hclk  => clkm,
756
        hrst  => rstn,
757
        ahbmi => ahbmi,
758
        ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+
759
                       CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN),
760
        ahbsi => ahbsi,
761
        ahbso => ahbso(5)
762
        );
763
  end generate usbdc0;
764
 
765
  -----------------------------------------------------------------------------
766
  -- USB DCL
767
  -----------------------------------------------------------------------------
768
  usb_dcl0: if CFG_GRUSB_DCL = 1 generate
769
    usb_dcl0: grusb_dcl
770
      generic map (
771
        hindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+
772
        CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN,
773
        memtech => memtech, uiface => 0, dwidth => CFG_GRUSB_DCL_DW)
774
      port map (
775
        uclk, usbi, usbo, clkm, rstn, ahbmi,
776
        ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+CFG_SVGA_ENABLE+
777
              CFG_SPW_NUM*CFG_SPW_EN));
778
  end generate usb_dcl0;
779
 
780
-----------------------------------------------------------------------
781
---  AHB ATA ----------------------------------------------------------
782
-----------------------------------------------------------------------
783
 
784
  ata0 : if CFG_ATA = 1 generate
785
    atac0 : atactrl
786
      generic map(
787
        tech => 0, fdepth => CFG_ATAFIFO,
788
        mhindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+
789
        CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSB_DCL+
790
        CFG_GRUSBDC,
791
        shindex => 3, haddr => 16#A00#, hmask => 16#fff#, pirq  => CFG_ATAIRQ,
792
        mwdma => CFG_ATADMA, TWIDTH   => 8,
793
        -- PIO mode 0 settings (@100MHz clock)
794
        PIO_mode0_T1   => 6,   -- 70ns
795
        PIO_mode0_T2   => 28,  -- 290ns
796
        PIO_mode0_T4   => 2,   -- 30ns
797
        PIO_mode0_Teoc => 23   -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240
798
        )
799
      port map(
800
        rst => rstn, arst => vcc(0), clk => clkm, ahbmi => ahbmi,
801
        ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+
802
                       CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN+
803
                       CFG_GRUSB_DCL+CFG_GRUSBDC),
804
        ahbsi => ahbsi, ahbso => ahbso(3), atai => idei, atao => ideo);
805
 
806
    ata_rstn_pad : outpad generic map (tech => padtech)
807
      port map (ata_rstn, ideo.rstn);
808
    ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1)
809
      port map (ata_data, ideo.ddo, ideo.oen, idei.ddi);
810
    ata_da_pad : outpadv generic map (tech => padtech, width => 3)
811
      port map (ata_da, ideo.da);
812
    ata_cs0_pad : outpad generic map (tech => padtech)
813
      port map (ata_cs0, ideo.cs0);
814
    ata_cs1_pad : outpad generic map (tech => padtech)
815
      port map (ata_cs1, ideo.cs1);
816
    ata_dior_pad : outpad generic map (tech => padtech)
817
      port map (ata_dior, ideo.dior);
818
    ata_diow_pad : outpad generic map (tech => padtech)
819
      port map (ata_diow, ideo.diow);
820
    iordy_pad : inpad generic map (tech => padtech)
821
      port map (ata_iordy, idei.iordy);
822
    intrq_pad : inpad generic map (tech => padtech)
823
      port map (ata_intrq, idei.intrq);
824
    dmarq_pad : inpad generic map (tech => padtech)
825
      port map (ata_dmarq, idei.dmarq);
826
    dmack_pad : outpad generic map (tech => padtech)
827
      port map (ata_dmack, ideo.dmack);
828
    ata_csel <= '0';
829
  end generate;
830
 
831
-----------------------------------------------------------------------
832
---  Drive unused bus elements  ---------------------------------------
833
-----------------------------------------------------------------------
834
 
835
--  nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG) to NAHBMST-1 generate
836
--    ahbmo(i) <= ahbm_none;
837
--  end generate;
838
--  nap0 : for i in 11 to NAPBSLV-1 generate apbo(i) <= apb_none; end generate;
839
--  nah0 : for i in 8 to NAHBSLV-1 generate ahbso(i) <= ahbs_none; end generate;
840
 
841
-----------------------------------------------------------------------
842
---  Boot message  ----------------------------------------------------
843
-----------------------------------------------------------------------
844
 
845
-- pragma translate_off
846
  x : report_version
847
  generic map (
848
   msg1 => "LEON3 GR-XC3S-1500 Demonstration design",
849
      msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100)
850
        & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD),
851
   msg3 => "Target technology: " & tech_table(fabtech) & ",  memory library: " & tech_table(memtech),
852
   mdel => 1
853
  );
854
-- pragma translate_on
855
end;

powered by: WebSVN 2.1.0

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