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

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [sparc/] [leon.vhd] - Blame information for rev 4

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.peri_io_comp.all;
30
use work.peri_mem_comp.all;
31
use work.tech_map.all;
32
-- pragma translate_off
33
use work.debug.all;
34
-- pragma translate_on
35
 
36
entity leon is
37
  port (
38
    resetn   : in    std_logic;                         -- system signals
39
    clk      : in    std_logic;
40
    pllref   : in    std_logic;
41
    plllock  : out   std_logic;
42
 
43
    errorn   : out   std_logic;
44
    address  : out   std_logic_vector(27 downto 0);      -- memory bus
45
 
46
    data     : inout std_logic_vector(31 downto 0);
47
 
48
    ramsn    : out   std_logic_vector(4 downto 0);
49
    ramoen   : out   std_logic_vector(4 downto 0);
50
    rwen     : inout std_logic_vector(3 downto 0);
51
    romsn    : out   std_logic_vector(1 downto 0);
52
    iosn     : out   std_logic;
53
    oen      : out   std_logic;
54
    read     : out   std_logic;
55
    writen   : inout std_logic;
56
 
57
    brdyn    : in    std_logic;
58
    bexcn    : in    std_logic;
59
 
60
-- sdram i/f
61
    sdcke    : out std_logic_vector ( 1 downto 0);  -- clk en
62
    sdcsn    : out std_logic_vector ( 1 downto 0);  -- chip sel
63
    sdwen    : out std_logic;                       -- write en
64
    sdrasn   : out std_logic;                       -- row addr stb
65
    sdcasn   : out std_logic;                       -- col addr stb
66
    sddqm    : out std_logic_vector ( 3 downto 0);  -- data i/o mask
67
    sdclk    : out std_logic;                       -- sdram clk output
68
 
69
    pio      : inout std_logic_vector(15 downto 0);      -- I/O port
70
 
71
    wdogn    : out   std_logic;                         -- watchdog output
72
 
73
    dsuen    : in    std_logic;
74
    dsutx    : out   std_logic;
75
    dsurx    : in    std_logic;
76
    dsubre   : in    std_logic;
77
    dsuact   : out   std_logic;
78
    test     : in    std_logic
79
  );
80
end;
81
 
82
architecture rtl of leon is
83
 
84
component mcore
85
  port (
86
    resetn   : in  std_logic;
87
    clk      : in  clk_type;
88
    clkn     : in  clk_type;
89
    pciclk   : in  clk_type;
90
    memi     : in  memory_in_type;
91
    memo     : out memory_out_type;
92
    ioi      : in  io_in_type;
93
    ioo      : out io_out_type;
94
    pcii     : in  pci_in_type;
95
    pcio     : out pci_out_type;
96
    dsi      : in  dsuif_in_type;
97
    dso      : out dsuif_out_type;
98
    sdo      : out sdram_out_type;
99
    ethi     : in  eth_in_type;
100
    etho     : out eth_out_type;
101
    cgo      : in  clkgen_out_type;
102
 
103
    test     : in    std_logic
104
);
105
end component;
106
 
107
signal gnd, clko, sdclkl, resetno : std_logic;
108
signal clkm, clkn, pciclk : clk_type;
109
signal memi     : memory_in_type;
110
signal memo     : memory_out_type;
111
signal ioi      : io_in_type;
112
signal ioo      : io_out_type;
113
signal pcii     : pci_in_type;
114
signal pcio     : pci_out_type;
115
signal dsi      : dsuif_in_type;
116
signal dso      : dsuif_out_type;
117
signal sdo      : sdram_out_type;
118
signal ethi     : eth_in_type;
119
signal etho     : eth_out_type;
120
signal cgi      : clkgen_in_type;
121
signal cgo      : clkgen_out_type;
122
 
123
--attribute keep_hierarchy : String;
124
--attribute keep_hierarchy of rtl : architecture is "yes";
125
 
126
begin
127
 
128
  gnd <= '0';
129
  cgi.pllctrl <= "00"; cgi.pllrst <= resetno; cgi.pllref <= pllref;
130
 
131
-- main processor core
132
 
133
  mcore0  : mcore
134
  port map (
135
    resetn => resetno, clk => clkm, clkn => clkn, pciclk => pciclk,
136
    memi => memi, memo => memo, ioi => ioi, ioo => ioo,
137
    pcii => pcii, pcio => pcio, dsi => dsi, dso => dso, sdo => sdo,
138
    ethi => ethi, etho => etho, cgo => cgo, test => test);
139
 
140
-- clock generator
141
 
142
  clkgen0 : clkgen
143
  port map ( clko, clko, clkm, clkn, sdclkl, pciclk, cgi, cgo);
