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/] [pads.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
use work.config.all;
24
library techmap;
25
use techmap.gencomp.all;
26
 
27
entity pads is
28
  generic (
29
    clktech   : integer := CFG_CLKTECH;
30
    padtech   : integer := CFG_PADTECH
31
  );
32
  port (
33
    resetn      : in  std_ulogic;
34
    clksel      : in  std_logic_vector (1 downto 0);
35
    clk         : in  std_ulogic;
36
    lock        : out std_ulogic;
37
    errorn      : inout std_ulogic;
38
    address     : out std_logic_vector(27 downto 0);
39
    data        : inout std_logic_vector(31 downto 0);
40
    cb          : inout std_logic_vector(7 downto 0);
41
    sdclk       : out std_ulogic;
42
    sdcsn       : out std_logic_vector (1 downto 0);    -- sdram chip select
43
    sdwen       : out std_ulogic;                       -- sdram write enable
44
    sdrasn      : out std_ulogic;                       -- sdram ras
45
    sdcasn      : out std_ulogic;                       -- sdram cas
46
    sddqm       : out std_logic_vector (3 downto 0);    -- sdram dqm
47
    dsutx       : out std_ulogic;                       -- DSU tx data
48
    dsurx       : in  std_ulogic;                       -- DSU rx data
49
    dsuen       : in std_ulogic;
50
    dsubre      : in std_ulogic;
51
    dsuact      : out std_ulogic;
52
    txd1        : out std_ulogic;                       -- UART1 tx data
53
    rxd1        : in  std_ulogic;                       -- UART1 rx data
54
    txd2        : out std_ulogic;                       -- UART2 tx data
55
    rxd2        : in  std_ulogic;                       -- UART2 rx data
56
    ramsn       : out std_logic_vector (4 downto 0);
57
    ramoen      : out std_logic_vector (4 downto 0);
58
    rwen        : out std_logic_vector (3 downto 0);
59
    oen         : out std_ulogic;
60
    writen      : out std_ulogic;
61
    read        : out std_ulogic;
62
    iosn        : out std_ulogic;
63
    romsn       : out std_logic_vector (1 downto 0);
64
    brdyn       : in  std_ulogic;
65
    bexcn       : in  std_ulogic;
66
    wdogn       : inout std_ulogic;
67
    gpio        : inout std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);   -- I/O port
68
    prom32      : in std_ulogic;
69
    promedac    : in std_ulogic;
70
 
71
    spw_clksel  : in  std_logic_vector (1 downto 0);
72
    spw_clk     : in  std_ulogic;
73
    spw_rxdp    : in  std_logic_vector(0 to CFG_SPW_NUM-1);
74
    spw_rxdn    : in  std_logic_vector(0 to CFG_SPW_NUM-1);
75
    spw_rxsp    : in  std_logic_vector(0 to CFG_SPW_NUM-1);
76
    spw_rxsn    : in  std_logic_vector(0 to CFG_SPW_NUM-1);
77
    spw_txdp    : out std_logic_vector(0 to CFG_SPW_NUM-1);
78
    spw_txdn    : out std_logic_vector(0 to CFG_SPW_NUM-1);
79
    spw_txsp    : out std_logic_vector(0 to CFG_SPW_NUM-1);
80
    spw_txsn    : out std_logic_vector(0 to CFG_SPW_NUM-1);
81
    lvdsref     : in  std_ulogic;
82
 
83
    roen        : in  std_ulogic;
84
    roout       : out std_ulogic;
85
    nandout     : out std_ulogic;
86
    test        : in  std_ulogic;
87
 
88
    lresetn     : out std_ulogic;
89
    lclksel     : out std_logic_vector (1 downto 0);
90
    lclk        : out std_ulogic;
91
    lerrorn     : in std_ulogic;
92
    laddress    : in std_logic_vector(27 downto 0);
93
    datain      : out std_logic_vector(31 downto 0);
94
    dataout     : in std_logic_vector(31 downto 0);
95
    dataen      : in std_logic_vector(31 downto 0);
96
    cbin        : out std_logic_vector(7 downto 0);
97
    cbout       : in std_logic_vector(7 downto 0);
98
    cben        : in std_logic_vector(7 downto 0);
99
    lsdclk      : in std_ulogic;
100
    lsdcsn      : in std_logic_vector (1 downto 0);    -- sdram chip select
101
    lsdwen      : in std_ulogic;                       -- sdram write enable
102
    lsdrasn     : in std_ulogic;                       -- sdram ras
103
    lsdcasn     : in std_ulogic;                       -- sdram cas
104
    lsddqm      : in std_logic_vector (3 downto 0);    -- sdram dqm
105
    ldsutx      : in std_ulogic;                        -- DSU tx data
106
    ldsurx      : out std_ulogic;                       -- DSU rx data
107
    ldsuen      : out std_ulogic;
108
    ldsubre     : out std_ulogic;
109
    ldsuact     : in std_ulogic;
110
    ltxd1       : in std_ulogic;                        -- UART1 tx data
111
    lrxd1       : out std_ulogic;                       -- UART1 rx data
112
    ltxd2       : in std_ulogic;                        -- UART2 tx data
113
    lrxd2       : out std_ulogic;                       -- UART2 rx data
114
    lramsn      : in std_logic_vector (4 downto 0);
115
    lramoen     : in std_logic_vector (4 downto 0);
116
    lrwen       : in std_logic_vector (3 downto 0);
117
    loen        : in std_ulogic;
118
    lwriten     : in std_ulogic;
119
    lread       : in std_ulogic;
120
    liosn       : in std_ulogic;
121
    lromsn      : in std_logic_vector (1 downto 0);
122
    lbrdyn      : out std_ulogic;
123
    lbexcn      : out std_ulogic;
124
    lwdogn      : in std_ulogic;
125
    gpioin      : out std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);     -- I/O port
