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/] [ut699rh-evab/] [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
use work.config.all;
24
library techmap;
25
use techmap.gencomp.all;
26
use techmap.allclkgen.all;
27
 
28
entity leon3mp is
29
  generic (
30
    fabtech   : integer := CFG_FABTECH;
31
    memtech   : integer := CFG_MEMTECH;
32
    padtech   : integer := CFG_PADTECH;
33
    clktech   : integer := CFG_CLKTECH;
34
    disas     : integer := CFG_DISAS;   -- Enable disassembly to console
35
    dbguart   : integer := CFG_DUART;   -- Print UART on console
36
    pclow     : integer := CFG_PCLOW
37
  );
38
  port (
39
    resetn      : in  std_logic;
40
    clk         : in  std_logic;
41
    errorn      : inout std_logic;
42
    wdogn       : inout std_logic;
43
 
44
    address     : out   std_logic_vector(27 downto 0);
45
    data        : inout std_logic_vector(31 downto 0);
46
    cb          : inout std_logic_vector(7 downto 0);
47
 
48
    sdclk       : out std_logic;
49
    sdcke       : out std_logic_vector (1 downto 0);    -- sdram chip select
50
    sdcsn       : out std_logic_vector (1 downto 0);    -- sdram chip select
51
    sdwen       : out std_logic;                       -- sdram write enable
52
    sdrasn      : out std_logic;                       -- sdram ras
53
    sdcasn      : out std_logic;                       -- sdram cas
54
    sddqm       : out std_logic_vector (3 downto 0);    -- sdram dqm
55
    dsutx       : out std_logic;                        -- DSU tx data / scanout
56
    dsurx       : in  std_logic;                        -- DSU rx data / scanin
57
    dsuen       : in std_logic;
58
    dsubre      : in std_logic;                 -- DSU break / scanen
59
    dsuact      : out std_logic;                        -- DSU active / NT
60
    txd1        : out std_logic;                        -- UART1 tx data
61
    rxd1        : in  std_logic;                        -- UART1 rx data
62
 
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_logic;
67
    writen      : inout std_logic;
68
    read        : out std_logic;
69
    iosn        : out std_logic;
70
    romsn       : out std_logic_vector (1 downto 0);
71
    brdyn       : in  std_logic;
72
    bexcn       : in  std_logic;
73
    gpio        : inout std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);   -- I/O port
74
 
75
    emdio       : inout std_logic;              -- ethernet PHY interface
76
    etx_clk     : in std_logic;
77
    erx_clk     : in std_logic;
78
    erxd        : in std_logic_vector(3 downto 0);
79
    erx_dv      : in std_logic;
80
    erx_er      : in std_logic;
81
    erx_col     : in std_logic;
82
    erx_crs     : in std_logic;
83
    etxd        : out std_logic_vector(3 downto 0);
84
    etx_en      : out std_logic;
85
    etx_er      : out std_logic;
86
    emdc        : out std_logic;
87
 
88
    pci_rst     : in std_logic;         -- PCI bus
89
    pci_clk     : in std_logic;
90
    pci_gnt     : in std_logic;
91
    pci_idsel   : in std_logic;
92
    pci_ad      : inout std_logic_vector(31 downto 0);
93
    pci_cbe     : inout std_logic_vector(3 downto 0);
94
    pci_frame   : inout std_logic;
95
    pci_irdy    : inout std_logic;
96
    pci_trdy    : inout std_logic;
97
    pci_devsel  : inout std_logic;
98
    pci_stop    : inout std_logic;
99
    pci_perr    : inout std_logic;
100
    pci_par     : inout std_logic;
101
    pci_req     : out std_logic;
102
    pci_host    : in std_logic;
103
 
104
    pci_arb_req : in  std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
105
    pci_arb_gnt : out std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
106
 
107
    can_txd     : out std_logic_vector(0 to CFG_CAN_NUM-1);
108
    can_rxd     : in  std_logic_vector(0 to CFG_CAN_NUM-1);
109
 
110
--    spw_clk   : in  std_logic;
111
--    spw_rxd     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
112
--    spw_rxs     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
113
--    spw_txd     : out std_logic_vector(0 to CFG_SPW_NUM-1);
114
--    spw_txs     : out std_logic_vector(0 to CFG_SPW_NUM-1);
115
 
116
--    tck         : in std_logic;
117
--    tms         : in std_logic;
118
--    tdi         : in std_logic;
119
--    tdo         : out std_logic;
120
 
121
--    test              : in  std_logic
122
 
123
    spw_clkp      : in  std_logic;
124
    spw_clkn      : in  std_logic;
125
    spw_rxdp      : in  std_logic_vector(0 to CFG_SPW_NUM-1);
126
    spw_rxdn      : in  std_logic_vector(0 to CFG_SPW_NUM-1);
127
    spw_rxsp      : in  std_logic_vector(0 to CFG_SPW_NUM-1);
128
    spw_rxsn      : in  std_logic_vector(0 to CFG_SPW_NUM-1);
129
    spw_txdp      : out std_logic_vector(0 to CFG_SPW_NUM-1);
130
    spw_txdn      : out std_logic_vector(0 to CFG_SPW_NUM-1);
131
    spw_txsp      : out std_logic_vector(0 to CFG_SPW_NUM-1);
132
    spw_txsn      : out std_logic_vector(0 to CFG_SPW_NUM-1);
133
    pllref        : in  std_logic
134
        );
