1 |
408 |
julius |
//////////////////////////////////////////////////////////////////////
|
2 |
|
|
// usbHostSlave_h.v
|
3 |
|
|
//////////////////////////////////////////////////////////////////////
|
4 |
|
|
|
5 |
|
|
`ifdef usbHostSlave_h_vdefined
|
6 |
|
|
`else
|
7 |
|
|
`define usbHostSlave_h_vdefined
|
8 |
|
|
|
9 |
|
|
// Version 0.6 - Feb 4th 2005. Fixed bit stuffing and de-stuffing. This version succesfully supports
|
10 |
|
|
// control reads and writes to USB flash dongle
|
11 |
|
|
// Version 0.7 - Feb 24th 2005. Added support for isochronous transfers, fixed resume, connect and disconnect
|
12 |
|
|
// time outs, added low speed EOP keep alive. The TX bit rate is now controlled by
|
13 |
|
|
// SIETransmitter, and takes account of the requirement that SOF, and PREAMBLE are always full
|
14 |
|
|
// speed, and TX resume is always low speed.
|
15 |
|
|
// Fixed read clock recovery (readUSBWireData.v) issue which was resulting
|
16 |
|
|
// in missing receive packets.
|
17 |
|
|
// Fixed broken SOF Sync mode (where transacations are synchronized with the SOF transmission)
|
18 |
|
|
// by adding kludged delay to softranmit. This needs to be fixed properly.
|
19 |
|
|
// This version has undergone limited testing
|
20 |
|
|
// with full speed flash dongle, low speed keyboard, and a PC in full and low speed modes.
|
21 |
|
|
// Version 0.8 - June 24th 2005. Added bus access to the host SOFTimer. This version has been tested
|
22 |
|
|
// with uClinux, and is known to work with a full speed USB flash stick.
|
23 |
|
|
// Moving Opencores project status from Beta to done.
|
24 |
|
|
// TODO: Test isochronous mode, and low speed mode using uClinux driver
|
25 |
|
|
// Create a seperate clock domain for the bus interface
|
26 |
|
|
// Add frame period adjustment capability
|
27 |
|
|
// Add compilation flags for slave only and host only versions
|
28 |
|
|
// Create data bus width options beyond 8-bit
|
29 |
|
|
// Version 1.0 - October 14th 2005. Seperated the bus clock from the usb logic clock
|
30 |
|
|
// Removed TX and RX fifo status registers, and removed
|
31 |
|
|
// TX fifo data count register.
|
32 |
|
|
// Added RESET_CORE bit to HOST_SLAVE_CONTROL_REG.
|
33 |
|
|
// Fixed slave mode bug which caused receive fifo to be filled with
|
34 |
|
|
// incoming data when the slave was responding with a NAK, and the
|
35 |
|
|
// data should have been discarded.
|
36 |
|
|
// Version 1.1 - February 23rd 2006. Fixed bug related to 'noActivityTimeOut'
|
37 |
|
|
// Previously the 'noActivityTimeOut' flag was repetitively pulsed whenever
|
38 |
|
|
// there was no detected activity on the USB data lines. This caused an infrequent
|
39 |
|
|
// misreporting of time out errors. 'noActivityTimeOut' is now only enabled when
|
40 |
|
|
// the higher level state machines are actively looking for receive packets.
|
41 |
|
|
// Modified USB RX data clock recovery, so that data is sampled during the middle
|
42 |
|
|
// of a USB bit period. Fixed a bug which could result in double sampling
|
43 |
|
|
// of USB RX data if clock phase adjustments were required in the middle of a
|
44 |
|
|
// USB packet.
|
45 |
|
|
// Version 1.2 - October 1st 2006. Small changes to .asf FSM's required
|
46 |
|
|
// during migration to ActiveHDL 7.1. Released SystemC test bench.
|
47 |
|
|
// Re-generated .v files using ActiveHDL 7.1
|
48 |
|
|
// Replaced individual timescale directives with `include "timescale.v
|
49 |
|
|
// Renamed top level Altera wrapper from 'usbHostSlaveWrap' to
|
50 |
|
|
// 'usbHostSlaveAvalonWrap'
|
51 |
|
|
// Version 1.3 - March 22nd 2008. Fixed bug in 'readUSBWireData'. Added
|
52 |
|
|
// synchronizer to incoming USB wire data to avoid
|
53 |
|
|
// metastability, and delay hazards. Not entirely sure, but it appears that
|
54 |
|
|
// this bug caused more problems with some of the newer low power FPGAs
|
55 |
|
|
// Maybe because they are more prone to problems with metastable
|
56 |
|
|
// inputs that feed logic functions causing excessive high speed
|
57 |
|
|
// toggle activity, and disrupting nearby cicuits.
|
58 |
|
|
// Version 2.0 - June 16th 2008. Added two new top level modules which
|
59 |
|
|
// allow the instantiation of only host (usbHost.v), or only device
|
60 |
|
|
// features. Added double sync stages between usbClk, and busClk domains
|
61 |
|
|
// to fix possible metastability issues. Also modified synchronization to
|
62 |
|
|
// allow operation with busClk frequency less than usbClk frequency (down to
|
63 |
|
|
// 24MHz). Integrated full support for USB PHY. Prior to this modification
|
64 |
|
|
// the user would need to instantiate a GPIO module to control USB speed,
|
65 |
|
|
// D+ and D- pull-up control, and VBUS detect. Fixed bug in bus interface wb_ack.
|
66 |
|
|
// Modified cross-clock synchronisation of fifo resets
|
67 |
|
|
// Added usbDevice, a standalone usb device implementation of usbhostslave
|
68 |
|
|
// no additional hardware or software required
|
69 |
|
|
|
70 |
|
|
|
71 |
|
|
// Most significant nibble corresponds to major revision.
|
72 |
|
|
// Least significant nibble corresponds to minor revision.
|
73 |
|
|
`define USBHOSTSLAVE_VERSION_NUM 8'h20
|
74 |
|
|
|
75 |
|
|
//Host slave common registers
|
76 |
|
|
`define HOST_SLAVE_CONTROL_REG 1'b0
|
77 |
|
|
`define HOST_SLAVE_VERSION_REG 1'b1
|
78 |
|
|
|
79 |
|
|
`endif //usbHostSlave_h_vdefined
|
80 |
|
|
|