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

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [sparc/] [leon_eth.vhd] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
 
2
 
3
 
4
 
5
----------------------------------------------------------------------------
6
--  This file is a part of the LEON VHDL model
7
--  Copyright (C) 1999  European Space Agency (ESA)
8
--
9
--  This library is free software; you can redistribute it and/or
10
--  modify it under the terms of the GNU Lesser General Public
11
--  License as published by the Free Software Foundation; either
12
--  version 2 of the License, or (at your option) any later version.
13
--
14
--  See the file COPYING.LGPL for the full details of the license.
15
 
16
 
17
-----------------------------------------------------------------------------
18
-- Entity:      leon
19
-- File:        leon.vhd
20
-- Author:      Jiri Gaisler - ESA/ESTEC
21
-- Description: Complete processor
22
------------------------------------------------------------------------------
23
 
24
library IEEE;
25
use IEEE.std_logic_1164.all;
26
use work.leon_target.all;
27
use work.leon_config.all;
28
use work.leon_iface.all;
29
use work.tech_map.all;
30
-- pragma translate_off
31
use work.debug.all;
32
-- pragma translate_on
33
 
34
entity leon_eth is
35
  port (
36
    resetn   : in    std_logic;                         -- system signals
37
    clk      : in    std_logic;
38
    pllref   : in    std_logic;
39
    plllock  : out   std_logic;
40
 
41
    errorn   : out   std_logic;
42
    address  : out   std_logic_vector(27 downto 0);      -- memory bus
43
 
44
    data     : inout std_logic_vector(31 downto 0);
45
 
46
    ramsn    : out   std_logic_vector(4 downto 0);
47
    ramoen   : out   std_logic_vector(4 downto 0);
48
    rwen     : inout std_logic_vector(3 downto 0);
49
    romsn    : out   std_logic_vector(1 downto 0);
50
    iosn     : out   std_logic;
51
    oen      : out   std_logic;
52
    read     : out   std_logic;
53
    writen   : inout std_logic;
54
 
55
    brdyn    : in    std_logic;
56
    bexcn    : in    std_logic;
57
 
58
-- sdram i/f
59
    sdcke    : out std_logic_vector ( 1 downto 0);  -- clk en
60
    sdcsn    : out std_logic_vector ( 1 downto 0);  -- chip sel
61
    sdwen    : out std_logic;                       -- write en
62
    sdrasn   : out std_logic;                       -- row addr stb
63
    sdcasn   : out std_logic;                       -- col addr stb
64
    sddqm    : out std_logic_vector ( 3 downto 0);  -- data i/o mask
65
    sdclk    : out std_logic;                       -- sdram clk output
66
 
67
    pio      : inout std_logic_vector(15 downto 0);      -- I/O port
68
 
69
    wdogn    : out   std_logic;                         -- watchdog output
70
 
71
    dsuen    : in    std_logic;
72
    dsutx    : out   std_logic;
73
    dsurx    : in    std_logic;
74
    dsubre   : in    std_logic;
75
    dsuact   : out   std_logic;
76
 
77
-- ethernet
78
    emdio     : inout std_logic;
79
    etx_clk : in std_logic;
80
    erx_clk : in std_logic;
81
    erxd    : in std_logic_vector(3 downto 0);
82
    erx_dv  : in std_logic;
83
    erx_er  : in std_logic;
84
    erx_col : in std_logic;
85
    erx_crs : in std_logic;
86
 
87
    etxd : out std_logic_vector(3 downto 0);
88
    etx_en : out std_logic;
89
    etx_er : out std_logic;
90
    emdc : out std_logic;
91
 
92
    emddis : out std_logic;
93
    epwrdwn : out std_logic;
94
    ereset : out std_logic;
95
    esleep : out std_logic;
96
    epause : out std_logic;
97
 
98
    test     : in    std_logic
99
  );
100
end;
101
 
102
architecture rtl of leon_eth is
103
 
