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/] [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.amba.all;
25
use grlib.stdlib.all;
26
library techmap;
27
use techmap.gencomp.all;
28
library gaisler;
29
use gaisler.memctrl.all;
30
use gaisler.leon3.all;
31
use gaisler.uart.all;
32
use gaisler.misc.all;
33
use gaisler.pci.all;
34
use gaisler.net.all;
35
use gaisler.jtag.all;
36
use gaisler.spacewire.all;
37
library esa;
38
use esa.memoryctrl.all;
39
use esa.pcicomp.all;
40
use work.config.all;
41
use work.config.all;
42
 
43
entity core is
44
  generic (
45
    fabtech   : integer := CFG_FABTECH;
46
    memtech   : integer := CFG_MEMTECH;
47
    padtech   : integer := CFG_PADTECH;
48
    clktech   : integer := CFG_CLKTECH;
49
    disas     : integer := CFG_DISAS;   -- Enable disassembly to console
50
    dbguart   : integer := CFG_DUART;   -- Print UART on console
51
    pclow     : integer := CFG_PCLOW
52
  );
53
  port (
54
    resetn      : in  std_ulogic;
55
    clk         : in  std_ulogic;
56
    errorn      : out std_ulogic;
57
    address     : out std_logic_vector(27 downto 0);
58
    datain      : in std_logic_vector(31 downto 0);
59
    dataout     : out std_logic_vector(31 downto 0);
60
    dataen      : out std_logic_vector(31 downto 0);
61
    cbin        : in std_logic_vector(7 downto 0);
62
    cbout       : out std_logic_vector(7 downto 0);
63
    cben        : out std_logic_vector(7 downto 0);
64
    sdclk       : out std_ulogic;
65
    sdcsn       : out std_logic_vector (1 downto 0);    -- sdram chip select
66
    sdwen       : out std_ulogic;                       -- sdram write enable
67
    sdrasn      : out std_ulogic;                       -- sdram ras
68
    sdcasn      : out std_ulogic;                       -- sdram cas
69
    sddqm       : out std_logic_vector (3 downto 0);    -- sdram dqm
70
    dsutx       : out std_ulogic;                       -- DSU tx data
71
    dsurx       : in  std_ulogic;                       -- DSU rx data
72
    dsuen       : in std_ulogic;
73
    dsubre      : in std_ulogic;
74
    dsuact      : out std_ulogic;
75
    txd1        : out std_ulogic;                       -- UART1 tx data
76
    rxd1        : in  std_ulogic;                       -- UART1 rx data
77
    ramsn       : out std_logic_vector (4 downto 0);
78
    ramoen      : out std_logic_vector (4 downto 0);
79
    rwen        : out std_logic_vector (3 downto 0);
80
    oen         : out std_ulogic;
81
    writen      : out std_ulogic;
82
    read        : out std_ulogic;
83
    iosn        : out std_ulogic;
84
    romsn       : out std_logic_vector (1 downto 0);
85
    brdyn       : in  std_ulogic;
86
    bexcn       : in  std_ulogic;
87
    wdogn       : out std_ulogic;
88
    gpioin      : in std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);      -- I/O port
89
    gpioout     : out std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);     -- I/O port
90
    gpioen      : out std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);     -- I/O port
91
    writefb     : in  std_ulogic;
92
 
93
    emdi        : in    std_logic;              -- ethernet PHY interface
94
    emdo        : out std_logic;                -- ethernet PHY interface
95
    emden       : out std_logic;                -- ethernet PHY interface
96
    etx_clk     : in std_ulogic;
97
    erx_clk     : in std_ulogic;
98
    erxd        : in std_logic_vector(3 downto 0);
99
    erx_dv      : in std_ulogic;
100
    erx_er      : in std_ulogic;
101
    erx_col     : in std_ulogic;
102
    erx_crs     : in std_ulogic;
103
    etxd        : out std_logic_vector(3 downto 0);
104
    etx_en      : out std_ulogic;
105
    etx_er      : out std_ulogic;
106
    emdc        : out std_ulogic;
107
 
108
    pciclk      : in std_ulogic;
109
    pcii_rst    : in std_ulogic;
110
    pcii_gnt    : in std_ulogic;
111
    pcii_idsel  : in std_ulogic;
112
    pcii_ad     : in std_logic_vector(31 downto 0);
