OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [gaisler/] [usb/] [grusb.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
------------------------------------------------------------------------------
2
--  This file is a part of the GRLIB VHDL IP LIBRARY
3
--  Copyright (C) 2003, 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
-- Package:     grusb
20
-- File:        grusb.vhd
21
-- Author:      Marko Isomaki, Jonas Ekergarn
22
-- Description: Package for GRUSBHC, GRUSBDC, and GRUSB_DCL
23
-------------------------------------------------------------------------------
24
 
25
library ieee;
26
use ieee.std_logic_1164.all;
27
library grlib;
28
use grlib.stdlib.all;
29
use grlib.amba.all;
30
library gaisler;
31
use gaisler.misc.all;
32
library techmap;
33
use techmap.gencomp.all;
34
 
35
package grusb is
36
  -----------------------------------------------------------------------------
37
  -- USB in/out types
38
  -----------------------------------------------------------------------------  
39
  type grusb_in_type is record
40
    datain         : std_logic_vector(15 downto 0);
41
    rxactive       : std_ulogic;
42
    rxvalid        : std_ulogic;
43
    rxvalidh       : std_ulogic;
44
    rxerror        : std_ulogic;
45
    txready        : std_ulogic;
46
    linestate      : std_logic_vector(1 downto 0);
47
    nxt            : std_ulogic;
48
    dir            : std_ulogic;
49
    vbusvalid      : std_ulogic;
50
    hostdisconnect : std_ulogic;
51
  end record;
52
  type grusb_out_type is record
53
    dataout           : std_logic_vector(15 downto 0);
54
    txvalid           : std_ulogic;
55
    txvalidh          : std_ulogic;
56
    opmode            : std_logic_vector(1 downto 0);
57
    xcvrselect        : std_logic_vector(1 downto 0);
58
    termselect        : std_ulogic;
59
    suspendm          : std_ulogic;
60
    reset             : std_ulogic;
61
    stp               : std_ulogic;
62
    oen               : std_ulogic;
63
    databus16_8       : std_ulogic;
64
    dppulldown        : std_ulogic;
65
    dmpulldown        : std_ulogic;
66
    idpullup          : std_ulogic;
67
    drvvbus           : std_ulogic;
68
    dischrgvbus       : std_ulogic;
69
    chrgvbus          : std_ulogic;
70
    txbitstuffenable  : std_ulogic;
71
    txbitstuffenableh : std_ulogic;
72
    fslsserialmode    : std_ulogic;
73
    tx_enable_n       : std_ulogic;
74
    tx_dat            : std_ulogic;
75
    tx_se0            : std_ulogic;
76
  end record;
77
 
78
  type grusb_in_vector is array (natural range <>) of grusb_in_type;
79
  type grusb_out_vector is array (natural range <>) of grusb_out_type;
80
 
81
  -----------------------------------------------------------------------------
82
  -- Component declarations
83
  -----------------------------------------------------------------------------
84
  component grusbhc is
85
    generic (
86
      ehchindex   : integer range 0 to NAHBMST-1 := 0;
87
      ehcpindex   : integer range 0 to NAPBSLV-1 := 0;
88
      ehcpaddr    : integer range 0 to 16#FFF#   := 0;
89
      ehcpirq     : integer range 0 to NAHBIRQ-1 := 0;
90
      ehcpmask    : integer range 0 to 16#FFF#   := 16#FFF#;
91
      uhchindex   : integer range 0 to NAHBMST-1 := 0;
92
      uhchsindex  : integer range 0 to NAHBSLV-1 := 0;
93
      uhchaddr    : integer range 0 to 16#FFF#   := 0;
94
      uhchmask    : integer range 0 to 16#FFF#   := 16#FFF#;
95
      uhchirq     : integer range 0 to NAHBIRQ-1 := 0;
96
      tech        : integer range 0 to NTECH     := DEFFABTECH;
97
      memtech     : integer range 0 to NTECH     := DEFMEMTECH;
98
      nports      : integer range 1 to 15        := 1;
99
      ehcgen      : integer range 0 to 1         := 1;
100
      uhcgen      : integer range 0 to 1         := 1;
101
      n_cc        : integer range 1 to 15        := 1;
102
      n_pcc       : integer range 1 to 15        := 1;
103
      prr         : integer range 0 to 1         := 0;
104
      portroute1  : integer                      := 0;
105
      portroute2  : integer                      := 0;
106
      endian_conv : integer range 0 to 1         := 1;
107
      be_regs     : integer range 0 to 1         := 0;
108
      be_desc     : integer range 0 to 1         := 0;
109
      uhcblo      : integer range 0 to 255       := 2;
110
      bwrd        : integer range 1 to 256       := 16;
111
      utm_type    : integer range 0 to 2         := 2;
112
      vbusconf    : integer range 0 to 3         := 3;
113
      netlist     : integer range 0 to 1         := 0;
114
      ramtest     : integer range 0 to 1         := 0;
115
      urst_time   : integer                      := 250;
116
      oepol       : integer range 0 to 1         := 0;
117
      scantest    : integer                      := 0);
118
    port (
119
      clk       : in  std_ulogic;
120
      uclk      : in  std_ulogic;
121
      rst       : in  std_ulogic;
122
      apbi      : in  apb_slv_in_type;
123
      ehc_apbo  : out apb_slv_out_type;
124
      ahbmi     : in  ahb_mst_in_type;
125
      ahbsi     : in  ahb_slv_in_type;
126
      ehc_ahbmo : out ahb_mst_out_type;
127
      uhc_ahbmo : out ahb_mst_out_vector_type(n_cc*uhcgen downto 1*uhcgen);
128
      uhc_ahbso : out ahb_slv_out_vector_type(n_cc*uhcgen downto 1*uhcgen);
129
      o         : out grusb_out_vector((nports-1) downto 0);
130
      i         : in  grusb_in_vector((nports-1) downto 0));
131
  end component;
132
 
133
  component grusbdc is
134
    generic (
135
      hsindex  : integer range 0 to NAHBSLV-1 := 0;
136
      hirq     : integer range 0 to NAHBIRQ-1 := 0;
137
      haddr    : integer                      := 0;
138
      hmask    : integer                      := 16#FFF#;
139
      hmindex  : integer range 0 to NAHBMST-1 := 0;
140
      aiface   : integer range 0 to 1         := 0;
141
      memtech  : integer range 0 to NTECH     := DEFMEMTECH;
142
      uiface   : integer range 0 to 1         := 0;
143
      dwidth   : integer range 8 to 16        := 8;
144
      nepi     : integer range 1 to 16        := 1;
145
      nepo     : integer range 1 to 16        := 1;
146
      i0       : integer range 8 to 3072      := 1024;
147
      i1       : integer range 8 to 3072      := 1024;
148
      i2       : integer range 8 to 3072      := 1024;
149
      i3       : integer range 8 to 3072      := 1024;
150
      i4       : integer range 8 to 3072      := 1024;
151
      i5       : integer range 8 to 3072      := 1024;
152
      i6       : integer range 8 to 3072      := 1024;
153
      i7       : integer range 8 to 3072      := 1024;
154
      i8       : integer range 8 to 3072      := 1024;
155
      i9       : integer range 8 to 3072      := 1024;
156
      i10      : integer range 8 to 3072      := 1024;
157
      i11      : integer range 8 to 3072      := 1024;
158
      i12      : integer range 8 to 3072      := 1024;
159
      i13      : integer range 8 to 3072      := 1024;
160
      i14      : integer range 8 to 3072      := 1024;
161
      i15      : integer range 8 to 3072      := 1024;
162
      o0       : integer range 8 to 3072      := 1024;
163
      o1       : integer range 8 to 3072      := 1024;
164
      o2       : integer range 8 to 3072      := 1024;
165
      o3       : integer range 8 to 3072      := 1024;
166
      o4       : integer range 8 to 3072      := 1024;
167
      o5       : integer range 8 to 3072      := 1024;
168
      o6       : integer range 8 to 3072      := 1024;
169
      o7       : integer range 8 to 3072      := 1024;
170
      o8       : integer range 8 to 3072      := 1024;
171
      o9       : integer range 8 to 3072      := 1024;
172
      o10      : integer range 8 to 3072      := 1024;
173
      o11      : integer range 8 to 3072      := 1024;
174
      o12      : integer range 8 to 3072      := 1024;
175
      o13      : integer range 8 to 3072      := 1024;
176
      o14      : integer range 8 to 3072      := 1024;
177
      o15      : integer range 8 to 3072      := 1024;
178
      oepol    : integer range 0 to 1         := 0;
179
      syncprst : integer range 0 to 1         := 0;
180
      prsttime : integer range 0 to 512       := 0;
181
      sysfreq  : integer := 50000;
182
      keepclk  : integer range 0 to 1         := 0;
183
      sepirq   : integer range 0 to 1         := 0;
184
      irqi     : integer range 0 to NAHBIRQ-1 := 1;
185
      irqo     : integer range 0 to NAHBIRQ-1 := 2);
186
    port (
187
      uclk  : in  std_ulogic;
188
      usbi  : in  grusb_in_type;
189
      usbo  : out grusb_out_type;
190
      hclk  : in  std_ulogic;
191
      hrst  : in  std_ulogic;
192
      ahbmi : in  ahb_mst_in_type;
193
      ahbmo : out ahb_mst_out_type;
194
      ahbsi : in  ahb_slv_in_type;
195
      ahbso : out ahb_slv_out_type
196
    );
197
  end component;
198
 
199
  component grusb_dcl is
200
    generic (
201
      hindex   : integer                := 0;
202
      memtech  : integer                := DEFMEMTECH;
203
      uiface   : integer range 0 to 1   := 0;
204
      dwidth   : integer range 8 to 16  := 8;
205
      oepol    : integer range 0 to 1   := 0;
206
      syncprst : integer range 0 to 1   := 0;
207
      prsttime : integer range 0 to 512 := 0;
208
      sysfreq  : integer                := 50000;
209
      keepclk  : integer range 0 to 1   := 0
210
    );
211
    port (
212
      uclk : in  std_ulogic;
213
      usbi : in  grusb_in_type;
214
      usbo : out grusb_out_type;
215
      hclk : in  std_ulogic;
216
      hrst : in  std_ulogic;
217
      ahbi : in  ahb_mst_in_type;
218
      ahbo : out ahb_mst_out_type
219
    );
220
  end component grusb_dcl;
221
 
222
end grusb;
223
 

powered by: WebSVN 2.1.0

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