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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [wrapper/] [usbHostSlave.v] - Blame information for rev 18

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 sfielding
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
//// usbHostSlave.v                                               ////
4
////                                                              ////
5
//// This file is part of the usbhostslave opencores effort.
6
//// <http://www.opencores.org/cores//>                           ////
7
////                                                              ////
8
//// Module Description:                                          ////
9
////   Top level module
10
////                                                              ////
11
//// To Do:                                                       ////
12
//// 
13
////                                                              ////
14
//// Author(s):                                                   ////
15
//// - Steve Fielding, sfielding@base2designs.com                 ////
16
////                                                              ////
17
//////////////////////////////////////////////////////////////////////
18
////                                                              ////
19
//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG          ////
20
////                                                              ////
21
//// This source file may be used and distributed without         ////
22
//// restriction provided that this copyright statement is not    ////
23
//// removed from the file and that any derivative work contains  ////
24
//// the original copyright notice and the associated disclaimer. ////
25
////                                                              ////
26
//// This source file is free software; you can redistribute it   ////
27
//// and/or modify it under the terms of the GNU Lesser General   ////
28
//// Public License as published by the Free Software Foundation; ////
29
//// either version 2.1 of the License, or (at your option) any   ////
30
//// later version.                                               ////
31
////                                                              ////
32
//// This source is distributed in the hope that it will be       ////
33
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
34
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
35
//// PURPOSE. See the GNU Lesser General Public License for more  ////
36
//// details.                                                     ////
37
////                                                              ////
38
//// You should have received a copy of the GNU Lesser General    ////
39
//// Public License along with this source; if not, download it   ////
40
//// from <http://www.opencores.org/lgpl.shtml>                   ////
41
////                                                              ////
42
//////////////////////////////////////////////////////////////////////
43
//
44 9 sfielding
`timescale 1ns / 1ps
45 2 sfielding
 
46
module usbHostSlave(
47 18 sfielding
  clk_i,
48
  rst_i,
49 2 sfielding
  address_i,
50
  data_i,
51
  data_o,
52 18 sfielding
  we_i,
53 2 sfielding
  strobe_i,
54
  ack_o,
55 18 sfielding
  usbClk,
56 2 sfielding
  hostSOFSentIntOut,
57
  hostConnEventIntOut,
58
  hostResumeIntOut,
59
  hostTransDoneIntOut,
60
  slaveNAKSentIntOut,
61
  slaveSOFRxedIntOut,
62
  slaveResetEventIntOut,
63
  slaveResumeIntOut,
64
  slaveTransDoneIntOut,
65 5 sfielding
  USBWireDataIn,
66
  USBWireDataInTick,
67 2 sfielding
  USBWireDataOut,
68
  USBWireDataOutTick,
69 9 sfielding
  USBWireCtrlOut,
70
  USBFullSpeed
71 5 sfielding
   );
72
  parameter HOST_FIFO_DEPTH = 64; //HOST_FIFO_DEPTH = HOST_ADDR_WIDTH^2
73 2 sfielding
  parameter HOST_FIFO_ADDR_WIDTH = 6;
74 5 sfielding
  parameter EP0_FIFO_DEPTH = 64;
75 2 sfielding
  parameter EP0_FIFO_ADDR_WIDTH = 6;
76 5 sfielding
  parameter EP1_FIFO_DEPTH = 64;
77 2 sfielding
  parameter EP1_FIFO_ADDR_WIDTH = 6;
78 5 sfielding
  parameter EP2_FIFO_DEPTH = 64;
79 2 sfielding
  parameter EP2_FIFO_ADDR_WIDTH = 6;
80 5 sfielding
  parameter EP3_FIFO_DEPTH = 64;
81 2 sfielding
  parameter EP3_FIFO_ADDR_WIDTH = 6;
82
 
83 18 sfielding
input clk_i;               //Wishbone bus clock. Maximum 5*usbClk=240MHz
84
input rst_i;               //Wishbone bus sync reset. Synchronous to 'clk_i'. Resets all logic
85
input [7:0] address_i;     //Wishbone bus address in
86
input [7:0] data_i;        //Wishbone bus data in
87
output [7:0] data_o;       //Wishbone bus data out
88
input we_i;                //Wishbone bus write enable in
89
input strobe_i;            //Wishbone bus strobe in
90
output ack_o;              //Wishbone bus acknowledge out
91
input usbClk;              //usb clock. 48Mhz +/-0.25%
92 2 sfielding
output hostSOFSentIntOut;
93
output hostConnEventIntOut;
94
output hostResumeIntOut;
95
output hostTransDoneIntOut;
96
output slaveSOFRxedIntOut;
97
output slaveResetEventIntOut;
98
output slaveResumeIntOut;
99
output slaveTransDoneIntOut;
100
output slaveNAKSentIntOut;
101
input [1:0] USBWireDataIn;
102
output [1:0] USBWireDataOut;
103
output USBWireDataOutTick;
104
output USBWireDataInTick;
105
output USBWireCtrlOut;
106 9 sfielding
output USBFullSpeed;
107 2 sfielding
 
108 18 sfielding
wire clk_i;
109
wire rst_i;
110 2 sfielding
wire [7:0] address_i;
111
wire [7:0] data_i;
112
wire [7:0] data_o;
113 18 sfielding
wire we_i;
114 2 sfielding
wire strobe_i;
115
wire ack_o;
116 18 sfielding
wire usbClk;
117 2 sfielding
wire hostSOFSentIntOut;
118
wire hostConnEventIntOut;
119
wire hostResumeIntOut;
120
wire hostTransDoneIntOut;
121
wire slaveSOFRxedIntOut;
122
wire slaveResetEventIntOut;
123
wire slaveResumeIntOut;
124
wire slaveTransDoneIntOut;
125
wire slaveNAKSentIntOut;
126
wire [1:0] USBWireDataIn;
127
wire [1:0] USBWireDataOut;
128
wire USBWireDataOutTick;
129
wire USBWireDataInTick;
130
wire USBWireCtrlOut;
131 9 sfielding
wire USBFullSpeed;
132 2 sfielding
 
133
//internal wiring
134
wire hostControlSel;
135
wire slaveControlSel;
136
wire hostRxFifoSel;
137
wire hostTxFifoSel;
138
wire hostSlaveMuxSel;
139
wire [7:0] dataFromHostControl;
140
wire [7:0] dataFromSlaveControl;
141
wire [7:0] dataFromHostRxFifo;
142
wire [7:0] dataFromHostTxFifo;
143
wire [7:0] dataFromHostSlaveMux;
144
wire hostTxFifoRE;
145
wire [7:0] hostTxFifoData;
146
wire hostTxFifoEmpty;
147
wire hostRxFifoWE;
148
wire [7:0] hostRxFifoData;
149
wire hostRxFifoFull;
150
wire [7:0] RxCtrlOut;
151
wire [7:0] RxDataFromSIE;
152
wire RxDataOutWEn;
153
wire fullSpeedBitRateFromHost;
154
wire fullSpeedBitRateFromSlave;
155
wire fullSpeedPolarityFromHost;
156
wire fullSpeedPolarityFromSlave;
157
wire SIEPortWEnFromHost;
158
wire SIEPortWEnFromSlave;
159
wire SIEPortTxRdy;
160
wire [7:0] SIEPortDataInFromHost;
161
wire [7:0] SIEPortDataInFromSlave;
162
wire [7:0] SIEPortCtrlInFromHost;
163
wire [7:0] SIEPortCtrlInFromSlave;
164
wire [1:0] connectState;
165
wire resumeDetected;
166
wire [7:0] SIEPortDataInToSIE;
167
wire SIEPortWEnToSIE;
168
wire [7:0] SIEPortCtrlInToSIE;
169
wire fullSpeedPolarityToSIE;
170
wire fullSpeedBitRateToSIE;
171
wire noActivityTimeOut;
172
wire TxFifoEP0REn;
173
wire TxFifoEP1REn;
174
wire TxFifoEP2REn;
175
wire TxFifoEP3REn;
176
wire [7:0] TxFifoEP0Data;
177
wire [7:0] TxFifoEP1Data;
178
wire [7:0] TxFifoEP2Data;
179
wire [7:0] TxFifoEP3Data;
180
wire TxFifoEP0Empty;
181
wire TxFifoEP1Empty;
182
wire TxFifoEP2Empty;
183
wire TxFifoEP3Empty;
184
wire RxFifoEP0WEn;
185
wire RxFifoEP1WEn;
186
wire RxFifoEP2WEn;
187
wire RxFifoEP3WEn;
188
wire RxFifoEP0Full;
189
wire RxFifoEP1Full;
190
wire RxFifoEP2Full;
191
wire RxFifoEP3Full;
192
wire [7:0] slaveRxFifoData;
193
wire [7:0] dataFromEP0RxFifo;
194
wire [7:0] dataFromEP1RxFifo;
195
wire [7:0] dataFromEP2RxFifo;
196
wire [7:0] dataFromEP3RxFifo;
197
wire [7:0] dataFromEP0TxFifo;
198
wire [7:0] dataFromEP1TxFifo;
199
wire [7:0] dataFromEP2TxFifo;
200
wire [7:0] dataFromEP3TxFifo;
201
wire slaveEP0RxFifoSel;
202
wire slaveEP1RxFifoSel;
203
wire slaveEP2RxFifoSel;
204
wire slaveEP3RxFifoSel;
205
wire slaveEP0TxFifoSel;
206
wire slaveEP1TxFifoSel;
207
wire slaveEP2TxFifoSel;
208
wire slaveEP3TxFifoSel;
209 18 sfielding
wire rstSyncToBusClk;
210
wire rstSyncToUsbClk;
211 2 sfielding
 
212 9 sfielding
assign USBFullSpeed = fullSpeedBitRateToSIE;
213
 
214 2 sfielding
usbHostControl u_usbHostControl(
215 18 sfielding
  .busClk(clk_i),
216
  .rstSyncToBusClk(rstSyncToBusClk),
217
  .usbClk(usbClk),
218
  .rstSyncToUsbClk(rstSyncToUsbClk),
219 5 sfielding
  .TxFifoRE(hostTxFifoRE),
220 2 sfielding
  .TxFifoData(hostTxFifoData),
221
  .TxFifoEmpty(hostTxFifoEmpty),
222 5 sfielding
  .RxFifoWE(hostRxFifoWE),
223 2 sfielding
  .RxFifoData(hostRxFifoData),
224
  .RxFifoFull(hostRxFifoFull),
225 5 sfielding
  .RxByteStatus(RxCtrlOut),
226 2 sfielding
  .RxData(RxDataFromSIE),
227
  .RxDataValid(RxDataOutWEn),
228 5 sfielding
  .SIERxTimeOut(noActivityTimeOut),
229
  .fullSpeedRate(fullSpeedBitRateFromHost),
230 2 sfielding
  .fullSpeedPol(fullSpeedPolarityFromHost),
231 5 sfielding
  .HCTxPortEn(SIEPortWEnFromHost),
232 2 sfielding
  .HCTxPortRdy(SIEPortTxRdy),
233 5 sfielding
  .HCTxPortData(SIEPortDataInFromHost),
234 2 sfielding
  .HCTxPortCtrl(SIEPortCtrlInFromHost),
235 5 sfielding
  .connectStateIn(connectState),
236
  .resumeDetectedIn(resumeDetected),
237 2 sfielding
  .busAddress(address_i[3:0]),
238
  .busDataIn(data_i),
239
  .busDataOut(dataFromHostControl),
240 18 sfielding
  .busWriteEn(we_i),
241 2 sfielding
  .busStrobe_i(strobe_i),
242 5 sfielding
  .SOFSentIntOut(hostSOFSentIntOut),
243 2 sfielding
  .connEventIntOut(hostConnEventIntOut),
244
  .resumeIntOut(hostResumeIntOut),
245
  .transDoneIntOut(hostTransDoneIntOut),
246
  .hostControlSelect(hostControlSel) );
247
 
248
 
249
usbSlaveControl u_usbSlaveControl(
250 18 sfielding
  .busClk(clk_i),
251
  .rstSyncToBusClk(rstSyncToBusClk),
252
  .usbClk(usbClk),
253
  .rstSyncToUsbClk(rstSyncToUsbClk),
254 5 sfielding
  .RxByteStatus(RxCtrlOut),
255 2 sfielding
  .RxData(RxDataFromSIE),
256
  .RxDataValid(RxDataOutWEn),
257 5 sfielding
  .SIERxTimeOut(noActivityTimeOut),
258 2 sfielding
  .RxFifoData(slaveRxFifoData),
259 5 sfielding
  .fullSpeedRate(fullSpeedBitRateFromSlave),
260 2 sfielding
  .fullSpeedPol(fullSpeedPolarityFromSlave),
261 5 sfielding
  .SCTxPortEn(SIEPortWEnFromSlave),
262 2 sfielding
  .SCTxPortRdy(SIEPortTxRdy),
263 5 sfielding
  .SCTxPortData(SIEPortDataInFromSlave),
264 2 sfielding
  .SCTxPortCtrl(SIEPortCtrlInFromSlave),
265 5 sfielding
  .connectStateIn(connectState),
266
  .resumeDetectedIn(resumeDetected),
267 2 sfielding
  .busAddress(address_i[4:0]),
268
  .busDataIn(data_i),
269
  .busDataOut(dataFromSlaveControl),
270 18 sfielding
  .busWriteEn(we_i),
271 2 sfielding
  .busStrobe_i(strobe_i),
272 5 sfielding
  .SOFRxedIntOut(slaveSOFRxedIntOut),
273 2 sfielding
  .resetEventIntOut(slaveResetEventIntOut),
274
  .resumeIntOut(slaveResumeIntOut),
275
  .transDoneIntOut(slaveTransDoneIntOut),
276
  .NAKSentIntOut(slaveNAKSentIntOut),
277
  .slaveControlSelect(slaveControlSel),
278
  .TxFifoEP0REn(TxFifoEP0REn),
279
  .TxFifoEP1REn(TxFifoEP1REn),
280
  .TxFifoEP2REn(TxFifoEP2REn),
281
  .TxFifoEP3REn(TxFifoEP3REn),
282
  .TxFifoEP0Data(TxFifoEP0Data),
283
  .TxFifoEP1Data(TxFifoEP1Data),
284
  .TxFifoEP2Data(TxFifoEP2Data),
285
  .TxFifoEP3Data(TxFifoEP3Data),
286
  .TxFifoEP0Empty(TxFifoEP0Empty),
287
  .TxFifoEP1Empty(TxFifoEP1Empty),
288
  .TxFifoEP2Empty(TxFifoEP2Empty),
289
  .TxFifoEP3Empty(TxFifoEP3Empty),
290
  .RxFifoEP0WEn(RxFifoEP0WEn),
291
  .RxFifoEP1WEn(RxFifoEP1WEn),
292
  .RxFifoEP2WEn(RxFifoEP2WEn),
293
  .RxFifoEP3WEn(RxFifoEP3WEn),
294
  .RxFifoEP0Full(RxFifoEP0Full),
295
  .RxFifoEP1Full(RxFifoEP1Full),
296
  .RxFifoEP2Full(RxFifoEP2Full),
297
  .RxFifoEP3Full(RxFifoEP3Full)
298
  );
299
 
300
wishBoneBI u_wishBoneBI (
301
  .address(address_i),
302
  .dataIn(data_i),
303
  .dataOut(data_o),
304 18 sfielding
  .writeEn(we_i),
305 2 sfielding
  .strobe_i(strobe_i),
306
  .ack_o(ack_o),
307 18 sfielding
  .clk(clk_i),
308
  .rst(rstSyncToBusClk),
309 5 sfielding
  .hostControlSel(hostControlSel),
310 2 sfielding
  .hostRxFifoSel(hostRxFifoSel),
311
  .hostTxFifoSel(hostTxFifoSel),
312
  .slaveControlSel(slaveControlSel),
313
  .slaveEP0RxFifoSel(slaveEP0RxFifoSel),
314
  .slaveEP1RxFifoSel(slaveEP1RxFifoSel),
315
  .slaveEP2RxFifoSel(slaveEP2RxFifoSel),
316
  .slaveEP3RxFifoSel(slaveEP3RxFifoSel),
317
  .slaveEP0TxFifoSel(slaveEP0TxFifoSel),
318
  .slaveEP1TxFifoSel(slaveEP1TxFifoSel),
319
  .slaveEP2TxFifoSel(slaveEP2TxFifoSel),
320
  .slaveEP3TxFifoSel(slaveEP3TxFifoSel),
321
  .hostSlaveMuxSel(hostSlaveMuxSel),
322
  .dataFromHostControl(dataFromHostControl),
323
  .dataFromHostRxFifo(dataFromHostRxFifo),
324
  .dataFromHostTxFifo(dataFromHostTxFifo),
325
  .dataFromSlaveControl(dataFromSlaveControl),
326
  .dataFromEP0RxFifo(dataFromEP0RxFifo),
327
  .dataFromEP1RxFifo(dataFromEP1RxFifo),
328
  .dataFromEP2RxFifo(dataFromEP2RxFifo),
329
  .dataFromEP3RxFifo(dataFromEP3RxFifo),
330
  .dataFromEP0TxFifo(dataFromEP0TxFifo),
331
  .dataFromEP1TxFifo(dataFromEP1TxFifo),
332
  .dataFromEP2TxFifo(dataFromEP2TxFifo),
333
  .dataFromEP3TxFifo(dataFromEP3TxFifo),
334
  .dataFromHostSlaveMux(dataFromHostSlaveMux)
335 5 sfielding
   );
336 2 sfielding
 
337
hostSlaveMux u_hostSlaveMux(
338 5 sfielding
  .SIEPortCtrlInToSIE(SIEPortCtrlInToSIE),
339
  .SIEPortCtrlInFromHost(SIEPortCtrlInFromHost),
340
  .SIEPortCtrlInFromSlave(SIEPortCtrlInFromSlave),
341
  .SIEPortDataInToSIE(SIEPortDataInToSIE),
342
  .SIEPortDataInFromHost(SIEPortDataInFromHost),
343
  .SIEPortDataInFromSlave(SIEPortDataInFromSlave),
344
  .SIEPortWEnToSIE(SIEPortWEnToSIE),
345
  .SIEPortWEnFromHost(SIEPortWEnFromHost),
346
  .SIEPortWEnFromSlave(SIEPortWEnFromSlave),
347
  .fullSpeedPolarityToSIE(fullSpeedPolarityToSIE),
348
  .fullSpeedPolarityFromHost(fullSpeedPolarityFromHost),
349
  .fullSpeedPolarityFromSlave(fullSpeedPolarityFromSlave),
350
  .fullSpeedBitRateToSIE(fullSpeedBitRateToSIE),
351
  .fullSpeedBitRateFromHost(fullSpeedBitRateFromHost),
352
  .fullSpeedBitRateFromSlave(fullSpeedBitRateFromSlave),
353 2 sfielding
  .dataIn(data_i),
354 9 sfielding
  .dataOut(dataFromHostSlaveMux),
355
  .address(address_i[0]),
356 18 sfielding
  .writeEn(we_i),
357 2 sfielding
  .strobe_i(strobe_i),
358 18 sfielding
  .usbClk(usbClk),
359
  .busClk(clk_i),
360
  .hostSlaveMuxSel(hostSlaveMuxSel),
361
  .rstFromWire(rst_i),
362
  .rstSyncToBusClkOut(rstSyncToBusClk),
363
  .rstSyncToUsbClkOut(rstSyncToUsbClk)
364
);
365 2 sfielding
 
366
usbSerialInterfaceEngine u_usbSerialInterfaceEngine(
367 18 sfielding
  .clk(usbClk),
368
  .rst(rstSyncToUsbClk),
369 5 sfielding
  .USBWireDataIn(USBWireDataIn),
370
  .USBWireDataOut(USBWireDataOut),
371
  .USBWireDataInTick(USBWireDataInTick),
372
  .USBWireDataOutTick(USBWireDataOutTick),
373
  .USBWireCtrlOut(USBWireCtrlOut),
374
  .connectState(connectState),
375
  .resumeDetected(resumeDetected),
376
  .RxCtrlOut(RxCtrlOut),
377
  .RxDataOutWEn(RxDataOutWEn),
378
  .RxDataOut(RxDataFromSIE),
379
  .SIEPortCtrlIn(SIEPortCtrlInToSIE),
380
  .SIEPortDataIn(SIEPortDataInToSIE),
381
  .SIEPortTxRdy(SIEPortTxRdy),
382
  .SIEPortWEn(SIEPortWEnToSIE),
383
  .fullSpeedPolarity(fullSpeedPolarityToSIE),
384
  .fullSpeedBitRate(fullSpeedBitRateToSIE),
385 2 sfielding
  .noActivityTimeOut(noActivityTimeOut)
386
);
387
 
388
//---Host fifos
389
TxFifo #(HOST_FIFO_DEPTH, HOST_FIFO_ADDR_WIDTH) HostTxFifo (
390 18 sfielding
  .usbClk(usbClk),
391
  .busClk(clk_i),
392
  .rstSyncToBusClk(rstSyncToBusClk),
393
  .rstSyncToUsbClk(rstSyncToUsbClk),
394 2 sfielding
  .fifoREn(hostTxFifoRE),
395
  .fifoEmpty(hostTxFifoEmpty),
396
  .busAddress(address_i[2:0]),
397 18 sfielding
  .busWriteEn(we_i),
398 2 sfielding
  .busStrobe_i(strobe_i),
399
  .busFifoSelect(hostTxFifoSel),
400
  .busDataIn(data_i),
401
  .busDataOut(dataFromHostTxFifo),
402
  .fifoDataOut(hostTxFifoData) );
403
 
404
 
405
RxFifo #(HOST_FIFO_DEPTH, HOST_FIFO_ADDR_WIDTH) HostRxFifo(
406 18 sfielding
  .usbClk(usbClk),
407
  .busClk(clk_i),
408
  .rstSyncToBusClk(rstSyncToBusClk),
409
  .rstSyncToUsbClk(rstSyncToUsbClk),
410 2 sfielding
  .fifoWEn(hostRxFifoWE),
411
  .fifoFull(hostRxFifoFull),
412
  .busAddress(address_i[2:0]),
413 18 sfielding
  .busWriteEn(we_i),
414 2 sfielding
  .busStrobe_i(strobe_i),
415
  .busFifoSelect(hostRxFifoSel),
416
  .busDataIn(data_i),
417
  .busDataOut(dataFromHostRxFifo),
418
  .fifoDataIn(hostRxFifoData)  );
419
 
420
//---Slave fifos
421
 
422
TxFifo #(EP0_FIFO_DEPTH, EP0_FIFO_ADDR_WIDTH) EP0TxFifo (
423 18 sfielding
  .usbClk(usbClk),
424
  .busClk(clk_i),
425
  .rstSyncToBusClk(rstSyncToBusClk),
426
  .rstSyncToUsbClk(rstSyncToUsbClk),
427 2 sfielding
  .fifoREn(TxFifoEP0REn),
428
  .fifoEmpty(TxFifoEP0Empty),
429
  .busAddress(address_i[2:0]),
430 18 sfielding
  .busWriteEn(we_i),
431 2 sfielding
  .busStrobe_i(strobe_i),
432
  .busFifoSelect(slaveEP0TxFifoSel),
433 18 sfielding
  .busDataIn(data_i),
434 2 sfielding
  .busDataOut(dataFromEP0TxFifo),
435
  .fifoDataOut(TxFifoEP0Data) );
436
 
437
TxFifo #(EP1_FIFO_DEPTH, EP1_FIFO_ADDR_WIDTH) EP1TxFifo (
438 18 sfielding
  .usbClk(usbClk),
439
  .busClk(clk_i),
440
  .rstSyncToBusClk(rstSyncToBusClk),
441
  .rstSyncToUsbClk(rstSyncToUsbClk),
442 2 sfielding
  .fifoREn(TxFifoEP1REn),
443
  .fifoEmpty(TxFifoEP1Empty),
444
  .busAddress(address_i[2:0]),
445 18 sfielding
  .busWriteEn(we_i),
446 2 sfielding
  .busStrobe_i(strobe_i),
447
  .busFifoSelect(slaveEP1TxFifoSel),
448
  .busDataIn(data_i),
449
  .busDataOut(dataFromEP1TxFifo),
450
  .fifoDataOut(TxFifoEP1Data) );
451
 
452 18 sfielding
TxFifo #(EP2_FIFO_DEPTH, EP2_FIFO_ADDR_WIDTH) EP2TxFifo (
453
  .usbClk(usbClk),
454
  .busClk(clk_i),
455
  .rstSyncToBusClk(rstSyncToBusClk),
456
  .rstSyncToUsbClk(rstSyncToUsbClk),
457 2 sfielding
  .fifoREn(TxFifoEP2REn),
458
  .fifoEmpty(TxFifoEP2Empty),
459
  .busAddress(address_i[2:0]),
460 18 sfielding
  .busWriteEn(we_i),
461 2 sfielding
  .busStrobe_i(strobe_i),
462
  .busFifoSelect(slaveEP2TxFifoSel),
463
  .busDataIn(data_i),
464
  .busDataOut(dataFromEP2TxFifo),
465
  .fifoDataOut(TxFifoEP2Data) );
466
 
467 18 sfielding
TxFifo #(EP3_FIFO_DEPTH, EP3_FIFO_ADDR_WIDTH) EP3TxFifo (
468
  .usbClk(usbClk),
469
  .busClk(clk_i),
470
  .rstSyncToBusClk(rstSyncToBusClk),
471
  .rstSyncToUsbClk(rstSyncToUsbClk),
472 2 sfielding
  .fifoREn(TxFifoEP3REn),
473
  .fifoEmpty(TxFifoEP3Empty),
474
  .busAddress(address_i[2:0]),
475 18 sfielding
  .busWriteEn(we_i),
476 2 sfielding
  .busStrobe_i(strobe_i),
477
  .busFifoSelect(slaveEP3TxFifoSel),
478
  .busDataIn(data_i),
479
  .busDataOut(dataFromEP3TxFifo),
480
  .fifoDataOut(TxFifoEP3Data) );
481
 
482
RxFifo #(EP0_FIFO_DEPTH, EP0_FIFO_ADDR_WIDTH) EP0RxFifo(
483 18 sfielding
  .usbClk(usbClk),
484
  .busClk(clk_i),
485
  .rstSyncToBusClk(rstSyncToBusClk),
486
  .rstSyncToUsbClk(rstSyncToUsbClk),
487 2 sfielding
  .fifoWEn(RxFifoEP0WEn),
488
  .fifoFull(RxFifoEP0Full),
489
  .busAddress(address_i[2:0]),
490 18 sfielding
  .busWriteEn(we_i),
491 2 sfielding
  .busStrobe_i(strobe_i),
492
  .busFifoSelect(slaveEP0RxFifoSel),
493
  .busDataIn(data_i),
494
  .busDataOut(dataFromEP0RxFifo),
495
  .fifoDataIn(slaveRxFifoData)  );
496
 
497
RxFifo #(EP1_FIFO_DEPTH, EP1_FIFO_ADDR_WIDTH) EP1RxFifo(
498 18 sfielding
  .usbClk(usbClk),
499
  .busClk(clk_i),
500
  .rstSyncToBusClk(rstSyncToBusClk),
501
  .rstSyncToUsbClk(rstSyncToUsbClk),
502 2 sfielding
  .fifoWEn(RxFifoEP1WEn),
503
  .fifoFull(RxFifoEP1Full),
504
  .busAddress(address_i[2:0]),
505 18 sfielding
  .busWriteEn(we_i),
506 2 sfielding
  .busStrobe_i(strobe_i),
507
  .busFifoSelect(slaveEP1RxFifoSel),
508
  .busDataIn(data_i),
509
  .busDataOut(dataFromEP1RxFifo),
510
  .fifoDataIn(slaveRxFifoData)  );
511
 
512
RxFifo #(EP2_FIFO_DEPTH, EP2_FIFO_ADDR_WIDTH) EP2RxFifo(
513 18 sfielding
  .usbClk(usbClk),
514
  .busClk(clk_i),
515
  .rstSyncToBusClk(rstSyncToBusClk),
516
  .rstSyncToUsbClk(rstSyncToUsbClk),
517 2 sfielding
  .fifoWEn(RxFifoEP2WEn),
518
  .fifoFull(RxFifoEP2Full),
519
  .busAddress(address_i[2:0]),
520 18 sfielding
  .busWriteEn(we_i),
521 2 sfielding
  .busStrobe_i(strobe_i),
522
  .busFifoSelect(slaveEP2RxFifoSel),
523
  .busDataIn(data_i),
524
  .busDataOut(dataFromEP2RxFifo),
525
  .fifoDataIn(slaveRxFifoData)  );
526
 
527
RxFifo #(EP3_FIFO_DEPTH, EP3_FIFO_ADDR_WIDTH) EP3RxFifo(
528 18 sfielding
  .usbClk(usbClk),
529
  .busClk(clk_i),
530
  .rstSyncToBusClk(rstSyncToBusClk),
531
  .rstSyncToUsbClk(rstSyncToUsbClk),
532 2 sfielding
  .fifoWEn(RxFifoEP3WEn),
533
  .fifoFull(RxFifoEP3Full),
534
  .busAddress(address_i[2:0]),
535 18 sfielding
  .busWriteEn(we_i),
536 2 sfielding
  .busStrobe_i(strobe_i),
537
  .busFifoSelect(slaveEP3RxFifoSel),
538
  .busDataIn(data_i),
539
  .busDataOut(dataFromEP3RxFifo),
540
  .fifoDataIn(slaveRxFifoData)  );
541
 
542
endmodule
543
 
544 5 sfielding
 
545
 
546 2 sfielding
 
547
 
548
 
549
 

powered by: WebSVN 2.1.0

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