113
    pcii_cbe    : in std_logic_vector(3 downto 0);
114
    pcii_frame  : in std_ulogic;
115
    pcii_irdy   : in std_ulogic;
116
    pcii_trdy   : in std_ulogic;
117
    pcii_devsel : in std_ulogic;
118
    pcii_stop   : in std_ulogic;
119
    pcii_perr   : in std_ulogic;
120
    pcii_par    : in std_ulogic;
121
    pcii_host   : in std_ulogic;
122
 
123
    pcio_vaden   : out std_logic_vector(31 downto 0);
124
    pcio_cbeen   : out std_logic_vector(3 downto 0);
125
    pcio_frameen : out std_ulogic;
126
    pcio_irdyen  : out std_ulogic;
127
    pcio_trdyen  : out std_ulogic;
128
    pcio_devselen:  out std_ulogic;
129
    pcio_stopen : out std_ulogic;
130
    pcio_perren : out std_ulogic;
131
    pcio_paren  : out std_ulogic;
132
    pcio_reqen  : out std_ulogic;
133
    pcio_locken : out std_ulogic;
134
    pcio_req    : out std_ulogic;
135
    pcio_ad     : out std_logic_vector(31 downto 0);
136
    pcio_cbe    : out std_logic_vector(3 downto 0);
137
    pcio_frame  : out std_ulogic;
138
    pcio_irdy   : out std_ulogic;
139
    pcio_trdy   : out std_ulogic;
140
    pcio_devsel : out std_ulogic;
141
    pcio_stop   : out std_ulogic;
142
    pcio_perr   : out std_ulogic;
143
    pcio_par    : out std_ulogic;
144
 
145
    pcii_arb_req: in  std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
146
    pcio_arb_gnt: out std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
147
 
148
    can_tx      : out std_logic_vector(0 to CFG_CAN_NUM-1);
149
    can_rx      : in  std_logic_vector(0 to CFG_CAN_NUM-1);
150
 
151
    spw_clk     : in  std_ulogic;
152
    spw_rxd     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
153
    spw_rxs     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
154
    spw_txd     : out std_logic_vector(0 to CFG_SPW_NUM-1);
155
    spw_txs     : out std_logic_vector(0 to CFG_SPW_NUM-1);
156
    spw_ten     : out std_logic_vector(0 to CFG_SPW_NUM-1);
157
    tck         : in std_ulogic;
158
    tms         : in std_ulogic;
159
    tdi         : in std_ulogic;
160
    tdo         : out std_ulogic;
161
    trst        : in std_ulogic;
162
 
163
    test        : in  std_ulogic;
164
    pllref      : in  std_ulogic
165
        );
166
end;
167
 
168
architecture rtl of core is
169
 
170
  constant ISASIC : boolean := (is_fpga(fabtech) = 0);
171
  signal lclk, lspw_clk, lpciclk : std_ulogic;
172
  signal letx_clk, lerx_clk, ltck : std_ulogic;
173
  signal lletx_clk, llerx_clk, llspw_clk, llpciclk : std_ulogic;
174
  signal gclk, pwd, lpwd : std_logic_vector(0 to 0);
175
  signal scanin, scanout, scanen, ldsutx, testrst : std_ulogic;
176
 
177
  signal ldataen       : std_logic_vector(31 downto 0);
178
  signal lcben         : std_logic_vector(7 downto 0);
179
  signal lemden        : std_ulogic;
180
  signal lpcio_vaden   : std_logic_vector(31 downto 0);
181
  signal lpcio_cbeen   : std_logic_vector(3 downto 0);
182
  signal lpcio_frameen : std_ulogic;
183
  signal lpcio_irdyen  : std_ulogic;
184
  signal lpcio_trdyen  : std_ulogic;
185
  signal lpcio_devselen: std_ulogic;
186
  signal lpcio_stopen  : std_ulogic;
187
  signal lpcio_perren  : std_ulogic;
188
  signal lpcio_paren   : std_ulogic;
189
  signal lpcio_reqen   : std_ulogic;
190
  signal lpcio_locken  : std_ulogic;
191
 
192
begin
193
 
194
  ltck <= clk when (test = '1') and ISASIC else tck;
195
  lspw_clk <= clk when (test = '1') and ISASIC else spw_clk;
