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-asic/] [core.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;
24
use grlib.stdlib.all;
25
library techmap;
26
use techmap.gencomp.all;
27
library gaisler;
28
use gaisler.misc.all;
29
use work.config.all;
30
 
31
entity core is
32
  generic (
33
    fabtech   : integer := CFG_FABTECH;
34
    memtech   : integer := CFG_MEMTECH;
35
    padtech   : integer := CFG_PADTECH;
36
    clktech   : integer := CFG_CLKTECH;
37
    disas     : integer := CFG_DISAS;   -- Enable disassembly to console
38
    dbguart   : integer := CFG_DUART;   -- Print UART on console
39
    pclow     : integer := CFG_PCLOW;
40
    scantest  : integer := CFG_SCAN
41
  );
42
  port (
43
    resetn      : in  std_ulogic;
44
    clksel      : in  std_logic_vector (1 downto 0);
45
    clk         : in  std_ulogic;
46
    errorn      : out std_ulogic;
47
    address     : out std_logic_vector(27 downto 0);
48
    datain      : in std_logic_vector(31 downto 0);
49
    dataout     : out std_logic_vector(31 downto 0);
50
    dataen      : out std_logic_vector(31 downto 0);
51
    cbin        : in std_logic_vector(7 downto 0);
52
    cbout       : out std_logic_vector(7 downto 0);
53
    cben        : out std_logic_vector(7 downto 0);
54
    sdclk       : out std_ulogic;
55
    sdcsn       : out std_logic_vector (1 downto 0);    -- sdram chip select
56
    sdwen       : out std_ulogic;                       -- sdram write enable
57
    sdrasn      : out std_ulogic;                       -- sdram ras
58
    sdcasn      : out std_ulogic;                       -- sdram cas
59
    sddqm       : out std_logic_vector (3 downto 0);    -- sdram dqm
60
    dsutx       : out std_ulogic;                       -- DSU tx data
61
    dsurx       : in  std_ulogic;                       -- DSU rx data
62
    dsuen       : in std_ulogic;
63
    dsubre      : in std_ulogic;
64
    dsuact      : out std_ulogic;
65
    txd1        : out std_ulogic;                       -- UART1 tx data
66
    rxd1        : in  std_ulogic;                       -- UART1 rx data
67
    txd2        : out std_ulogic;                       -- UART2 tx data
68
    rxd2        : in  std_ulogic;                       -- UART2 rx data
69
    ramsn       : out std_logic_vector (4 downto 0);
70
    ramoen      : out std_logic_vector (4 downto 0);
71
    rwen        : out std_logic_vector (3 downto 0);
72
    oen         : out std_ulogic;
73
    writen      : out std_ulogic;
74
    read        : out std_ulogic;
75
    iosn        : out std_ulogic;
76
    romsn       : out std_logic_vector (1 downto 0);
77
    brdyn       : in  std_ulogic;
78
    bexcn       : in  std_ulogic;
79
    wdogn       : out std_ulogic;
80
    gpioin      : in std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);      -- I/O port
81
    gpioout     : out std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);     -- I/O port
82
    gpioen      : out std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);     -- I/O port
83
    prom32      : in  std_ulogic;
84
    promedac    : in  std_ulogic;
85
 
86
    spw_clksel  : in  std_logic_vector (1 downto 0);
87
    spw_clk     : in  std_ulogic;
88
    spw_rxd     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
89
    spw_rxs     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
90
    spw_txd     : out std_logic_vector(0 to CFG_SPW_NUM-1);
91
    spw_txs     : out std_logic_vector(0 to CFG_SPW_NUM-1);
92
    spw_ten     : out std_logic_vector(0 to CFG_SPW_NUM-1);
93
 
94
    lclk2x      : in  std_ulogic;
95
    lclk4x      : in  std_ulogic;
96
    lclkdis     : out std_ulogic;
97
    lclklock    : in  std_ulogic;
98
    lock        : out std_ulogic;
99
 
100
    roen        : in  std_ulogic;
101
    roout       : out std_ulogic;
102
    nandout     : out std_ulogic;
103
 
104
    testen      : in  std_ulogic;
105
    gnd         : out std_ulogic
106
 
107
        );
108
end;
109
 
110
architecture rtl of core is
111
 
112
  constant OEPOL : integer := padoen_polarity(padtech);
113
 
114
  signal lclk, lspw_clk, clklock : std_ulogic;
115
  signal llspw_clk, llclk : std_ulogic;
116
  signal scanen, testrst, testoen : std_ulogic;
117
  signal lgpioen : std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);
118
 
119
begin
120
 
121
  gnd <= '0';
122
 
123
  lclk <= clk     when clksel = "00" else
124
          spw_clk when clksel = "01" else
125
          lclk2x  when clksel = "10" else lclk4x;
126
 
127
  llclk <= clk when (testen = '1') else lclk;
128
 
129
  sdclk <= llclk;
130
 
131
  lspw_clk <= clk when spw_clksel = "00" else
132
          spw_clk when spw_clksel = "01" else
133
          lclk2x  when spw_clksel = "10" else lclk4x;
134
 
135
  llspw_clk <= clk when (testen = '1') else lspw_clk;
136
 
137
  lclkdis <= '1' when (testen = '1') or ((clksel(1) or spw_clksel(1)) = '0')
138
    else '0';
139
 
140
  clklock <= '1' when (testen = '1') or ((clksel(1) or spw_clksel(1)) = '0')
141
    else lclklock;
142
 
143
  lock <= lclklock;
144
 
145
  ringosc0 : ringosc generic map (fabtech) port map (roen, roout);
146
 
147
  scanen <= dsubre when (testen = '1') else '0';
148
  testrst <= dsuen when (testen = '1') else '1';
149
  testoen <= dsurx;
150
 
151
  gpioen <= lgpioen when (testen = '0') else (others => '0') when oepol = 1
152
        else (others => '1');
153
 
154
  nandout <= nandtree(testen & brdyn & bexcn & roen & promedac & prom32 &
155
        spw_clksel & clksel & spw_rxs & spw_rxd & resetn & rxd2 & rxd1 &
156
        dsuen & dsubre & dsurx & datain & cbin & gpioin);
157
 
158
  leon3core0 : entity work.leon3core
159
    generic map ( fabtech, memtech, padtech, clktech, disas, dbguart,
160
                pclow, scantest*(1 - is_fpga(fabtech)))
161
  port map (
162
    resetn, clksel, llclk, clklock, errorn,
163
    address, datain, dataout, dataen, cbin, cbout, cben,
164
    sdcsn, sdwen, sdrasn, sdcasn, sddqm,
165
    dsutx, dsurx, dsuen, dsubre, dsuact,
166
    txd1, rxd1, txd2, rxd2,
167
    ramsn, ramoen, rwen, oen, writen, read, iosn, romsn, brdyn, bexcn,
168
    wdogn, gpioin, gpioout, lgpioen, prom32, promedac, spw_clksel,
169
    llspw_clk, spw_rxd, spw_rxs, spw_txd, spw_txs, spw_ten,
170
    scanen, testen, testrst, testoen);
171
 
172
end;

powered by: WebSVN 2.1.0

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