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-jopdesign-ep1c12/] [cycore12.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
--
2
--      cycore12_top.vhd
3
--
4
--      top level for cycore borad
5
--
6
--
7
 
8
 
9
library ieee;
10
use ieee.std_logic_1164.all;
11
use ieee.numeric_std.all;
12
 
13
 
14
entity cycore12 is
15
 
16
generic (
17
        exta_width      : integer := 3;         -- length of exta part in JOP microcode
18
        io_addr_bits    : integer := 7; -- address bits of internal io
19
        ram_cnt         : integer := 2;         -- clock cycles for external ram
20
--      rom_cnt         : integer := 3;         -- clock cycles for external rom OK for 20 MHz
21
        rom_cnt         : integer := 15;        -- clock cycles for external rom for 100 MHz
22
        jpc_width       : integer := 12;        -- address bits of java bytecode pc = cache size
23
        block_bits      : integer := 4          -- 2*block_bits is number of cache blocks
24
);
25
 
26
port (
27
        clk             : in std_logic;
28
--
29
--      serial interface
30
--
31
        ser_txd                 : out std_logic;
32
        ser_rxd                 : in std_logic;
33
        ser_ncts                : in std_logic;
34
        ser_nrts                : out std_logic;
35
 
36
--
37
--      watchdog
38
--
39
        wd              : out std_logic;
40
        freeio  : out std_logic;
41
 
42
--
43
--      two ram banks
44
--
45
        rama_a          : out std_logic_vector(17 downto 0);
46
        rama_d          : inout std_logic_vector(15 downto 0);
47
        rama_ncs        : out std_logic;
48
        rama_noe        : out std_logic;
49
        rama_nlb        : out std_logic;
50
        rama_nub        : out std_logic;
51
        rama_nwe        : out std_logic;
52
        ramb_a          : out std_logic_vector(17 downto 0);
53
        ramb_d          : inout std_logic_vector(15 downto 0);
54
        ramb_ncs        : out std_logic;
55
        ramb_noe        : out std_logic;
56
        ramb_nlb        : out std_logic;
57
        ramb_nub        : out std_logic;
58
        ramb_nwe        : out std_logic;
59
 
60
--
61
--      config/program flash and big nand flash
62
--
63
        fl_a    : out std_logic_vector(18 downto 0);
64
        fl_d    : inout std_logic_vector(7 downto 0);
65
        fl_ncs  : out std_logic;
66
        fl_ncsb : out std_logic;
67
        fl_noe  : out std_logic;
68
        fl_nwe  : out std_logic;
69
        fl_rdy  : in std_logic;
70
 
71
--
72
--      I/O pins of board
73
--
74
        io_b    : inout std_logic_vector(10 downto 1);
75
        io_l    : inout std_logic_vector(20 downto 1);
76
        io_r    : inout std_logic_vector(20 downto 1);
77
        io_t    : inout std_logic_vector(6 downto 1)
78
);
79
end cycore12;
80
 
81
architecture rtl of cycore12 is
82
 
83
--
84
--      components:
85
--
86
 
87
component pll is
88
generic (multiply_by : natural; divide_by : natural);
89
port (
90
        inclk0          : in std_logic;
91
        c0                      : out std_logic
92
);
93
end component;
94
 
95
 
96
component leon3mp is
97
  port (
98
    resetn      : in  std_ulogic;
99
    clk         : in  std_ulogic;
100
    pllref      : in  std_ulogic;
101
    errorn      : out std_ulogic;
102
    address     : out std_logic_vector(27 downto 0);
103
    data        : inout std_logic_vector(31 downto 0);
104
    sa          : out std_logic_vector(14 downto 0);
105
    sd          : inout std_logic_vector(63 downto 0);
106
    sdclk       : out std_ulogic;
107
    sdcke       : out std_logic_vector (1 downto 0);    -- sdram clock enable
108
    sdcsn       : out std_logic_vector (1 downto 0);    -- sdram chip select
109
    sdwen       : out std_ulogic;                       -- sdram write enable
110
    sdrasn      : out std_ulogic;                       -- sdram ras
111
    sdcasn      : out std_ulogic;                       -- sdram cas
112
    sddqm       : out std_logic_vector (7 downto 0);    -- sdram dqm
113
    dsutx       : out std_ulogic;                       -- DSU tx data
114
    dsurx       : in  std_ulogic;                       -- DSU rx data
115
    dsuen       : in std_ulogic;
116
    dsubre      : in std_ulogic;
117
    dsuact      : out std_ulogic;
118
    txd1        : out std_ulogic;                       -- UART1 tx data
119
    rxd1        : in  std_ulogic;                       -- UART1 rx data
120
    txd2        : out std_ulogic;                       -- UART2 tx data
121
    rxd2        : in  std_ulogic;                       -- UART2 rx data
122
    ramsn       : out std_logic_vector (4 downto 0);
123
    ramoen      : out std_logic_vector (4 downto 0);
124
    rwen        : out std_logic_vector (3 downto 0);
125
    oen         : out std_ulogic;
126
    writen      : out std_ulogic;
127
    read        : out std_ulogic;
128
    iosn        : out std_ulogic;
129
    romsn       : out std_logic_vector (1 downto 0);
130
    gpio        : inout std_logic_vector(7 downto 0);    -- I/O port
131
 
132
    emdio       : inout std_logic;              -- ethernet PHY interface
133
    etx_clk     : in std_ulogic;
134
    erx_clk     : in std_ulogic;
135
    erxd        : in std_logic_vector(3 downto 0);
136
    erx_dv      : in std_ulogic;
137
    erx_er      : in std_ulogic;
138
    erx_col     : in std_ulogic;
139
    erx_crs     : in std_ulogic;
140
    etxd        : out std_logic_vector(3 downto 0);
141
    etx_en      : out std_ulogic;
142
    etx_er      : out std_ulogic;
143
    emdc        : out std_ulogic;
144
 
145
    emddis      : out std_logic;
146
    epwrdwn     : out std_ulogic;
147
    ereset      : out std_ulogic;
148
    esleep      : out std_ulogic;
149
    epause      : out std_ulogic;
150
 
151
    pci_rst     : inout std_ulogic;             -- PCI bus
152
    pci_clk     : in std_ulogic;
153
    pci_gnt     : in std_ulogic;
154
    pci_idsel   : in std_ulogic;
155
    pci_lock    : inout std_ulogic;
156
    pci_ad      : inout std_logic_vector(31 downto 0);
157
    pci_cbe     : inout std_logic_vector(3 downto 0);
158
    pci_frame   : inout std_ulogic;
159
    pci_irdy    : inout std_ulogic;
160
    pci_trdy    : inout std_ulogic;
161
    pci_devsel  : inout std_ulogic;
162
    pci_stop    : inout std_ulogic;
163
    pci_perr    : inout std_ulogic;
164
    pci_par     : inout std_ulogic;
165
    pci_req     : inout std_ulogic;
166
    pci_serr    : inout std_ulogic;
167
    pci_host    : in std_ulogic;
168
    pci_66      : in std_ulogic;
169
    pci_arb_req : in  std_logic_vector(0 to 3);
170
    pci_arb_gnt : out std_logic_vector(0 to 3);
171
 
172
    can_txd     : out std_ulogic;
173
    can_rxd     : in  std_ulogic;
174
    can_stb     : out std_ulogic;
175
 
176
    spw_clk     : in  std_ulogic;
177
    spw_rxd     : in  std_logic_vector(0 to 2);
178
    spw_rxdn    : in  std_logic_vector(0 to 2);
179
    spw_rxs     : in  std_logic_vector(0 to 2);
180
    spw_rxsn    : in  std_logic_vector(0 to 2);
181
    spw_txd     : out std_logic_vector(0 to 2);
182
    spw_txdn    : out std_logic_vector(0 to 2);
183
    spw_txs     : out std_logic_vector(0 to 2);
184
    spw_txsn    : out std_logic_vector(0 to 2)
185
 
186
        );
187
end component;
188
 
189
--
190
--      Signals
191
--
192
        signal clk_int                  : std_logic;
193
 
194
        signal int_res                  : std_logic;
195
        signal not_int_res              : std_logic;
196
        signal res_cnt                  : unsigned(2 downto 0) := "000"; -- for the simulation
197
        signal ramsn, ramoen            : std_logic_vector(4 downto 0);
198
 
199
        signal wd_out                   : std_logic;
200
 
201
        -- for generation of internal reset
202
        attribute altera_attribute : string;
203
        attribute altera_attribute of res_cnt : signal is "POWER_UP_LEVEL=LOW";
204
 
205
--
206
--      LEON3 signals
207
--
208
    signal address      : std_logic_vector(27 downto 0);
209
    signal data : std_logic_vector(31 downto 0);
210
 
211
        signal ram_dout_en      : std_logic;
212
        signal ram_ncs  : std_logic;
213
        signal ram_nwe  : std_logic;
214
        signal ram_noe  : std_logic;
215
 
216
    signal      oen     : std_logic;
217
    signal      writen  : std_logic;
218
begin
219
 
220
--
221
--      intern reset
222
--      no extern reset, epm7064 has too less pins
223
--
224
 
225
process(clk_int)
226
begin
227
        if rising_edge(clk_int) then
228
                if (res_cnt/="111") then
229
                        res_cnt <= res_cnt+1;
230
                end if;
231
 
232
                int_res <= not res_cnt(0) or not res_cnt(1) or not res_cnt(2);
233
        end if;
234
end process;
235
 
236
  not_int_res <= not int_res;
237
--
238
--      components
239
--
240
--      pll_inst : pll generic map(
241
--              multiply_by => pll_mult,
242
--              divide_by => pll_div
243
--      )
244
--      port map (
245
--              inclk0   => clk,
246
--              c0       => clk_int
247
--      );
248
 clk_int <= clk;
249
 
250
        -- sp_ov indicates stack overflow
251
        -- We can use the wd LED
252
        -- wd <= sp_ov;
253
 
254
        cmp_leon: leon3mp
255
                port map (
256
 
257
    resetn      => not_int_res,
258
    clk         => clk_int,
259
    pllref      => '0',
260
    errorn      => open,
261
    address     => address,
262
    data(15 downto 0)    => rama_d,
263
    data(31 downto 16)  => ramb_d,
264
    sa          => open,
265
    sd          => open,
266
    sdclk       => open,
267
    sdcke       => open,
268
    sdcsn       => open,
269
    sdwen       => open,
270
    sdrasn      => open,
271
    sdcasn      => open,
272
    sddqm       => open,
273
    dsutx       => ser_txd,
274
    dsurx       => ser_rxd,
275
    dsuen       => '1',
276
    dsubre      => '0',
277
    dsuact      => open,
278
-- unused pins to not optimize serial line away
279
    txd1        => wd,
280
    rxd1        => fl_rdy,
281
 
282
    txd2        => open,
283
    rxd2        => '0',
284
    ramsn       => ramsn,
285
    ramoen      => ramoen,
286
    rwen        => open,
287
    oen         => open,
288
    writen      => ram_nwe,
289
    read        => open,
290
    iosn        => open,
291
    romsn       => open,
292
    gpio        => open,
293
 
294
    emdio       => open,
295
    etx_clk     => '0',
296
    erx_clk     => '0',
297
    erxd        => (others => '0'),
298
    erx_dv      => '0',
299
    erx_er      => '0',
300
    erx_col     => '0',
301
    erx_crs     => '0',
302
    etxd        => open,
303
    etx_en      => open,
304
    etx_er      => open,
305
    emdc        => open,
306
 
307
    emddis      => open,
308
    epwrdwn     => open,
309
    ereset      => open,
310
    esleep      => open,
311
    epause      => open,
312
 
313
    pci_rst     => open,
314
    pci_clk     => '0',
315
    pci_gnt     => '0',
316
    pci_idsel   => '0',
317
    pci_lock    => open,
318
    pci_ad      => open,
319
    pci_cbe     => open,
320
    pci_frame   => open,
321
    pci_irdy    => open,
322
    pci_trdy    => open,
323
    pci_devsel  => open,
324
    pci_stop    => open,
325
    pci_perr    => open,
326
    pci_par     => open,
327
    pci_req     => open,
328
    pci_serr    => open,
329
    pci_host    => '0',
330
    pci_66      => '0',
331
    pci_arb_req => (others => '0'),
332
    pci_arb_gnt => open,
333
 
334
    can_txd     => open,
335
    can_rxd     => '0',
336
    can_stb     => open,
337
 
338
    spw_clk     => '0',
339
    spw_rxd     => (others => '0'),
340
    spw_rxdn    => (others => '0'),
341
    spw_rxs     => (others => '0'),
342
    spw_rxsn    => (others => '0'),
343
    spw_txd     => open,
344
    spw_txdn    => open,
345
    spw_txs     => open,
346
    spw_txsn    => open
347
 
348
        );
349
 
350
        ser_nrts <= '0';
351
        ram_ncs <= ramsn(0);
352
        ram_noe <= ramoen(0);
353
 
354
        rama_a <= address(19 downto 2);
355
        rama_ncs <= ram_ncs;
356
        rama_noe <= ram_noe;
357
        rama_nwe <= ram_nwe;
358
        rama_nlb <= '0';
359
        rama_nub <= '0';
360
 
361
        ramb_a <= address(19 downto 2);
362
        ramb_ncs <= ram_ncs;
363
        ramb_noe <= ram_noe;
364
        ramb_nwe <= ram_nwe;
365
        ramb_nlb <= '0';
366
        ramb_nub <= '0';
367
 
368
        freeio <= 'Z';
369
 
370
        fl_ncs <= '1';
371
        fl_ncsb <= '1';
372
end rtl;

powered by: WebSVN 2.1.0

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