135
end;
136
 
137
architecture rtl of leon3mp is
138
 
139
signal lresetn  : std_logic;
140
signal lclk     : std_logic;
141
signal lerrorn  : std_logic;
142
signal laddress : std_logic_vector(27 downto 0);
143
signal datain   : std_logic_vector(31 downto 0);
144
signal dataout  : std_logic_vector(31 downto 0);
145
signal dataen   : std_logic_vector(31 downto 0);
146
signal cbin     : std_logic_vector(7 downto 0);
147
signal cbout    : std_logic_vector(7 downto 0);
148
signal cben     : std_logic_vector(7 downto 0);
149
signal lsdclk   : std_logic;
150
--signal sdclk          : std_logic;
151
signal lsdcsn   : std_logic_vector (1 downto 0);    -- sdram chip select
152
signal lsdwen   : std_logic;                       -- sdram write enable
153
signal lsdrasn  : std_logic;                       -- sdram ras
154
signal lsdcasn  : std_logic;                       -- sdram cas
155
signal lsddqm   : std_logic_vector (3 downto 0);    -- sdram dqm
156
signal ldsutx   : std_logic;                    -- DSU tx data
157
signal ldsurx   : std_logic;                    -- DSU rx data
158
signal ldsuen   : std_logic;
159
signal ldsubre  : std_logic;
160
signal ldsuact  : std_logic;
161
signal ltxd1    : std_logic;                    -- UART1 tx data
162
signal lrxd1    : std_logic;                    -- UART1 rx data
163
signal lramsn   : std_logic_vector (4 downto 0);
164
signal lramoen  : std_logic_vector (4 downto 0);
165
signal lrwen    : std_logic_vector (3 downto 0);
166
signal loen     : std_logic;
167
signal lwriten  : std_logic;
168
signal lread    : std_logic;
169
signal liosn    : std_logic;
170
signal lromsn   : std_logic_vector (1 downto 0);
171
signal lbrdyn   : std_logic;
172
signal lbexcn   : std_logic;
173
signal lwdogn   : std_logic;
174
signal gpioin   : std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);         -- I/O port
175
signal gpioout  : std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);         -- I/O port
176
signal gpioen   : std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);         -- I/O port
177
 
178
signal can_lrx, can_ltx   : std_logic_vector(0 to CFG_CAN_NUM-1);
179
 
180
signal lspw_clk : std_logic;
181
signal spw_clkl : std_logic;
182
signal lspw_rxd  : std_logic_vector(0 to CFG_SPW_NUM-1);
183
signal lspw_rxs  : std_logic_vector(0 to CFG_SPW_NUM-1);
184
signal lspw_txd  : std_logic_vector(0 to CFG_SPW_NUM-1);
185
signal lspw_txs  : std_logic_vector(0 to CFG_SPW_NUM-1);
186
signal lspw_ten  : std_logic_vector(0 to CFG_SPW_NUM-1);
187
 
188
signal ltest    : std_logic;
189
constant OEPOL  : integer := padoen_polarity(padtech);
190
 