104
component mcore
105
  port (
106
    resetn   : in  std_logic;
107
    clk      : in  clk_type;
108
    clkn     : in  clk_type;
109
    pciclk   : in  clk_type;
110
    memi     : in  memory_in_type;
111
    memo     : out memory_out_type;
112
    ioi      : in  io_in_type;
113
    ioo      : out io_out_type;
114
    pcii     : in  pci_in_type;
115
    pcio     : out pci_out_type;
116
    dsi      : in  dsuif_in_type;
117
    dso      : out dsuif_out_type;
118
    sdo      : out sdram_out_type;
119
    ethi     : in  eth_in_type;
120
    etho     : out eth_out_type;
121
    cgo      : in  clkgen_out_type;
122
 
123
    test     : in    std_logic
124
);
125
end component;
126
 
127
signal vcc, gnd, clko, sdclkl, resetno : std_logic;
128
signal clkm, clkn, pciclk : clk_type;
129
signal memi     : memory_in_type;
130
signal memo     : memory_out_type;
131
signal ioi      : io_in_type;
132
signal ioo      : io_out_type;
133
signal pcii     : pci_in_type;
134
signal pcio     : pci_out_type;
135
signal dsi      : dsuif_in_type;
136
signal dso      : dsuif_out_type;
137
signal sdo      : sdram_out_type;
138
signal ethi     : eth_in_type;
139
signal etho     : eth_out_type;
140
signal cgi      : clkgen_in_type;
141
signal cgo      : clkgen_out_type;
142
 
143
--attribute keep_hierarchy : String;
144
--attribute keep_hierarchy of rtl : architecture is "yes";
145
 
146
begin
147
 
148
  gnd <= '0'; vcc <= '1';
149
  cgi.pllctrl <= "00"; cgi.pllrst <= resetno; cgi.pllref <= pllref;
150
 
151
-- main processor core
152
 
153
  mcore0  : mcore
154
  port map (
155
    resetn => resetno, clk => clkm, clkn => clkn, pciclk => pciclk,
156
    memi => memi, memo => memo, ioi => ioi, ioo => ioo,
157
    pcii => pcii, pcio => pcio, dsi => dsi, dso => dso, sdo => sdo,
158
    ethi => ethi, etho => etho, cgo => cgo, test => test);
159
 
160
-- clock generator
161
 
162
  clkgen0 : clkgen
163
  port map ( clko, clko, clkm, clkn, sdclkl, pciclk, cgi, cgo);
164
 
165
-- pads
166
 
167
--  clk_pad   : inpad port map (clk, clko);     -- clock
168
  clko <= clk;                                  -- avoid buffering during synthesis
169
  reset_pad   : smpad port map (resetn, resetno);       -- reset
170
  brdyn_pad   : inpad port map (brdyn, memi.brdyn);     -- bus ready
171
  bexcn_pad   : inpad port map (bexcn, memi.bexcn);     -- bus exception
172
 
173
 
174
    error_pad   : outpad generic map (2) port map (ioo.errorn, errorn); -- cpu error mode
175
 
176
    d_pads: for i in 0 to 31 generate                    -- data bus
177
      d_pad : iopad generic map (3) port map (memo.data(i), memo.bdrive((31-i)/8), memi.data(i), data(i));
178
    end generate;
179
 
180
 
181
    pio_pads : for i in 0 to 15 generate         -- parallel I/O port
182
      pio_pad : smiopad generic map (2) port map (ioo.piol(i), ioo.piodir(i), ioi.piol(i), pio(i));
183
    end generate;
184
 
185
    rwen_pads : for i in 0 to 3 generate                 -- ram write strobe
186
      rwen_pad : iopad generic map (2) port map (memo.wrn(i), gnd, memi.wrn(i), rwen(i));
187
    end generate;
188
 
189
                                                        -- I/O write strobe
190
    writen_pad : iopad generic map (2) port map (memo.writen, gnd, memi.writen, writen);
191
 
192
    a_pads: for i in 0 to 27 generate                    -- memory address
193
      a_pad : outpad generic map (3) port map (memo.address(i), address(i));
194
    end generate;
195
 
196
    ramsn_pads : for i in 0 to 4 generate                -- ram oen/rasn
197
      ramsn_pad : outpad generic map (2) port map (memo.ramsn(i), ramsn(i));
198
    end generate;
199
 
200
    ramoen_pads : for i in 0 to 4 generate               -- ram chip select
201
      ramoen_pad : outpad generic map (2) port map (memo.ramoen(i), ramoen(i));
202
    end generate;
203
 
204
    romsn_pads : for i in 0 to 1 generate                        -- rom chip select
