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/] [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
    padtech   : integer := CFG_PADTECH
30
  );
31
  port (
32
    resetn      : in  std_ulogic;
33
    clk         : in  std_ulogic;
34
    errorn      : inout std_ulogic;
35
    address     : out std_logic_vector(27 downto 0);
36
    data        : inout std_logic_vector(31 downto 0);
37
    cb          : inout std_logic_vector(7 downto 0);
38
    sdclk       : out std_ulogic;
39
    sdcsn       : out std_logic_vector (1 downto 0);    -- sdram chip select
40
    sdwen       : out std_ulogic;                       -- sdram write enable
41
    sdrasn      : out std_ulogic;                       -- sdram ras
42
    sdcasn      : out std_ulogic;                       -- sdram cas
43
    sddqm       : out std_logic_vector (3 downto 0);    -- sdram dqm
44
    dsutx       : out std_ulogic;                       -- DSU tx data
45
    dsurx       : in  std_ulogic;                       -- DSU rx data
46
    dsuen       : in std_ulogic;
47
    dsubre      : in std_ulogic;
48
    dsuact      : out std_ulogic;
49
    txd1        : out std_ulogic;                       -- UART1 tx data
50
    rxd1        : in  std_ulogic;                       -- UART1 rx data
51
    ramsn       : out std_logic_vector (4 downto 0);
52
    ramoen      : out std_logic_vector (4 downto 0);
53
    rwen        : out std_logic_vector (3 downto 0);
54
    oen         : out std_ulogic;
55
    writen      : inout std_ulogic;
56
    read        : out std_ulogic;
57
    iosn        : out std_ulogic;
58
    romsn       : out std_logic_vector (1 downto 0);
59
    brdyn       : in  std_ulogic;
60
    bexcn       : in  std_ulogic;
61
    wdogn       : inout std_ulogic;
62
    gpio        : inout std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);   -- I/O port
63
 
64
    emdio       : inout std_logic;              -- ethernet PHY interface
65
    etx_clk     : in std_ulogic;
66
    erx_clk     : in std_ulogic;
67
    erxd        : in std_logic_vector(3 downto 0);
68
    erx_dv      : in std_ulogic;
69
    erx_er      : in std_ulogic;
70
    erx_col     : in std_ulogic;
71
    erx_crs     : in std_ulogic;
72
    etxd        : out std_logic_vector(3 downto 0);
73
    etx_en      : out std_ulogic;
74
    etx_er      : out std_ulogic;
75
    emdc        : out std_ulogic;
76
 
77
    pci_rst     : in std_ulogic;                -- PCI bus
78
    pci_clk     : in std_ulogic;
79
    pci_gnt     : in std_ulogic;
80
    pci_idsel   : in std_ulogic;
81
    pci_ad      : inout std_logic_vector(31 downto 0);
82
    pci_cbe     : inout std_logic_vector(3 downto 0);
83
    pci_frame   : inout std_ulogic;
84
    pci_irdy    : inout std_ulogic;
85
    pci_trdy    : inout std_ulogic;
86
    pci_devsel  : inout std_ulogic;
87
    pci_stop    : inout std_ulogic;
88
    pci_perr    : inout std_ulogic;
89
    pci_par     : inout std_ulogic;
90
    pci_req     : out std_ulogic;
91
    pci_host    : in std_ulogic;
92
 
93
    pci_arb_req : in  std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
94
    pci_arb_gnt : out std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
95
 
96
    can_txd     : out std_logic_vector(0 to CFG_CAN_NUM-1);
97
    can_rxd     : in  std_logic_vector(0 to CFG_CAN_NUM-1);
98
 
99
    spw_clk     : in  std_ulogic;
100
    spw_rxd     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
101
    spw_rxs     : in  std_logic_vector(0 to CFG_SPW_NUM-1);
102
    spw_txd     : out std_logic_vector(0 to CFG_SPW_NUM-1);
103
    spw_txs     : out std_logic_vector(0 to CFG_SPW_NUM-1);
104
 
105
    tck         : in std_ulogic;
106
    tms         : in std_ulogic;
107
    tdi         : in std_ulogic;
108
    tdo         : out std_ulogic;
109
    trst        : in std_ulogic;
110
 
111
    test        : in  std_ulogic;
112
 
113
    lresetn     : out std_ulogic;
114
    lclk        : out std_ulogic;
115
    lerrorn     : in std_ulogic;
116
    laddress    : in std_logic_vector(27 downto 0);
117
    datain      : out std_logic_vector(31 downto 0);
