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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [hostController/] [usbHostControl.v] - Blame information for rev 20

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

powered by: WebSVN 2.1.0

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