205
      romsn_pad : outpad generic map (2) port map (memo.romsn(i), romsn(i));
206
    end generate;
207
 
208
    read_pad : outpad generic map (2) port map (memo.read, read);       -- memory read
209
    oen_pad  : outpad generic map (2) port map (memo.oen, oen); -- memory oen
210
    iosn_pad : outpad generic map (2) port map (memo.iosn, iosn);       -- I/O select
211
 
212
    wd : if WDOGEN generate
213
      wdogn_pad : odpad generic map (2) port map (ioo.wdog, wdogn);     -- watchdog output
214
    end generate;
215
 
216
    ds : if DEBUG_UNIT generate
217
      dsuen_pad   : inpad port map (dsuen, dsi.dsui.dsuen);     -- DSU enable
218
      dsutx_pad   : outpad generic map (1) port map (dso.dcomo.dsutx, dsutx);
219
      dsurx_pad   : inpad port map (dsurx, dsi.dcomi.dsurx);    -- DSU receive data
220
      dsubre_pad  : inpad port map (dsubre, dsi.dsui.dsubre);   -- DSU break
221
      dsuact_pad  : outpad generic map (1) port map (dso.dsuo.dsuact, dsuact);
222
    end generate;
223
 
224
    sd : if SDRAMEN generate
225
      cs_pads: for i in 0 to 1 generate
226
        sdcke_pad  : outpad generic map (2) port map (sdo.sdcke(i), sdcke(i));
227
        sdcsn_pad  : outpad generic map (2) port map (sdo.sdcsn(i), sdcsn(i));
228
      end generate;
229
      sdwen_pad  : outpad generic map (2) port map (sdo.sdwen, sdwen);
230
      sdrasn_pad : outpad generic map (2) port map (sdo.rasn, sdrasn);
231
      sdcasn_pad : outpad generic map (2) port map (sdo.casn, sdcasn);
232
--      sdclk_pad : outpad generic map (2) port map (sdclkl, sdclk);
233
      sdclk <= sdclkl;  -- disable pad for simulation
234
      dqm_pads: for i in 0 to 3 generate
235
        sddqm_pad   : outpad generic map (2) port map (sdo.dqm(i), sddqm(i));
236
      end generate;
237
    end generate;
238
 
239
    eth_pads : if ETHEN generate
240
      emdio_pad : iopad generic map (2) port map (etho.mdio_o, etho.mdio_oe, ethi.mdio_i, emdio);
241
      etx_clk_pad   : inpad port map (etx_clk, ethi.tx_clk);
242
      erx_clk_pad   : inpad port map (erx_clk, ethi.rx_clk);
243
      erxd_pads: for i in 0 to 3 generate                        -- data bus
244
        erxd_pad   : inpad port map (erxd(i), ethi.rxd(i));
245
      end generate;
246
      erx_dv_pad   : inpad port map (erx_dv, ethi.rx_dv);
247
      erx_er_pad   : inpad port map (erx_er, ethi.rx_er);
248
      erx_col_pad   : inpad port map (erx_col, ethi.rx_col);
249
      erx_crs_pad   : inpad port map (erx_crs, ethi.rx_crs);
250
      etxd_pads: for i in 0 to 3 generate                        -- data bus
251
        etxd_pad   : outpad generic map (1) port map (etho.txd(i), etxd(i));
252
      end generate;
253
      etx_en_pad   : outpad generic map (1) port map (etho.tx_en, etx_en);
254
      etx_er_pad   : outpad generic map (1) port map (etho.tx_er, etx_er);
255
      emdc_pad   : outpad generic map (1) port map (etho.mdc, emdc);
256
 
257
      emddis_pad   : outpad generic map (1) port map (vcc, emddis);
258
      epwrdwn_pad   : outpad generic map (1) port map (gnd, epwrdwn);
259
      ereset_pad   : outpad generic map (1) port map (vcc, ereset);
260
      esleep_pad   : outpad generic map (1) port map (gnd, esleep);
261
      epause_pad   : outpad generic map (1) port map (gnd, epause);
262
    end generate;
263
 
264
    pl : if TARGET_CLK /= gen generate
265
      plllock_pad : outpad generic map (2) port map (cgo.clklock, plllock);
266
    end generate;
267
 
268
end ;
269
 

powered by: WebSVN 2.1.0

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