118
    dataout     : in std_logic_vector(31 downto 0);
119
    dataen      : in std_logic_vector(31 downto 0);
120
    cbin        : out std_logic_vector(7 downto 0);
121
    cbout       : in std_logic_vector(7 downto 0);
122
    cben        : in std_logic_vector(7 downto 0);
123
    lsdclk      : in std_ulogic;
124
    lsdcsn      : in std_logic_vector (1 downto 0);    -- sdram chip select
125
    lsdwen      : in std_ulogic;                       -- sdram write enable
126
    lsdrasn     : in std_ulogic;                       -- sdram ras
127
    lsdcasn     : in std_ulogic;                       -- sdram cas
128
    lsddqm      : in std_logic_vector (3 downto 0);    -- sdram dqm
129
    ldsutx      : in std_ulogic;                        -- DSU tx data
130
    ldsurx      : out std_ulogic;                       -- DSU rx data
131
    ldsuen      : out std_ulogic;
132
    ldsubre     : out std_ulogic;
133
    ldsuact     : in std_ulogic;
134
    ltxd1       : in std_ulogic;                        -- UART1 tx data
135
    lrxd1       : out std_ulogic;                       -- UART1 rx data
136
    lramsn      : in std_logic_vector (4 downto 0);
137
    lramoen     : in std_logic_vector (4 downto 0);
138
    lrwen       : in std_logic_vector (3 downto 0);
139
    loen        : in std_ulogic;
140
    lwriten     : in std_ulogic;
141
    lread       : in std_ulogic;
142
    liosn       : in std_ulogic;
143
    lromsn      : in std_logic_vector (1 downto 0);
144
    lbrdyn      : out std_ulogic;
145
    lbexcn      : out std_ulogic;
146
    lwdogn      : in std_ulogic;
147
    gpioin      : out std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);     -- I/O port
148
    gpioout     : in std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);      -- I/O port
149
    gpioen      : in std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);      -- I/O port
150
    lwritefb    : out std_ulogic;
151
 
152
    ethi_mdio_i : out std_logic;                -- ethernet PHY interface
153
    etho_mdio_o : in std_logic;
154
    etho_mdio_oe: in std_logic;
155
    ethi_tx_clk : out std_ulogic;
156
    ethi_rx_clk : out std_ulogic;
157
    ethi_rxd    : out std_logic_vector(3 downto 0);
158
    ethi_rx_dv  : out std_ulogic;
159
    ethi_rx_er  : out std_ulogic;
160
    ethi_rx_col : out std_ulogic;
161
    ethi_rx_crs : out std_ulogic;
162
    etho_txd    : in std_logic_vector(3 downto 0);
163
    etho_tx_en  : in std_ulogic;
164
    etho_tx_er  : in std_ulogic;
165
    etho_mdc    : in std_ulogic;
166
 
167
    lpciclk     : out std_ulogic;
168
    pcii_rst    : out std_ulogic;
169
    pcii_gnt    : out std_ulogic;
170
    pcii_idsel  : out std_ulogic;
171
    pcii_ad     : out std_logic_vector(31 downto 0);
172
    pcii_cbe    : out std_logic_vector(3 downto 0);
173
    pcii_frame  : out std_ulogic;
174
    pcii_irdy   : out std_ulogic;
175
    pcii_trdy   : out std_ulogic;
176
    pcii_devsel : out std_ulogic;
177
    pcii_stop   : out std_ulogic;
178
    pcii_perr   : out std_ulogic;
179
    pcii_par    : out std_ulogic;
180
    pcii_host   : out std_ulogic;
181
 
182
    pcio_vaden   : in std_logic_vector(31 downto 0);
183
    pcio_cbeen   : in std_logic_vector(3 downto 0);
184
    pcio_frameen : in std_ulogic;
185
    pcio_irdyen  : in std_ulogic;
186
    pcio_trdyen  : in std_ulogic;
187
    pcio_devselen:  in std_ulogic;
188
    pcio_stopen : in std_ulogic;
189
    pcio_perren : in std_ulogic;
190
    pcio_paren  : in std_ulogic;
191
    pcio_reqen  : in std_ulogic;
192
    pcio_locken : in std_ulogic;
193
    pcio_req    : in std_ulogic;
194
    pcio_ad     : in std_logic_vector(31 downto 0);
195
    pcio_cbe    : in std_logic_vector(3 downto 0);
196
    pcio_frame  : in std_ulogic;
197
    pcio_irdy   : in std_ulogic;
198
    pcio_trdy   : in std_ulogic;
