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

Subversion Repositories usbhostslave

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

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

powered by: WebSVN 2.1.0

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