144
 
145
-- pads
146
 
147
--  clk_pad   : inpad port map (clk, clko);     -- clock
148
  clko <= clk;                                  -- avoid buffering during synthesis
149
  reset_pad   : smpad port map (resetn, resetno);       -- reset
150
  brdyn_pad   : inpad port map (brdyn, memi.brdyn);     -- bus ready
151
  bexcn_pad   : inpad port map (bexcn, memi.bexcn);     -- bus exception
152
 
153
 
154
    error_pad   : outpad generic map (2) port map (ioo.errorn, errorn); -- cpu error mode
155
 
156
    d_pads: for i in 0 to 31 generate                    -- data bus
157
      d_pad : iopad generic map (3) port map (memo.data(i), memo.bdrive((31-i)/8), memi.data(i), data(i));
158
    end generate;
159
 
160
 
161
    pio_pads : for i in 0 to 15 generate         -- parallel I/O port
162
      pio_pad : smiopad generic map (2) port map (ioo.piol(i), ioo.piodir(i), ioi.piol(i), pio(i));
163
    end generate;
164
 
165
    rwen_pads : for i in 0 to 3 generate                 -- ram write strobe
166
      rwen_pad : iopad generic map (2) port map (memo.wrn(i), gnd, memi.wrn(i), rwen(i));
167
    end generate;
168
 
169
                                                        -- I/O write strobe
170
    writen_pad : iopad generic map (2) port map (memo.writen, gnd, memi.writen, writen);
171
 
172
    a_pads: for i in 0 to 27 generate                    -- memory address
173
      a_pad : outpad generic map (3) port map (memo.address(i), address(i));
174
    end generate;
175
 
176
    ramsn_pads : for i in 0 to 4 generate                -- ram oen/rasn
177
      ramsn_pad : outpad generic map (2) port map (memo.ramsn(i), ramsn(i));
178
    end generate;
179
 
180
    ramoen_pads : for i in 0 to 4 generate               -- ram chip select
181
      ramoen_pad : outpad generic map (2) port map (memo.ramoen(i), ramoen(i));
182
    end generate;
183
 
184
    romsn_pads : for i in 0 to 1 generate                        -- rom chip select
185
      romsn_pad : outpad generic map (2) port map (memo.romsn(i), romsn(i));
186
    end generate;
187
 
188
    read_pad : outpad generic map (2) port map (memo.read, read);       -- memory read
189
    oen_pad  : outpad generic map (2) port map (memo.oen, oen); -- memory oen
190
    iosn_pad : outpad generic map (2) port map (memo.iosn, iosn);       -- I/O select
191
 
192
    wd : if WDOGEN generate
193
      wdogn_pad : odpad generic map (2) port map (ioo.wdog, wdogn);     -- watchdog output
194
    end generate;
195
 
196
    ds : if DEBUG_UNIT generate
197
      dsuen_pad   : inpad port map (dsuen, dsi.dsui.dsuen);     -- DSU enable
198
      dsutx_pad   : outpad generic map (1) port map (dso.dcomo.dsutx, dsutx);
199
      dsurx_pad   : inpad port map (dsurx, dsi.dcomi.dsurx);    -- DSU receive data
200
      dsubre_pad  : inpad port map (dsubre, dsi.dsui.dsubre);   -- DSU break
201
      dsuact_pad  : outpad generic map (1) port map (dso.dsuo.dsuact, dsuact);
202
    end generate;
203
 
204
    sd : if SDRAMEN generate
205
      cs_pads: for i in 0 to 1 generate
206
        sdcke_pad  : outpad generic map (2) port map (sdo.sdcke(i), sdcke(i));
207
        sdcsn_pad  : outpad generic map (2) port map (sdo.sdcsn(i), sdcsn(i));
208
      end generate;
209
      sdwen_pad  : outpad generic map (2) port map (sdo.sdwen, sdwen);
210
      sdrasn_pad : outpad generic map (2) port map (sdo.rasn, sdrasn);
211
      sdcasn_pad : outpad generic map (2) port map (sdo.casn, sdcasn);
212
--      sdclk_pad : outpad generic map (2) port map (sdclkl, sdclk);
213
      sdclk <= sdclkl;  -- disable pad for simulation
214
      dqm_pads: for i in 0 to 3 generate
215
        sddqm_pad   : outpad generic map (2) port map (sdo.dqm(i), sddqm(i));
216
      end generate;
217
    end generate;
218
 
219
    pl : if TARGET_CLK /= gen generate
220
      plllock_pad : outpad generic map (2) port map (cgo.clklock, plllock);
221
    end generate;
222
 
223
end ;
224
 

powered by: WebSVN 2.1.0

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