199
    pcio_devsel : in std_ulogic;
200
    pcio_stop   : in std_ulogic;
201
    pcio_perr   : in std_ulogic;
202
    pcio_par    : in std_ulogic;
203
 
204
    pcii_arb_req: out std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
205
    pcio_arb_gnt: in  std_logic_vector(0 to CFG_PCI_ARB_NGNT-1);
206
 
207
    can_ltx     : in  std_logic_vector(0 to CFG_CAN_NUM-1);
208
    can_lrx     : out std_logic_vector(0 to CFG_CAN_NUM-1);
209
 
210
    lspw_clk    : out std_ulogic;
211
    lspw_rxd    : out std_logic_vector(0 to CFG_SPW_NUM-1);
212
    lspw_rxs    : out std_logic_vector(0 to CFG_SPW_NUM-1);
213
    lspw_txd    : in  std_logic_vector(0 to CFG_SPW_NUM-1);
214
    lspw_txs    : in  std_logic_vector(0 to CFG_SPW_NUM-1);
215
 
216
    ltck        : out std_ulogic;
217
    ltms        : out std_ulogic;
218
    ltdi        : out std_ulogic;
219
    ltdo        : in  std_ulogic;
220
    ltrst       : out std_ulogic;
221
 
222
    ltest : out std_ulogic
223
        );
224
end;
225
 
226
architecture rtl of pads is
227
 
228
signal vcc, gnd : std_logic_vector(4 downto 0);
229
signal ltestenablex : std_ulogic;
230
signal oref, iref, refp, refn, wrdr : std_ulogic;
231
constant OEPOL : integer := padoen_polarity(padtech);
232
constant INSCLKPADS : integer := 1;
233
constant SCANTEST : integer := 1;
234
constant clkpadtech : integer := padtech * INSCLKPADS;
235
constant CFG_SDEN : integer := CFG_MCTRLFT_SDEN + CFG_MCTRL_SDEN;
236
 
237
begin
238
 
239
  vcc <= (others => '1'); gnd <= (others => '0');
240
  wrdr <= '1' when OEPOL = 1 else '0';
241
  ltest <= '0' when (is_fpga(padtech) = 1) or (SCANTEST = 0) else ltestenablex;
242
  testen_pad : inpad generic map (tech => padtech) port map (test, ltestenablex);
243
  clk_pad : clkpad generic map (tech => clkpadtech) port map (clk, lclk);
244
  spw_clk_pad : clkpad generic map (tech => clkpadtech) port map (spw_clk, lspw_clk);
245
 
246
  resetn_pad : inpad generic map (tech => padtech, filter => schmitt)
247
    port map (resetn, lresetn);
248
 
249
  errorn_pad : odpad generic map (tech => padtech, strength => 2, oepol => OEPOL)
250
    port map (errorn, lerrorn);
251
 
252
  dsuen_pad  : inpad  generic map (tech => padtech) port map (dsuen, ldsuen);
253
  dsubre_pad : inpad  generic map (tech => padtech) port map (dsubre, ldsubre);
254
  dsuact_pad : outpad generic map (tech => padtech, strength => 2) port map (dsuact, ldsuact);
255
  dsurx_pad  : inpad  generic map (tech => padtech) port map (dsurx, ldsurx);
256
  dsutx_pad  : outpad generic map (tech => padtech, strength => 2) port map (dsutx, ldsutx);
257
 
258
  addr_pad : outpadv generic map (width => 28, tech => padtech, strength => 12)
259
        port map (address, laddress(27 downto 0));
260
  rams_pad : outpadv generic map (width => 5, tech => padtech, strength => 12)
261
        port map (ramsn, lramsn);
262
  roms_pad : outpadv generic map (width => 2, tech => padtech, strength => 12)
263
        port map (romsn, lromsn);
264
  oen_pad  : outpad generic map (tech => padtech, strength => 12)
265
        port map (oen, loen);
266
  rwen_pad : outpadv generic map (width => 4, tech => padtech, strength => 12)
267
        port map (rwen, lrwen);
268
  roen_pad : outpadv generic map (width => 5, tech => padtech, strength => 12)
269
        port map (ramoen, lramoen);
270
  wri_pad  : iopad generic map (tech => padtech, strength => 12, oepol => OEPOL)
271
        port map (writen, lwriten, wrdr, lwritefb );
272
  read_pad : outpad generic map (tech => padtech, strength => 12)
273
        port map (read, lread);
274
  iosn_pad : outpad generic map (tech => padtech, strength => 12)