196
  sclk : techbuf generic map (tech => fabtech) port map (lspw_clk, llspw_clk);
197
  lpciclk <= clk when (test = '1') and ISASIC else pciclk;
198
  pclk : techbuf generic map (tech => fabtech) port map (lpciclk, llpciclk);
199
  letx_clk <= clk when (test = '1') and ISASIC else etx_clk;
200
  etclk : techbuf generic map (tech => fabtech) port map (letx_clk, lletx_clk);
201
  lerx_clk <= clk when (test = '1') and ISASIC else erx_clk;
202
  erclk : techbuf generic map (tech => fabtech) port map (lerx_clk, llerx_clk);
203
  dataen <= (others => rxd1) when (test = '1') and ISASIC else ldataen;
204
  cben <= (others => rxd1) when (test = '1') and ISASIC else lcben;
205
  emden <= rxd1 when (test = '1') and ISASIC else lemden;
206
  pcio_vaden <= (others => rxd1) when (test = '1') and ISASIC else lpcio_vaden;
207
  pcio_cbeen <= (others => rxd1) when (test = '1') and ISASIC else lpcio_cbeen;
208
  pcio_frameen <= rxd1 when (test = '1') and ISASIC else lpcio_frameen;
209
  pcio_irdyen <= rxd1 when (test = '1') and ISASIC else lpcio_irdyen;
210
  pcio_trdyen <= rxd1 when (test = '1') and ISASIC else lpcio_trdyen;
211
  pcio_devselen <= rxd1 when (test = '1') and ISASIC else lpcio_devselen;
212
  pcio_stopen <= rxd1 when (test = '1') and ISASIC else lpcio_stopen;
213
  pcio_perren <= rxd1 when (test = '1') and ISASIC else lpcio_perren;
214
  pcio_paren <= rxd1 when (test = '1') and ISASIC else lpcio_paren;
215
  pcio_reqen <= rxd1 when (test = '1') and ISASIC else lpcio_reqen;
216
  pcio_locken <= rxd1 when (test = '1') and ISASIC else lpcio_locken;
217
 
218
  dsutx  <= scanout when test = '1' else ldsutx;
219
  scanin <= dsurx when test = '1' else '0';
220
  scanen <= dsubre when test = '1' else '0';
221
  testrst <= dsuen when test = '1' else '0';
222
 
223
  leon3core0 : entity work.leon3core
224
    generic map ( fabtech, memtech, padtech, clktech, disas, dbguart,
225
                pclow, 1 - is_fpga(fabtech) )
226
  port map (
227
    resetn, clk, errorn,
228
    address, datain, dataout, ldataen, cbin, cbout, lcben,
229
    sdcsn, sdwen, sdrasn, sdcasn, sddqm,
230
    ldsutx, dsurx, dsuen, dsubre, dsuact,
231
    txd1, rxd1,
232
    ramsn, ramoen, rwen, oen, writen, read, iosn, romsn, brdyn, bexcn,
233
    wdogn, gpioin, gpioout, gpioen, writefb,
234
    emdi, emdo, lemden, lletx_clk, llerx_clk, erxd, erx_dv, erx_er,
235
    erx_col, erx_crs, etxd, etx_en, etx_er, emdc,
236
    llpciclk, pcii_rst, pcii_gnt, pcii_idsel, pcii_ad, pcii_cbe, pcii_frame,
237
    pcii_irdy, pcii_trdy, pcii_devsel, pcii_stop, pcii_perr, pcii_par, pcii_host,
238
    lpcio_vaden, lpcio_cbeen, lpcio_frameen, lpcio_irdyen, lpcio_trdyen,
239
    lpcio_devselen, lpcio_stopen, lpcio_perren, lpcio_paren, lpcio_reqen,
240
    lpcio_locken, pcio_req, pcio_ad, pcio_cbe, pcio_frame, pcio_irdy,
241
    pcio_trdy, pcio_devsel, pcio_stop, pcio_perr, pcio_par,
242
    pcii_arb_req, pcio_arb_gnt, can_tx, can_rx,
243
    llspw_clk, spw_rxd, spw_rxs, spw_txd, spw_txs, spw_ten,
244
    ltck, tms, tdi, tdo, trst,
245
    scanin, scanen, test, testrst, scanout, sdclk, pllref);
246
end;

powered by: WebSVN 2.1.0

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