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

Subversion Repositories usbhostslave

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

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

Line No. Rev Author Line
1 22 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
`include "timescale.v"
45
 
46
module usbHostSlave(
47
  clk_i,
48
  rst_i,
49
  address_i,
50
  data_i,
51
  data_o,
52
  we_i,
53
  strobe_i,
54
  ack_o,
55
  usbClk,
56
  hostSOFSentIntOut,
57
  hostConnEventIntOut,
58
  hostResumeIntOut,
59
  hostTransDoneIntOut,
60
  slaveNAKSentIntOut,
61
  slaveSOFRxedIntOut,
62
  slaveResetEventIntOut,
63
  slaveResumeIntOut,
64
  slaveTransDoneIntOut,
65
  USBWireDataIn,
66
  USBWireDataInTick,
67
  USBWireDataOut,
68
  USBWireDataOutTick,
69
  USBWireCtrlOut,
70
  USBFullSpeed
71
   );
72
  parameter HOST_FIFO_DEPTH = 64; //HOST_FIFO_DEPTH = HOST_ADDR_WIDTH^2
73
  parameter HOST_FIFO_ADDR_WIDTH = 6;
74
  parameter EP0_FIFO_DEPTH = 64;
75
  parameter EP0_FIFO_ADDR_WIDTH = 6;
76
  parameter EP1_FIFO_DEPTH = 64;
77
  parameter EP1_FIFO_ADDR_WIDTH = 6;
78
  parameter EP2_FIFO_DEPTH = 64;
79
  parameter EP2_FIFO_ADDR_WIDTH = 6;
80
  parameter EP3_FIFO_DEPTH = 64;
81
  parameter EP3_FIFO_ADDR_WIDTH = 6;
82
 
83
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
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
output USBFullSpeed;
107
 
108
wire clk_i;
109
wire rst_i;
110
wire [7:0] address_i;
111
wire [7:0] data_i;
112
wire [7:0] data_o;
113
wire we_i;
114
wire strobe_i;
115
wire ack_o;
116
wire usbClk;
117
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
wire USBFullSpeed;
132
 
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
wire rstSyncToBusClk;
210
wire rstSyncToUsbClk;
211
wire noActivityTimeOutEnableToSIE;
212
wire noActivityTimeOutEnableFromHost;
213
wire noActivityTimeOutEnableFromSlave;
214
 
215
assign USBFullSpeed = fullSpeedBitRateToSIE;
216
 
217
usbHostControl u_usbHostControl(
218
  .busClk(clk_i),
219
  .rstSyncToBusClk(rstSyncToBusClk),
220
  .usbClk(usbClk),
221
  .rstSyncToUsbClk(rstSyncToUsbClk),
222
  .TxFifoRE(hostTxFifoRE),
223
  .TxFifoData(hostTxFifoData),
224
  .TxFifoEmpty(hostTxFifoEmpty),
225
  .RxFifoWE(hostRxFifoWE),
226
  .RxFifoData(hostRxFifoData),
227
  .RxFifoFull(hostRxFifoFull),
228
  .RxByteStatus(RxCtrlOut),
229
  .RxData(RxDataFromSIE),
230
  .RxDataValid(RxDataOutWEn),
231
  .SIERxTimeOut(noActivityTimeOut),
232
  .SIERxTimeOutEn(noActivityTimeOutEnableFromHost),
233
  .fullSpeedRate(fullSpeedBitRateFromHost),
234
  .fullSpeedPol(fullSpeedPolarityFromHost),
235
  .HCTxPortEn(SIEPortWEnFromHost),
236
  .HCTxPortRdy(SIEPortTxRdy),
237
  .HCTxPortData(SIEPortDataInFromHost),
238
  .HCTxPortCtrl(SIEPortCtrlInFromHost),
239
  .connectStateIn(connectState),
240
  .resumeDetectedIn(resumeDetected),
241
  .busAddress(address_i[3:0]),
242
  .busDataIn(data_i),
243
  .busDataOut(dataFromHostControl),
244
  .busWriteEn(we_i),
245
  .busStrobe_i(strobe_i),
246
  .SOFSentIntOut(hostSOFSentIntOut),
247
  .connEventIntOut(hostConnEventIntOut),
248
  .resumeIntOut(hostResumeIntOut),
249
  .transDoneIntOut(hostTransDoneIntOut),
250
  .hostControlSelect(hostControlSel) );
251
 
252
 
253
usbSlaveControl u_usbSlaveControl(
254
  .busClk(clk_i),
255
  .rstSyncToBusClk(rstSyncToBusClk),
256
  .usbClk(usbClk),
257
  .rstSyncToUsbClk(rstSyncToUsbClk),
258
  .RxByteStatus(RxCtrlOut),
259
  .RxData(RxDataFromSIE),
260
  .RxDataValid(RxDataOutWEn),
261
  .SIERxTimeOut(noActivityTimeOut),
262
  .SIERxTimeOutEn(noActivityTimeOutEnableFromSlave),
263
  .RxFifoData(slaveRxFifoData),
264
  .fullSpeedRate(fullSpeedBitRateFromSlave),
265
  .fullSpeedPol(fullSpeedPolarityFromSlave),
266
  .SCTxPortEn(SIEPortWEnFromSlave),
267
  .SCTxPortRdy(SIEPortTxRdy),
268
  .SCTxPortData(SIEPortDataInFromSlave),
269
  .SCTxPortCtrl(SIEPortCtrlInFromSlave),
270
  .connectStateIn(connectState),
271
  .resumeDetectedIn(resumeDetected),
272
  .busAddress(address_i[4:0]),
273
  .busDataIn(data_i),
274
  .busDataOut(dataFromSlaveControl),
275
  .busWriteEn(we_i),
276
  .busStrobe_i(strobe_i),
277
  .SOFRxedIntOut(slaveSOFRxedIntOut),
278
  .resetEventIntOut(slaveResetEventIntOut),
279
  .resumeIntOut(slaveResumeIntOut),
280
  .transDoneIntOut(slaveTransDoneIntOut),
281
  .NAKSentIntOut(slaveNAKSentIntOut),
282
  .slaveControlSelect(slaveControlSel),
283
  .TxFifoEP0REn(TxFifoEP0REn),
284
  .TxFifoEP1REn(TxFifoEP1REn),
285
  .TxFifoEP2REn(TxFifoEP2REn),
286
  .TxFifoEP3REn(TxFifoEP3REn),
287
  .TxFifoEP0Data(TxFifoEP0Data),
288
  .TxFifoEP1Data(TxFifoEP1Data),
289
  .TxFifoEP2Data(TxFifoEP2Data),
290
  .TxFifoEP3Data(TxFifoEP3Data),
291
  .TxFifoEP0Empty(TxFifoEP0Empty),
292
  .TxFifoEP1Empty(TxFifoEP1Empty),
293
  .TxFifoEP2Empty(TxFifoEP2Empty),
294
  .TxFifoEP3Empty(TxFifoEP3Empty),
295
  .RxFifoEP0WEn(RxFifoEP0WEn),
296
  .RxFifoEP1WEn(RxFifoEP1WEn),
297
  .RxFifoEP2WEn(RxFifoEP2WEn),
298
  .RxFifoEP3WEn(RxFifoEP3WEn),
299
  .RxFifoEP0Full(RxFifoEP0Full),
300
  .RxFifoEP1Full(RxFifoEP1Full),
301
  .RxFifoEP2Full(RxFifoEP2Full),
302
  .RxFifoEP3Full(RxFifoEP3Full)
303
  );
304
 
305
wishBoneBI u_wishBoneBI (
306
  .address(address_i),
307
  .dataIn(data_i),
308
  .dataOut(data_o),
309
  .writeEn(we_i),
310
  .strobe_i(strobe_i),
311
  .ack_o(ack_o),
312
  .clk(clk_i),
313
  .rst(rstSyncToBusClk),
314
  .hostControlSel(hostControlSel),
315
  .hostRxFifoSel(hostRxFifoSel),
316
  .hostTxFifoSel(hostTxFifoSel),
317
  .slaveControlSel(slaveControlSel),
318
  .slaveEP0RxFifoSel(slaveEP0RxFifoSel),
319
  .slaveEP1RxFifoSel(slaveEP1RxFifoSel),
320
  .slaveEP2RxFifoSel(slaveEP2RxFifoSel),
321
  .slaveEP3RxFifoSel(slaveEP3RxFifoSel),
322
  .slaveEP0TxFifoSel(slaveEP0TxFifoSel),
323
  .slaveEP1TxFifoSel(slaveEP1TxFifoSel),
324
  .slaveEP2TxFifoSel(slaveEP2TxFifoSel),
325
  .slaveEP3TxFifoSel(slaveEP3TxFifoSel),
326
  .hostSlaveMuxSel(hostSlaveMuxSel),
327
  .dataFromHostControl(dataFromHostControl),
328
  .dataFromHostRxFifo(dataFromHostRxFifo),
329
  .dataFromHostTxFifo(dataFromHostTxFifo),
330
  .dataFromSlaveControl(dataFromSlaveControl),
331
  .dataFromEP0RxFifo(dataFromEP0RxFifo),
332
  .dataFromEP1RxFifo(dataFromEP1RxFifo),
333
  .dataFromEP2RxFifo(dataFromEP2RxFifo),
334
  .dataFromEP3RxFifo(dataFromEP3RxFifo),
335
  .dataFromEP0TxFifo(dataFromEP0TxFifo),
336
  .dataFromEP1TxFifo(dataFromEP1TxFifo),
337
  .dataFromEP2TxFifo(dataFromEP2TxFifo),
338
  .dataFromEP3TxFifo(dataFromEP3TxFifo),
339
  .dataFromHostSlaveMux(dataFromHostSlaveMux)
340
   );
341
 
342
hostSlaveMux u_hostSlaveMux(
343
  .SIEPortCtrlInToSIE(SIEPortCtrlInToSIE),
344
  .SIEPortCtrlInFromHost(SIEPortCtrlInFromHost),
345
  .SIEPortCtrlInFromSlave(SIEPortCtrlInFromSlave),
346
  .SIEPortDataInToSIE(SIEPortDataInToSIE),
347
  .SIEPortDataInFromHost(SIEPortDataInFromHost),
348
  .SIEPortDataInFromSlave(SIEPortDataInFromSlave),
349
  .SIEPortWEnToSIE(SIEPortWEnToSIE),
350
  .SIEPortWEnFromHost(SIEPortWEnFromHost),
351
  .SIEPortWEnFromSlave(SIEPortWEnFromSlave),
352
  .fullSpeedPolarityToSIE(fullSpeedPolarityToSIE),
353
  .fullSpeedPolarityFromHost(fullSpeedPolarityFromHost),
354
  .fullSpeedPolarityFromSlave(fullSpeedPolarityFromSlave),
355
  .fullSpeedBitRateToSIE(fullSpeedBitRateToSIE),
356
  .fullSpeedBitRateFromHost(fullSpeedBitRateFromHost),
357
  .fullSpeedBitRateFromSlave(fullSpeedBitRateFromSlave),
358
  .noActivityTimeOutEnableToSIE(noActivityTimeOutEnableToSIE),
359
  .noActivityTimeOutEnableFromHost(noActivityTimeOutEnableFromHost),
360
  .noActivityTimeOutEnableFromSlave(noActivityTimeOutEnableFromSlave),
361
  .dataIn(data_i),
362
  .dataOut(dataFromHostSlaveMux),
363
  .address(address_i[0]),
364
  .writeEn(we_i),
365
  .strobe_i(strobe_i),
366
  .usbClk(usbClk),
367
  .busClk(clk_i),
368
  .hostSlaveMuxSel(hostSlaveMuxSel),
369
  .rstFromWire(rst_i),
370
  .rstSyncToBusClkOut(rstSyncToBusClk),
371
  .rstSyncToUsbClkOut(rstSyncToUsbClk)
372
);
373
 
374
usbSerialInterfaceEngine u_usbSerialInterfaceEngine(
375
  .clk(usbClk),
376
  .rst(rstSyncToUsbClk),
377
  .USBWireDataIn(USBWireDataIn),
378
  .USBWireDataOut(USBWireDataOut),
379
  .USBWireDataInTick(USBWireDataInTick),
380
  .USBWireDataOutTick(USBWireDataOutTick),
381
  .USBWireCtrlOut(USBWireCtrlOut),
382
  .connectState(connectState),
383
  .resumeDetected(resumeDetected),
384
  .RxCtrlOut(RxCtrlOut),
385
  .RxDataOutWEn(RxDataOutWEn),
386
  .RxDataOut(RxDataFromSIE),
387
  .SIEPortCtrlIn(SIEPortCtrlInToSIE),
388
  .SIEPortDataIn(SIEPortDataInToSIE),
389
  .SIEPortTxRdy(SIEPortTxRdy),
390
  .SIEPortWEn(SIEPortWEnToSIE),
391
  .fullSpeedPolarity(fullSpeedPolarityToSIE),
392
  .fullSpeedBitRate(fullSpeedBitRateToSIE),
393
  .noActivityTimeOut(noActivityTimeOut),
394
  .noActivityTimeOutEnable(noActivityTimeOutEnableToSIE)
395
);
396
 
397
//---Host fifos
398
TxFifo #(HOST_FIFO_DEPTH, HOST_FIFO_ADDR_WIDTH) HostTxFifo (
399
  .usbClk(usbClk),
400
  .busClk(clk_i),
401
  .rstSyncToBusClk(rstSyncToBusClk),
402
  .rstSyncToUsbClk(rstSyncToUsbClk),
403
  .fifoREn(hostTxFifoRE),
404
  .fifoEmpty(hostTxFifoEmpty),
405
  .busAddress(address_i[2:0]),
406
  .busWriteEn(we_i),
407
  .busStrobe_i(strobe_i),
408
  .busFifoSelect(hostTxFifoSel),
409
  .busDataIn(data_i),
410
  .busDataOut(dataFromHostTxFifo),
411
  .fifoDataOut(hostTxFifoData) );
412
 
413
 
414
RxFifo #(HOST_FIFO_DEPTH, HOST_FIFO_ADDR_WIDTH) HostRxFifo(
415
  .usbClk(usbClk),
416
  .busClk(clk_i),
417
  .rstSyncToBusClk(rstSyncToBusClk),
418
  .rstSyncToUsbClk(rstSyncToUsbClk),
419
  .fifoWEn(hostRxFifoWE),
420
  .fifoFull(hostRxFifoFull),
421
  .busAddress(address_i[2:0]),
422
  .busWriteEn(we_i),
423
  .busStrobe_i(strobe_i),
424
  .busFifoSelect(hostRxFifoSel),
425
  .busDataIn(data_i),
426
  .busDataOut(dataFromHostRxFifo),
427
  .fifoDataIn(hostRxFifoData)  );
428
 
429
//---Slave fifos
430
 
431
TxFifo #(EP0_FIFO_DEPTH, EP0_FIFO_ADDR_WIDTH) EP0TxFifo (
432
  .usbClk(usbClk),
433
  .busClk(clk_i),
434
  .rstSyncToBusClk(rstSyncToBusClk),
435
  .rstSyncToUsbClk(rstSyncToUsbClk),
436
  .fifoREn(TxFifoEP0REn),
437
  .fifoEmpty(TxFifoEP0Empty),
438
  .busAddress(address_i[2:0]),
439
  .busWriteEn(we_i),
440
  .busStrobe_i(strobe_i),
441
  .busFifoSelect(slaveEP0TxFifoSel),
442
  .busDataIn(data_i),
443
  .busDataOut(dataFromEP0TxFifo),
444
  .fifoDataOut(TxFifoEP0Data) );
445
 
446
TxFifo #(EP1_FIFO_DEPTH, EP1_FIFO_ADDR_WIDTH) EP1TxFifo (
447
  .usbClk(usbClk),
448
  .busClk(clk_i),
449
  .rstSyncToBusClk(rstSyncToBusClk),
450
  .rstSyncToUsbClk(rstSyncToUsbClk),
451
  .fifoREn(TxFifoEP1REn),
452
  .fifoEmpty(TxFifoEP1Empty),
453
  .busAddress(address_i[2:0]),
454
  .busWriteEn(we_i),
455
  .busStrobe_i(strobe_i),
456
  .busFifoSelect(slaveEP1TxFifoSel),
457
  .busDataIn(data_i),
458
  .busDataOut(dataFromEP1TxFifo),
459
  .fifoDataOut(TxFifoEP1Data) );
460
 
461
TxFifo #(EP2_FIFO_DEPTH, EP2_FIFO_ADDR_WIDTH) EP2TxFifo (
462
  .usbClk(usbClk),
463
  .busClk(clk_i),
464
  .rstSyncToBusClk(rstSyncToBusClk),
465
  .rstSyncToUsbClk(rstSyncToUsbClk),
466
  .fifoREn(TxFifoEP2REn),
467
  .fifoEmpty(TxFifoEP2Empty),
468
  .busAddress(address_i[2:0]),
469
  .busWriteEn(we_i),
470
  .busStrobe_i(strobe_i),
471
  .busFifoSelect(slaveEP2TxFifoSel),
472
  .busDataIn(data_i),
473
  .busDataOut(dataFromEP2TxFifo),
474
  .fifoDataOut(TxFifoEP2Data) );
475
 
476
TxFifo #(EP3_FIFO_DEPTH, EP3_FIFO_ADDR_WIDTH) EP3TxFifo (
477
  .usbClk(usbClk),
478
  .busClk(clk_i),
479
  .rstSyncToBusClk(rstSyncToBusClk),
480
  .rstSyncToUsbClk(rstSyncToUsbClk),
481
  .fifoREn(TxFifoEP3REn),
482
  .fifoEmpty(TxFifoEP3Empty),
483
  .busAddress(address_i[2:0]),
484
  .busWriteEn(we_i),
485
  .busStrobe_i(strobe_i),
486
  .busFifoSelect(slaveEP3TxFifoSel),
487
  .busDataIn(data_i),
488
  .busDataOut(dataFromEP3TxFifo),
489
  .fifoDataOut(TxFifoEP3Data) );
490
 
491
RxFifo #(EP0_FIFO_DEPTH, EP0_FIFO_ADDR_WIDTH) EP0RxFifo(
492
  .usbClk(usbClk),
493
  .busClk(clk_i),
494
  .rstSyncToBusClk(rstSyncToBusClk),
495
  .rstSyncToUsbClk(rstSyncToUsbClk),
496
  .fifoWEn(RxFifoEP0WEn),
497
  .fifoFull(RxFifoEP0Full),
498
  .busAddress(address_i[2:0]),
499
  .busWriteEn(we_i),
500
  .busStrobe_i(strobe_i),
501
  .busFifoSelect(slaveEP0RxFifoSel),
502
  .busDataIn(data_i),
503
  .busDataOut(dataFromEP0RxFifo),
504
  .fifoDataIn(slaveRxFifoData)  );
505
 
506
RxFifo #(EP1_FIFO_DEPTH, EP1_FIFO_ADDR_WIDTH) EP1RxFifo(
507
  .usbClk(usbClk),
508
  .busClk(clk_i),
509
  .rstSyncToBusClk(rstSyncToBusClk),
510
  .rstSyncToUsbClk(rstSyncToUsbClk),
511
  .fifoWEn(RxFifoEP1WEn),
512
  .fifoFull(RxFifoEP1Full),
513
  .busAddress(address_i[2:0]),
514
  .busWriteEn(we_i),
515
  .busStrobe_i(strobe_i),
516
  .busFifoSelect(slaveEP1RxFifoSel),
517
  .busDataIn(data_i),
518
  .busDataOut(dataFromEP1RxFifo),
519
  .fifoDataIn(slaveRxFifoData)  );
520
 
521
RxFifo #(EP2_FIFO_DEPTH, EP2_FIFO_ADDR_WIDTH) EP2RxFifo(
522
  .usbClk(usbClk),
523
  .busClk(clk_i),
524
  .rstSyncToBusClk(rstSyncToBusClk),
525
  .rstSyncToUsbClk(rstSyncToUsbClk),
526
  .fifoWEn(RxFifoEP2WEn),
527
  .fifoFull(RxFifoEP2Full),
528
  .busAddress(address_i[2:0]),
529
  .busWriteEn(we_i),
530
  .busStrobe_i(strobe_i),
531
  .busFifoSelect(slaveEP2RxFifoSel),
532
  .busDataIn(data_i),
533
  .busDataOut(dataFromEP2RxFifo),
534
  .fifoDataIn(slaveRxFifoData)  );
535
 
536
RxFifo #(EP3_FIFO_DEPTH, EP3_FIFO_ADDR_WIDTH) EP3RxFifo(
537
  .usbClk(usbClk),
538
  .busClk(clk_i),
539
  .rstSyncToBusClk(rstSyncToBusClk),
540
  .rstSyncToUsbClk(rstSyncToUsbClk),
541
  .fifoWEn(RxFifoEP3WEn),
542
  .fifoFull(RxFifoEP3Full),
543
  .busAddress(address_i[2:0]),
544
  .busWriteEn(we_i),
545
  .busStrobe_i(strobe_i),
546
  .busFifoSelect(slaveEP3RxFifoSel),
547
  .busDataIn(data_i),
548
  .busDataOut(dataFromEP3RxFifo),
549
  .fifoDataIn(slaveRxFifoData)  );
550
 
551
endmodule
552
 
553
 
554
 
555
 
556
 
557
 
558
 

powered by: WebSVN 2.1.0

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