275
        port map (iosn, liosn);
276
  bdr : for i in 0 to 31 generate
277
      data_pad : iopad generic map (tech => padtech, strength => 12, oepol => OEPOL)
278
      port map (data(i), dataout(i), dataen(i), datain(i));
279
  end generate;
280
  sdpads : if CFG_SDEN /= 0 generate
281
    sdclk_pad : outpad generic map (tech => padtech, strength => 12, slew => 1)
282
        port map (sdclk, lsdclk);
283
    sdwen_pad : outpad generic map (tech => padtech, strength => 12)
284
           port map (sdwen, lsdwen);
285
    sdras_pad : outpad generic map (tech => padtech, strength => 12)
286
           port map (sdrasn, lsdrasn);
287
    sdcas_pad : outpad generic map (tech => padtech, strength => 12)
288
           port map (sdcasn, lsdcasn);
289
    sddqm_pad : outpadv generic map (width => 4, tech => padtech, strength => 12)
290
           port map (sddqm, lsddqm);
291
    sdcsn_pad : outpadv generic map (width =>2, tech => padtech, strength => 12)
292
           port map (sdcsn, lsdcsn);
293
  end generate;
294
 
295
  cdr : for i in 0 to 7 generate
296
      cb_pad : iopad generic map (tech => padtech, strength => 12, oepol => OEPOL)
297
      port map (cb(i), cbout(i), cben(i), cbin(i));
298
  end generate;
299
 
300
  brdyn_pad : inpad generic map (tech => padtech) port map (brdyn, lbrdyn);
301
  bexcn_pad : inpad generic map (tech => padtech) port map (bexcn, lbexcn);
302
 
303
  txd1_pad : outpad generic map (tech => padtech) port map (txd1, ltxd1);
304
  rxd1_pad : inpad generic map (tech => padtech) port map (rxd1, lrxd1);
305
 
306
  wdogn_pad : odpad generic map (tech => padtech, strength => 2, oepol => OEPOL) port map (wdogn, lwdogn);
307
 
308
  pio_pads : for i in 0 to CFG_GRGPIO_WIDTH-1 generate
309
    pio_pad : iopad generic map (tech => padtech, strength => 12,  oepol => OEPOL)
310
      port map (gpio(i), gpioout(i), gpioen(i), gpioin(i));
311
  end generate;
312
 
313
  eth0 : if CFG_GRETH = 1 generate -- Gaisler ethernet MAC
314
      emdio_pad : iopad generic map (tech => padtech, oepol => OEPOL, strength => 2)
315
      port map (emdio, etho_mdio_o, etho_mdio_oe, ethi_mdio_i);
316
      etxc_pad : clkpad generic map (tech => clkpadtech, arch => 1)
317
        port map (etx_clk, ethi_tx_clk);
318
      erxc_pad : clkpad generic map (tech => clkpadtech, arch => 1)
319
        port map (erx_clk, ethi_rx_clk);
320
      erxd_pad : inpadv generic map (tech => padtech, width => 4)
321
        port map (erxd, ethi_rxd(3 downto 0));
322
      erxdv_pad : inpad generic map (tech => padtech)
323
        port map (erx_dv, ethi_rx_dv);
324
      erxer_pad : inpad generic map (tech => padtech)
325
        port map (erx_er, ethi_rx_er);
326
      erxco_pad : inpad generic map (tech => padtech)
327
        port map (erx_col, ethi_rx_col);
328
      erxcr_pad : inpad generic map (tech => padtech)
329
        port map (erx_crs, ethi_rx_crs);
330
 
331
      etxd_pad : outpadv generic map (tech => padtech, width => 4, strength => 2)
332
        port map (etxd, etho_txd(3 downto 0));
333
      etxen_pad : outpad generic map (tech => padtech, strength => 2)
334
        port map ( etx_en, etho_tx_en);
335
      etxer_pad : outpad generic map (tech => padtech, strength => 2)
336
        port map (etx_er, etho_tx_er);
337
      emdc_pad : outpad generic map (tech => padtech, strength => 2)
338
        port map (emdc, etho_mdc);
339
  end generate;
340
 
341
 
342
  pci_clk_pad : clkpad generic map (tech => clkpadtech, arch => 1)
343
        port map (pci_clk, lpciclk);
344
  pad_pci_rst   : inpad generic map (padtech, pci33, 0) port map (pci_rst, pcii_rst);
345
  pad_pci_gnt   : inpad generic map (padtech) port map (pci_gnt, pcii_gnt);