126
    gpioout     : in std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);      -- I/O port
127
    gpioen      : in std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);      -- I/O port
128
    lprom32     : out std_ulogic;
129
    lpromedac   : out std_ulogic;
130
 
131
    lspw_clksel : out std_logic_vector (1 downto 0);
132
    lspw_clk    : out std_ulogic;
133
    spw_rxd     : out std_logic_vector(0 to CFG_SPW_NUM-1);
134
    spw_rxs     : out std_logic_vector(0 to CFG_SPW_NUM-1);
135
    spw_txd     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
136
    spw_txs     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
137
    spw_ten     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
138
 
139
    lclk2x      : out std_ulogic;
140
    lclk4x      : out std_ulogic;
141
    lclkdis     : in  std_ulogic;
142
    lclklock    : out std_ulogic;
143
    llock       : in std_ulogic;
144
 
145
    lroen       : out std_ulogic;
146
    lroout      : in  std_ulogic;
147
    lnandout    : in  std_ulogic;
148
    ltest       : out std_ulogic;
149
    gnd         : in  std_ulogic
150
 
151
        );
152
end;
153
 
154
architecture rtl of pads is
155
 
156
signal ltestenablex : std_ulogic;
157
signal clkin, spw_clkin : std_ulogic;
158
signal oref, iref, refp, refn : std_ulogic;
159
constant OEPOL : integer := padoen_polarity(padtech);
160
constant INSCLKPADS : integer := 1;
161
constant SCANTEST : integer := 1;
162
constant clkpadtech : integer := padtech * INSCLKPADS;
163
 
164
signal cgi   : clkgen_in_type;
165
signal cgo   : clkgen_out_type;
166
 
167
signal clk1xu, pllfb  : std_logic;
168
 
169
begin
170
 
171
  ltest <= '0' when (is_fpga(padtech) = 1) or (SCANTEST = 0) else ltestenablex;
172
  testen_pad : inpad generic map (tech => padtech, filter => pulldown) port map (test, ltestenablex);
173
  roen_pad : inpad generic map (tech => padtech, filter => pullup) port map (roen, lroen);
174
  roout_pad : outpad generic map (tech => padtech, strength => 4)
175
    port map (roout, lroout);
176
  nandout_pad : outpad generic map (tech => padtech, strength => 4)
177
    port map (nandout, lnandout);
178
  clk_pad : inpad generic map (tech => clkpadtech, filter => schmitt) port map (clk, clkin);
179
  spw_clk_pad : inpad generic map (tech => clkpadtech, filter => schmitt) port map (spw_clk, lspw_clk);
180
  resetn_pad : inpad generic map (tech => padtech, filter => schmitt)
181
    port map (resetn, lresetn);
182
 
183
  clksel_pad : inpadv generic map (tech => padtech, width => 2) port map (clksel, lclksel);
184
  spw_clksel_pad : inpadv generic map (tech => padtech, width => 2) port map (spw_clksel, lspw_clksel);
185
  errorn_pad : toutpad generic map (tech => padtech, strength => 4, oepol => OEPOL)
186
    port map (errorn, gnd, lerrorn);
187
 
188
  dsuen_pad  : inpad  generic map (tech => padtech) port map (dsuen, ldsuen);
189
  dsubre_pad : inpad  generic map (tech => padtech) port map (dsubre, ldsubre);
190
  dsuact_pad : outpad generic map (tech => padtech, strength => 4) port map (dsuact, ldsuact);
191
  dsurx_pad  : inpad  generic map (tech => padtech) port map (dsurx, ldsurx);
192
  dsutx_pad  : outpad generic map (tech => padtech, strength => 4) port map (dsutx, ldsutx);
193
 
194
  addrh_pad : outpadv generic map (width => 7, tech => padtech, strength => 4)
195
        port map (address(27 downto 21), laddress(27 downto 21));
196
  addr_pad : outpadv generic map (width => 19, tech => padtech, strength => 12)
197
        port map (address(20 downto 2), laddress(20 downto 2));
198
  addrl_pad : outpadv generic map (width => 2, tech => padtech, strength => 4)
199
        port map (address(1 downto 0), laddress(1 downto 0));