191
signal lpciclk  : std_logic;
192
signal pcii_rst         : std_logic;
193
signal pcii_gnt         : std_logic;
194
signal pcii_idsel       : std_logic;
195
signal pcii_ad  : std_logic_vector(31 downto 0);
196
signal pcii_cbe         : std_logic_vector(3 downto 0);
197
signal pcii_frame       : std_logic;
198
signal pcii_irdy   : std_logic;
199
signal pcii_trdy   : std_logic;
200
signal pcii_devsel : std_logic;
201
signal pcii_stop   : std_logic;
202
signal pcii_perr   : std_logic;
203
signal pcii_par         : std_logic;
204
signal pcii_host   : std_logic;
205
signal pcio_vaden   : std_logic_vector(31 downto 0);
206
signal pcio_cbeen   : std_logic_vector(3 downto 0);
207
signal pcio_frameen : std_logic;
208
signal pcio_irdyen  : std_logic;
209
signal pcio_trdyen  : std_logic;
210
signal pcio_devselen:  std_logic;
211
signal pcio_stopen : std_logic;
212
signal pcio_perren : std_logic;
213
signal pcio_paren       : std_logic;
214
signal pcio_reqen       : std_logic;
215
signal pcio_locken : std_logic;
216
signal pcio_req    : std_logic;
217
signal pcio_ad  : std_logic_vector(31 downto 0);
218
signal pcio_cbe : std_logic_vector(3 downto 0);
219
signal pcio_frame  : std_logic;
220
signal pcio_irdy   : std_logic;
221
signal pcio_trdy   : std_logic;
222
signal pcio_devsel : std_logic;
223
signal pcio_stop   : std_logic;
224
signal pcio_perr   : std_logic;
225
signal pcio_par    : std_logic;
226
signal pcii_arb_req: std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
227
signal pcio_arb_gnt: std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
228
 
229
signal ethi_mdio_i : std_logic;         -- ethernet PHY interface
230
signal etho_mdio_o : std_logic;
231
signal etho_mdio_oe: std_logic;
232
signal ethi_tx_clk : std_logic;
233
signal ethi_rx_clk : std_logic;
234
signal ethi_rxd    : std_logic_vector(3 downto 0);
235
signal ethi_rx_dv  : std_logic;
236
signal ethi_rx_er  : std_logic;
237
signal ethi_rx_col : std_logic;
238
signal ethi_rx_crs : std_logic;
239
signal etho_txd    : std_logic_vector(3 downto 0);
240
signal etho_tx_en  : std_logic;
241
signal etho_tx_er  : std_logic;
242
signal etho_mdc    : std_logic;
243
signal gnd         : std_logic_vector(3 downto 0);
244
 
245
signal ltck, ltms, ltdi, ltrst, ltdo : std_logic;
246
signal lwritefb : std_logic;
247
 
248
begin
249
 
250
  gnd <= (others => '0');
251
  sdcke <= (others => '1');
252
  pads0 : entity work.pads
253
    generic map (padtech)
254
    port map (
255
      resetn, clk, errorn, address, data, cb, sdclk, sdcsn,
256
      sdwen, sdrasn, sdcasn, sddqm, dsutx, dsurx,
257
      dsuen, dsubre, dsuact, txd1, rxd1,
258
      ramsn, ramoen, rwen, oen, writen, read, iosn,
259
      romsn, brdyn, bexcn, wdogn, gpio,
260
      emdio, etx_clk, erx_clk, erxd, erx_dv, erx_er,
261
      erx_col, erx_crs, etxd, etx_en, etx_er, emdc,
262
 
263
      pci_rst, pci_clk, pci_gnt, pci_idsel, pci_ad, pci_cbe,
264
      pci_frame, pci_irdy, pci_trdy, pci_devsel, pci_stop, pci_perr,
265
      pci_par, pci_req, pci_host, pci_arb_req, pci_arb_gnt,
266
      can_txd, can_rxd,
267
--      spw_clk, spw_rxd, spw_rxs, spw_txd, spw_txs, 
268
      gnd(0), gnd(CFG_SPW_NUM-1 downto 0), gnd(CFG_SPW_NUM-1 downto 0), open, open,
269
--      tck, tms, tdi, tdo, trst, test,
270
      gnd(0), gnd(0), gnd(0), gnd(0), gnd(0), gnd(0),
271
      lresetn, lclk, lerrorn, laddress, datain,
272
      dataout, dataen, cbin, cbout, cben, lsdclk, lsdcsn,
273
      lsdwen, lsdrasn, lsdcasn, lsddqm, ldsutx, ldsurx,
274
      ldsuen, ldsubre, ldsuact, ltxd1, lrxd1,
275
      lramsn, lramoen, lrwen, loen, lwriten, lread, liosn,
276
      lromsn, lbrdyn, lbexcn, lwdogn, gpioin, gpioout, gpioen, lwritefb,
277
 
278
 
279
      ethi_mdio_i, etho_mdio_o, etho_mdio_oe, ethi_tx_clk, ethi_rx_clk, ethi_rxd,
280
      ethi_rx_dv, ethi_rx_er, ethi_rx_col, ethi_rx_crs, etho_txd, etho_tx_en,
281
      etho_tx_er, etho_mdc,
282
 
283
      lpciclk, pcii_rst, pcii_gnt, pcii_idsel, pcii_ad, pcii_cbe, pcii_frame,
284
      pcii_irdy, pcii_trdy, pcii_devsel, pcii_stop, pcii_perr, pcii_par, pcii_host,
285
      pcio_vaden, pcio_cbeen, pcio_frameen, pcio_irdyen, pcio_trdyen, pcio_devselen,
286
      pcio_stopen, pcio_perren, pcio_paren, pcio_reqen, pcio_locken, pcio_req,
287
      pcio_ad, pcio_cbe, pcio_frame, pcio_irdy, pcio_trdy, pcio_devsel, pcio_stop,
288
      pcio_perr, pcio_par, pcii_arb_req, pcio_arb_gnt, can_ltx, can_lrx,
289
--      lspw_clk, lspw_rxd, lspw_rxs, lspw_txd, lspw_txs, 
290
      open, open, open, gnd(CFG_SPW_NUM-1 downto 0), gnd(CFG_SPW_NUM-1 downto 0),
291
--      ltck, ltms, ltdi, ltdo, ltest);
292
      open, open, open, gnd(0), open, open);
