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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [tags/] [rel_01_01/] [RTL/] [hostController/] [usbHostControl.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
//// usbHostControl.v                                             ////
4
////                                                              ////
5
//// This file is part of the usbhostslave opencores effort.
6
//// <http://www.opencores.org/cores//>                           ////
7
////                                                              ////
8
//// Module Description:                                          ////
9
//// 
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
 
46 2 sfielding
module usbHostControl(
47 18 sfielding
  busClk, rstSyncToBusClk,
48
  usbClk, rstSyncToUsbClk,
49 5 sfielding
  //sendPacket
50
  TxFifoRE, TxFifoData, TxFifoEmpty,
51
  //getPacket
52
  RxFifoWE, RxFifoData, RxFifoFull,
53
  RxByteStatus, RxData, RxDataValid,
54
  SIERxTimeOut,
55
  //speedCtrlMux
56
  fullSpeedRate, fullSpeedPol,
57
  //HCTxPortArbiter
58
  HCTxPortEn, HCTxPortRdy,
59
  HCTxPortData, HCTxPortCtrl,
60
  //rxStatusMonitor
61
  connectStateIn,
62
  resumeDetectedIn,
63 2 sfielding
  //USBHostControlBI 
64
  busAddress,
65
  busDataIn,
66
  busDataOut,
67
  busWriteEn,
68
  busStrobe_i,
69 5 sfielding
  SOFSentIntOut,
70 2 sfielding
  connEventIntOut,
71
  resumeIntOut,
72
  transDoneIntOut,
73
  hostControlSelect
74 5 sfielding
    );
75 2 sfielding
 
76 18 sfielding
input busClk;
77
input rstSyncToBusClk;
78
input usbClk;
79
input rstSyncToUsbClk;
80 2 sfielding
//sendPacket
81
output TxFifoRE;
82
input [7:0] TxFifoData;
83
input TxFifoEmpty;
84
//getPacket
85
output RxFifoWE;
86
output [7:0] RxFifoData;
87
input RxFifoFull;
88
input [7:0] RxByteStatus;
89
input [7:0] RxData;
90
input RxDataValid;
91
input SIERxTimeOut;
92
//speedCtrlMux
93
output fullSpeedRate;
94
output fullSpeedPol;
95
//HCTxPortArbiter
96
output HCTxPortEn;
97
input HCTxPortRdy;
98
output [7:0] HCTxPortData;
99
output [7:0] HCTxPortCtrl;
100
//rxStatusMonitor
101
input [1:0] connectStateIn;
102
input resumeDetectedIn;
103
//USBHostControlBI 
104
input [3:0] busAddress;
105
input [7:0] busDataIn;
106
output [7:0] busDataOut;
107
input busWriteEn;
108
input busStrobe_i;
109
output SOFSentIntOut;
110
output connEventIntOut;
111
output resumeIntOut;
112
output transDoneIntOut;
113
input hostControlSelect;
114
 
115 18 sfielding
wire busClk;
116
wire rstSyncToBusClk;
117
wire usbClk;
118
wire rstSyncToUsbClk;
119 2 sfielding
wire [10:0] frameNum;
120
wire SOFSent;
121
wire TxFifoRE;
122
wire [7:0] TxFifoData;
123
wire TxFifoEmpty;
124
wire RxFifoWE;
125
wire [7:0] RxFifoData;
126
wire RxFifoFull;
127
wire [7:0] RxByteStatus;
128
wire [7:0] RxData;
129
wire RxDataValid;
130
wire SIERxTimeOut;
131
wire fullSpeedRate;
132
wire fullSpeedPol;
133
wire HCTxPortEn;
134
wire HCTxPortRdy;
135
wire [7:0] HCTxPortData;
136
wire [7:0] HCTxPortCtrl;
137
wire [1:0] connectStateIn;
138
wire resumeDetectedIn;
139
wire [3:0] busAddress;
140
wire [7:0] busDataIn;
141
wire [7:0] busDataOut;
142
wire busWriteEn;
143
wire busStrobe_i;
144
wire SOFSentIntOut;
145
wire connEventIntOut;
146
wire resumeIntOut;
147
wire transDoneIntOut;
148
wire hostControlSelect;
149
 
150
//internal wiring
151
wire SOFTimerClr;
152
wire getPacketREn;
153
wire getPacketRdy;
154
wire HCTxGnt;
155
wire HCTxReq;
156
wire [3:0] HC_PID;
157
wire HC_SP_WEn;
158
wire SOFTxGnt;
159
wire SOFTxReq;
160
wire SOF_SP_WEn;
161
wire SOFEnable;
162
wire SOFSyncEn;
163
wire sendPacketCPReadyIn;
164
wire sendPacketCPReadyOut;
165
wire [3:0] sendPacketCPPIDIn;
166
wire [3:0] sendPacketCPPIDOut;
167
wire sendPacketCPWEnIn;
168
wire sendPacketCPWEnOut;
169
wire [7:0] SOFCntlCntl;
170
wire [7:0] SOFCntlData;
171
wire SOFCntlGnt;
172
wire SOFCntlReq;
173
wire SOFCntlWEn;
174
wire [7:0] directCntlCntl;
175
wire [7:0] directCntlData;
176
wire directCntlGnt;
177
wire directCntlReq;
178
wire directCntlWEn;
179
wire [7:0] sendPacketCntl;
180
wire [7:0] sendPacketData;
181
wire sendPacketGnt;
182
wire sendPacketReq;
183 5 sfielding
wire sendPacketWEn;
184 2 sfielding
wire [15:0] SOFTimer;
185
wire clrTxReq;
186
wire transDone;
187
wire transReq;
188 14 sfielding
wire isoEn;
189 2 sfielding
wire [1:0] transType;
190
wire preAmbleEnable;
191
wire [1:0] directLineState;
192
wire directLineCtrlEn;
193
wire [6:0] TxAddr;
194
wire [3:0] TxEndP;
195
wire [7:0] RxPktStatus;
196
wire [3:0] RxPID;
197
wire [1:0] connectStateOut;
198
wire resumeIntFromRxStatusMon;
199
wire connectionEventFromRxStatusMon;
200
 
201
USBHostControlBI u_USBHostControlBI
202
  (.address(busAddress),
203
  .dataIn(busDataIn),
204
  .dataOut(busDataOut),
205
  .writeEn(busWriteEn),
206
  .strobe_i(busStrobe_i),
207 18 sfielding
  .busClk(busClk),
208
  .rstSyncToBusClk(rstSyncToBusClk),
209
  .usbClk(usbClk),
210
  .rstSyncToUsbClk(rstSyncToUsbClk),
211 5 sfielding
  .SOFSentIntOut(SOFSentIntOut),
212 2 sfielding
  .connEventIntOut(connEventIntOut),
213
  .resumeIntOut(resumeIntOut),
214
  .transDoneIntOut(transDoneIntOut),
215
  .TxTransTypeReg(transType),
216
  .TxSOFEnableReg(SOFEnable),
217 5 sfielding
  .TxAddrReg(TxAddr),
218 2 sfielding
  .TxEndPReg(TxEndP),
219
  .frameNumIn(frameNum),
220
  .RxPktStatusIn(RxPktStatus),
221
  .RxPIDIn(RxPID),
222
  .connectStateIn(connectStateOut),
223 5 sfielding
  .SOFSentIn(SOFSent),
224 2 sfielding
  .connEventIn(connectionEventFromRxStatusMon),
225
  .resumeIntIn(resumeIntFromRxStatusMon),
226
  .transDoneIn(transDone),
227
  .hostControlSelect(hostControlSelect),
228
  .clrTransReq(clrTxReq),
229
  .preambleEn(preAmbleEnable),
230
  .SOFSync(SOFSyncEn),
231
  .TxLineState(directLineState),
232
  .LineDirectControlEn(directLineCtrlEn),
233 14 sfielding
  .fullSpeedPol(fullSpeedPol),
234
  .fullSpeedRate(fullSpeedRate),
235
  .transReq(transReq),
236 16 sfielding
  .isoEn(isoEn),
237
  .SOFTimer(SOFTimer)
238 2 sfielding
  );
239
 
240
 
241
hostcontroller u_hostController
242 5 sfielding
  (.RXStatus(RxPktStatus),
243
  .clearTXReq(clrTxReq),
244 18 sfielding
  .clk(usbClk),
245 5 sfielding
  .getPacketREn(getPacketREn),
246
  .getPacketRdy(getPacketRdy),
247 18 sfielding
  .rst(rstSyncToUsbClk),
248 5 sfielding
  .sendPacketArbiterGnt(HCTxGnt),
249
  .sendPacketArbiterReq(HCTxReq),
250
  .sendPacketPID(HC_PID),
251
  .sendPacketRdy(sendPacketCPReadyOut),
252
  .sendPacketWEn(HC_SP_WEn),
253
  .transDone(transDone),
254
  .transReq(transReq),
255 14 sfielding
  .transType(transType),
256
  .isoEn(isoEn) );
257 2 sfielding
 
258
SOFController u_SOFController
259 5 sfielding
  (.HCTxPortCntl(SOFCntlCntl),
260
  .HCTxPortData(SOFCntlData),
261
  .HCTxPortGnt(SOFCntlGnt),
262
  .HCTxPortRdy(HCTxPortRdy),
263
  .HCTxPortReq(SOFCntlReq),
264
  .HCTxPortWEn(SOFCntlWEn),
265
  .SOFEnable(SOFEnable),
266
  .SOFTimerClr(SOFTimerClr),
267
  .SOFTimer(SOFTimer),
268 18 sfielding
  .clk(usbClk),
269
  .rst(rstSyncToUsbClk) );
270 2 sfielding
 
271
SOFTransmit u_SOFTransmit
272 5 sfielding
  (.SOFEnable(SOFEnable),
273
  .SOFSent(SOFSent),
274
  .SOFSyncEn(SOFSyncEn),
275
  .SOFTimerClr(SOFTimerClr),
276
  .SOFTimer(SOFTimer),
277 18 sfielding
  .clk(usbClk),
278
  .rst(rstSyncToUsbClk),
279 5 sfielding
  .sendPacketArbiterGnt(SOFTxGnt),
280
  .sendPacketArbiterReq(SOFTxReq),
281
  .sendPacketRdy(sendPacketCPReadyOut),
282
  .sendPacketWEn(SOF_SP_WEn) );
283 2 sfielding
 
284
 
285
sendPacketArbiter u_sendPacketArbiter
286 5 sfielding
  (.HCTxGnt(HCTxGnt),
287
  .HCTxReq(HCTxReq),
288
  .HC_PID(HC_PID),
289
  .HC_SP_WEn(HC_SP_WEn),
290
  .SOFTxGnt(SOFTxGnt),
291
  .SOFTxReq(SOFTxReq),
292
  .SOF_SP_WEn(SOF_SP_WEn),
293 18 sfielding
  .clk(usbClk),
294
  .rst(rstSyncToUsbClk),
295 5 sfielding
  .sendPacketPID(sendPacketCPPIDIn),
296
  .sendPacketWEnable(sendPacketCPWEnIn) );
297 2 sfielding
 
298
sendPacketCheckPreamble u_sendPacketCheckPreamble
299 5 sfielding
  (.sendPacketCPPID(sendPacketCPPIDIn),
300 18 sfielding
  .clk(usbClk),
301 5 sfielding
  .preAmbleEnable(preAmbleEnable),
302 18 sfielding
  .rst(rstSyncToUsbClk),
303 5 sfielding
  .sendPacketCPReady(sendPacketCPReadyOut),
304
  .sendPacketCPWEn(sendPacketCPWEnIn),
305
  .sendPacketPID(sendPacketCPPIDOut),
306
  .sendPacketRdy(sendPacketCPReadyIn),
307
  .sendPacketWEn(sendPacketCPWEnOut) );
308 2 sfielding
 
309
sendPacket u_sendPacket
310 5 sfielding
  (.HCTxPortCntl(sendPacketCntl),
311
  .HCTxPortData(sendPacketData),
312
  .HCTxPortGnt(sendPacketGnt),
313
  .HCTxPortRdy(HCTxPortRdy),
314
  .HCTxPortReq(sendPacketReq),
315
  .HCTxPortWEn(sendPacketWEn),
316
  .PID(sendPacketCPPIDOut),
317
  .TxAddr(TxAddr),
318
  .TxEndP(TxEndP),
319 18 sfielding
  .clk(usbClk),
320 5 sfielding
  .fifoData(TxFifoData),
321
  .fifoEmpty(TxFifoEmpty),
322
  .fifoReadEn(TxFifoRE),
323
  .frameNum(frameNum),
324 18 sfielding
  .rst(rstSyncToUsbClk),
325 5 sfielding
  .sendPacketRdy(sendPacketCPReadyIn),
326 14 sfielding
  .sendPacketWEn(sendPacketCPWEnOut),
327
  .fullSpeedPolarity(fullSpeedPol) );
328 5 sfielding
 
329 2 sfielding
directControl u_directControl
330 5 sfielding
  (.HCTxPortCntl(directCntlCntl),
331
  .HCTxPortData(directCntlData),
332
  .HCTxPortGnt(directCntlGnt),
333
  .HCTxPortRdy(HCTxPortRdy),
334
  .HCTxPortReq(directCntlReq),
335
  .HCTxPortWEn(directCntlWEn),
336 18 sfielding
  .clk(usbClk),
337 5 sfielding
  .directControlEn(directLineCtrlEn),
338
  .directControlLineState(directLineState),
339 18 sfielding
  .rst(rstSyncToUsbClk) );
340 2 sfielding
 
341
HCTxPortArbiter u_HCTxPortArbiter
342 5 sfielding
  (.HCTxPortCntl(HCTxPortCtrl),
343
  .HCTxPortData(HCTxPortData),
344
  .HCTxPortWEnable(HCTxPortEn),
345
  .SOFCntlCntl(SOFCntlCntl),
346
  .SOFCntlData(SOFCntlData),
347
  .SOFCntlGnt(SOFCntlGnt),
348
  .SOFCntlReq(SOFCntlReq),
349
  .SOFCntlWEn(SOFCntlWEn),
350 18 sfielding
  .clk(usbClk),
351 5 sfielding
  .directCntlCntl(directCntlCntl),
352
  .directCntlData(directCntlData),
353
  .directCntlGnt(directCntlGnt),
354
  .directCntlReq(directCntlReq),
355
  .directCntlWEn(directCntlWEn),
356 18 sfielding
  .rst(rstSyncToUsbClk),
357 5 sfielding
  .sendPacketCntl(sendPacketCntl),
358
  .sendPacketData(sendPacketData),
359
  .sendPacketGnt(sendPacketGnt),
360
  .sendPacketReq(sendPacketReq),
361
  .sendPacketWEn(sendPacketWEn) );
362 2 sfielding
 
363
getPacket u_getPacket
364 5 sfielding
  (.RXDataIn(RxData),
365
  .RXDataValid(RxDataValid),
366
  .RXFifoData(RxFifoData),
367
  .RXFifoFull(RxFifoFull),
368
  .RXFifoWEn(RxFifoWE),
369
  .RXPacketRdy(getPacketRdy),
370
  .RXPktStatus(RxPktStatus),
371
  .RXStreamStatusIn(RxByteStatus),
372
  .RxPID(RxPID),
373
  .SIERxTimeOut(SIERxTimeOut),
374 18 sfielding
  .clk(usbClk),
375 5 sfielding
  .getPacketEn(getPacketREn),
376 18 sfielding
  .rst(rstSyncToUsbClk) );
377 2 sfielding
 
378 5 sfielding
rxStatusMonitor  u_rxStatusMonitor
379
  (.connectStateIn(connectStateIn),
380
  .connectStateOut(connectStateOut),
381
  .resumeDetectedIn(resumeDetectedIn),
382
  .connectionEventOut(connectionEventFromRxStatusMon),
383
  .resumeIntOut(resumeIntFromRxStatusMon),
384 18 sfielding
  .clk(usbClk),
385
  .rst(rstSyncToUsbClk)  );
386 2 sfielding
 
387
endmodule
388
 
389 5 sfielding
 
390
 
391 2 sfielding
 
392
 
393
 
394
 

powered by: WebSVN 2.1.0

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