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

Subversion Repositories usbhostslave

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

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

powered by: WebSVN 2.1.0

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