200
  rams_pad : outpadv generic map (width => 5, tech => padtech, strength => 4)
201
        port map (ramsn, lramsn);
202
  roms_pad : outpadv generic map (width => 2, tech => padtech, strength => 4)
203
        port map (romsn, lromsn);
204
  oen_pad  : outpad generic map (tech => padtech, strength => 4)
205
        port map (oen, loen);
206
  rwen_pad : outpadv generic map (width => 4, tech => padtech, strength => 4)
207
        port map (rwen, lrwen);
208
  ramoen_pad : outpadv generic map (width => 5, tech => padtech, strength => 4)
209
        port map (ramoen, lramoen);
210
  wri_pad  : outpad generic map (tech => padtech, strength => 4)
211
        port map (writen, lwriten);
212
  read_pad : outpad generic map (tech => padtech, strength => 4)
213
        port map (read, lread);
214
  iosn_pad : outpad generic map (tech => padtech, strength => 4)
215
        port map (iosn, liosn);
216
  bdr : for i in 0 to 31 generate
217
      data_pad : iopad generic map (tech => padtech, strength => 4, oepol => OEPOL)
218
      port map (data(i), dataout(i), dataen(i), datain(i));
219
  end generate;
220
  sdpads : if CFG_MCTRL_SDEN = 1 generate
221
    sdclk_pad : outpad generic map (tech => padtech, strength => 12)
222
        port map (sdclk, lsdclk);
223
    sdwen_pad : outpad generic map (tech => padtech, strength => 4)
224
           port map (sdwen, lsdwen);
225
    sdras_pad : outpad generic map (tech => padtech, strength => 4)
226
           port map (sdrasn, lsdrasn);
227
    sdcas_pad : outpad generic map (tech => padtech, strength => 4)
228
           port map (sdcasn, lsdcasn);
229
    sddqm_pad : outpadv generic map (width => 4, tech => padtech, strength => 4)
230
           port map (sddqm, lsddqm);
231
    sdcsn_pad : outpadv generic map (width =>2, tech => padtech, strength => 4)
232
           port map (sdcsn, lsdcsn);
233
  end generate;
234
 
235
  cdr : for i in 0 to 7 generate
236
      cb_pad : iopad generic map (tech => padtech, strength => 4, oepol => OEPOL)
237
      port map (cb(i), cbout(i), cben(i), cbin(i));
238
  end generate;
239
 
240
  brdyn_pad : inpad generic map (tech => padtech, filter => pullup) port map (brdyn, lbrdyn);
241
  bexcn_pad : inpad generic map (tech => padtech, filter => pullup) port map (bexcn, lbexcn);
242
 
243
  txd1_pad : outpad generic map (tech => padtech, strength => 4) port map (txd1, ltxd1);
244
  rxd1_pad : inpad generic map (tech => padtech) port map (rxd1, lrxd1);
245
  txd2_pad : outpad generic map (tech => padtech, strength => 4) port map (txd2, ltxd2);
246
  rxd2_pad : inpad generic map (tech => padtech) port map (rxd2, lrxd2);
247
 
248
  wdogn_pad : toutpad generic map (tech => padtech, strength => 4, oepol => OEPOL)
249
        port map (wdogn, gnd, lwdogn);
250
 
251
  pio_pads : for i in 0 to CFG_GRGPIO_WIDTH-1 generate
252
    pio_pad : iopad generic map (tech => padtech, strength => 4,  oepol => OEPOL)
253
      port map (gpio(i), gpioout(i), gpioen(i), gpioin(i));
254
  end generate;
255
 
256
  prom32_pad : inpad generic map (tech => padtech) port map (prom32, lprom32);
257
  promedac_pad : inpad generic map (tech => padtech) port map (promedac, lpromedac);
258
  lock_pad : outpad generic map (tech => padtech, strength => 4) port map (lock, llock);
259
 
260
  spw : if CFG_SPW_EN > 0 generate
261
   lvds_pads : lvds_combo generic map (tech => padtech, width => CFG_SPW_NUM)
262
   port map (
263
        spw_txdp, spw_txdn, spw_txsp, spw_txsn, spw_txd, spw_txs, spw_ten,
264
        spw_rxdp, spw_rxdn, spw_rxsp, spw_rxsn, spw_rxd, spw_rxs, lvdsref);
265
  end generate;
266
 
267
  cgi.pllctrl <= '0' & lclkdis; lclklock <= cgo.clklock;
268
  cgi.pllref <= clk1xu;
269
  lclk <= clkin;
270
  clkgen0 : clkgen              -- clock generator
271
      generic map (clktech) --, CFG_CLKMUL, CFG_CLKDIV, CFG_SDEN, CFG_INVCLK, 0, CFG_PCIDLL, CFG_PCISYSCLK, BOARD_FREQ)
272
      port map (clkin, clkin, open, open, lclk2x, open, open, cgi, cgo,
273
        lclk4x, clk1xu);
274
 
275
end;

powered by: WebSVN 2.1.0

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