293
 
294
  core0 : entity work.core
295
    generic map (fabtech, memtech, padtech, clktech, disas, dbguart, pclow)
296
    port map (lresetn, lclk, lerrorn, laddress, datain,
297
      dataout, dataen, cbin, cbout, cben, lsdclk, lsdcsn,
298
      lsdwen, lsdrasn, lsdcasn, lsddqm, ldsutx, ldsurx,
299
      ldsuen, ldsubre, ldsuact, ltxd1, lrxd1,
300
      lramsn, lramoen, lrwen, loen, lwriten, lread, liosn,
301
      lromsn, lbrdyn, lbexcn, lwdogn, gpioin, gpioout, gpioen, lwritefb,
302
 
303
 
304
      ethi_mdio_i, etho_mdio_o, etho_mdio_oe, ethi_tx_clk, ethi_rx_clk, ethi_rxd,
305
      ethi_rx_dv, ethi_rx_er, ethi_rx_col, ethi_rx_crs, etho_txd, etho_tx_en,
306
      etho_tx_er, etho_mdc,
307
 
308
      lpciclk, pcii_rst, pcii_gnt, pcii_idsel, pcii_ad, pcii_cbe, pcii_frame,
309
      pcii_irdy, pcii_trdy, pcii_devsel, pcii_stop, pcii_perr, pcii_par, pcii_host,
310
      pcio_vaden, pcio_cbeen, pcio_frameen, pcio_irdyen, pcio_trdyen, pcio_devselen,
311
      pcio_stopen, pcio_perren, pcio_paren, pcio_reqen, pcio_locken, pcio_req,
312
      pcio_ad, pcio_cbe, pcio_frame, pcio_irdy, pcio_trdy, pcio_devsel, pcio_stop,
313
      pcio_perr, pcio_par, pcii_arb_req, pcio_arb_gnt, can_ltx, can_lrx,
314
      spw_clkl, --lspw_clk, 
315
      lspw_rxd, lspw_rxs, lspw_txd, lspw_txs, lspw_ten,
316
      ltck, ltms, ltdi, ltdo, ltrst, ltest, pllref);
317
 
318
  spw : if CFG_SPW_EN > 0 generate
319
   spw_clk_pad : clkpad_ds generic map (padtech, lvds, x25v)
320
        port map (spw_clkp, spw_clkn, spw_clkl);
321
   swloop : for i in 0 to CFG_SPW_NUM-1 generate
322
     spw_rxd_pad : inpad_ds generic map (padtech, lvds, x25v)
323
         port map (spw_rxdp(i), spw_rxdn(i), lspw_rxd(i));
324
     spw_rxs_pad : inpad_ds generic map (padtech, lvds, x25v)
325
         port map (spw_rxsp(i), spw_rxsn(i), lspw_rxs(i));
326
     spw_txd_pad : outpad_ds generic map (padtech, lvds, x25v)
327
         port map (spw_txdp(i), spw_txdn(i), lspw_txd(i), gnd(0));
328
     spw_txs_pad : outpad_ds generic map (padtech, lvds, x25v)
329
         port map (spw_txsp(i), spw_txsn(i), lspw_txs(i), gnd(0));
330
   end generate;
331
--   spw_clk_gen: clkmul_virtex2 generic map (4, 2)
332
--   port map (lresetn, spw_clkl, lspw_clk, open);
333
  end generate;
334
 
335
end;

powered by: WebSVN 2.1.0

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