346
  pad_pci_idsel : inpad generic map (padtech, pci33, 0) port map (pci_idsel, pcii_idsel);
347
  pad_pci_host  : inpad generic map (padtech) port map (pci_host, pcii_host);
348
  pad_pci_ad    : iopadvv generic map (tech => padtech, level => pci33, width => 32,
349
                                      strength => 12, oepol => oepol)
350
                  port map (pci_ad, pcio_ad, pcio_vaden, pcii_ad);
351
  pad_pci_cbe0  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
352
                  port map (pci_cbe(0), pcio_cbe(0), pcio_cbeen(0), pcii_cbe(0));
353
  pad_pci_cbe1  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
354
                  port map (pci_cbe(1), pcio_cbe(1), pcio_cbeen(1), pcii_cbe(1));
355
  pad_pci_cbe2  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
356
                  port map (pci_cbe(2), pcio_cbe(2), pcio_cbeen(2), pcii_cbe(2));
357
  pad_pci_cbe3  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
358
                  port map (pci_cbe(3), pcio_cbe(3), pcio_cbeen(3), pcii_cbe(3));
359
  pad_pci_frame : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
360
                  port map (pci_frame, pcio_frame, pcio_frameen, pcii_frame);
361
  pad_pci_trdy  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
362
                  port map (pci_trdy, pcio_trdy, pcio_trdyen, pcii_trdy);
363
  pad_pci_irdy  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
364
                  port map (pci_irdy, pcio_irdy, pcio_irdyen, pcii_irdy);
365
  pad_pci_devsel: iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
366
                  port map (pci_devsel, pcio_devsel, pcio_devselen, pcii_devsel);
367
  pad_pci_stop  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
368
                  port map (pci_stop, pcio_stop, pcio_stopen, pcii_stop);
369
  pad_pci_perr  : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
370
                  port map (pci_perr, pcio_perr, pcio_perren, pcii_perr);
371
  pad_pci_par   : iopad generic map (tech => padtech, level => pci33, oepol => oepol, strength => 12)
372
                  port map (pci_par, pcio_par, pcio_paren, pcii_par);
373
  pad_pci_req   : toutpad generic map (tech => padtech, strength => 4, oepol => oepol)
374
                  port map (pci_req, pcio_req, pcio_reqen);
375
 
376
  pci_arb_req_pad : inpadv generic map (tech => padtech, width => CFG_PCI_ARB_NGNT)
377
        port map (pci_arb_req, pcii_arb_req);
378
  pci_arb_gnt_pad : outpadv generic map (tech => padtech, width => CFG_PCI_ARB_NGNT, strength => 4)
379
        port map (pci_arb_gnt, pcio_arb_gnt);
380
 
381
  spw : if CFG_SPW_EN > 0 generate
382
    spw_pads : for i in 0 to CFG_SPW_NUM-1 generate
383
         spw_txd_pad : outpad generic map (tech => padtech, strength => 12)
384
            port map (spw_txd(i), lspw_txd(i));
385
         spw_txs_pad : outpad generic map (tech => padtech, strength => 12)
386
            port map (spw_txs(i), lspw_txs(i));
387
         spw_rxd_pad : inpad generic map (tech => padtech)
388
            port map (spw_rxd(i), lspw_rxd(i));
389
         spw_rxs_pad : inpad generic map (tech => padtech)
390
            port map (spw_rxs(i), lspw_rxs(i));
391
    end generate;
392
  end generate;
393
 
394
  can : if CFG_CAN = 1 generate
395
     can_pads : for i in 0 to CFG_CAN_NUM-1 generate
396
         can_tx_pad : outpad generic map (tech => padtech, strength => 2)
397
            port map (can_txd(i), can_ltx(i));
398
         can_rx_pad : inpad generic map (tech => padtech)
399
            port map (can_rxd(i), can_lrx(i));
400
     end generate;
401
  end generate;
402
 
403
  jtag :if CFG_AHB_JTAG = 1 generate
404
    tck_pad : inpad generic map (tech => padtech) port map (tck, ltck);
405
    tms_pad : inpad generic map (tech => padtech) port map (tms, ltms);
406
    tdi_pad : inpad generic map (tech => padtech) port map (tdi, ltdi);
407
    tdo_pad : outpad generic map (tech => padtech, strength => 2) port map (tdo, ltdo);
408
    trst_pad : inpad generic map (tech => padtech) port map (trst, ltrst);
409
  end generate;
410
 
411
 
412
end;

powered by: WebSVN 2.1.0

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