The USB 2.0 Controller is a versatile design that provides in a single core
- the function controller of a high-/full-speed USB peripheral;
- a ‘Dual-role’ USB controller for point-to-point ‘On-The-Go’ (OTG) communications with another USB function (which can be either high-speed, full-speed or low-speed); and
- (when connecteded to a hub) the host controller for a multi-point USB system.
The USB 2.0 Controller complies both with the USB 2.0 standard for high-speed and full-speed functions and with the On-The-Go supplement to the USB 2.0 specification. The USB On-The-Go specification has been introduced to provide a low-cost connectivity solution for consumer portable devices such as mobile phones, PDAs, digital still cameras and MP3 players. Devices that are solely peripherals can initiate transfers through a Session Request Protocol (SRP) while Dual-role devices support both SRP and Host Negotiation Protocol (HNP) and can take on the role of either Host or Peripheral as required. The USB 2.0 Controller can also carry out transaction translation, thereby allowing full- or low-speed devices to be used with a USB 2.0 hub. (Split transactions are also supported.)
The USB 2.0 Controller is user-configurable for up to 15 ‘Transmit’ endpoints and/or up to 15 ‘Receive’ endpoints in addition to Endpoint 0. (The use of these endpoints for IN transactions and OUT transactions depends on whether the USB 2.0 Controller is being used as a peripheral or as a host. When used as a peripheral, IN transactions are processed through Tx endpoints and OUT transactions are processed through Rx endpoints. When used as a host, IN transactions are processed through Rx endpoints and OUT transactions are processed through Tx endpoints.) These additional endpoints can be individually configured in software to handle either Bulk transfers (which also allows them to handle Interrupt transfers), Isochronous transfers or Control transfers. Further, the endpoints can also be allocated to different target device functions on the fly – maximizing the number of devices that can be simultaneously supported.
Each endpoint requires a FIFO to be associated with it. The USB 2.0 Controller has a RAM interface for connecting to a single block of synchronous single-port RAM which is used for all the endpoint FIFOs. (The RAM block itself needs to be added by the user)
The FIFO for Endpoint 0 is required to be 64 bytes deep and will buffer 1 packet. The RAM interface is configurable with regard to the other endpoint FIFOs which may be from 8 to 8192 bytes in size and can buffer either 1 or 2 packets. Separate FIFOs may be associated with each endpoint: alternatively a Tx endpoint and the Rx endpoint with the same Endpoint number can be configured to use the same FIFO, for example to reduce the size of RAM block needed, provided they can never be active at the same time.
The USB 2.0 Controller is offered with a 32-bit synchronous CPU interface designed for connection to an AMBA AHB bus1. The interface supports use with an AHB bus running at a wide range of bus speeds. Multi-layer operations on the AHB bus are also supported. The MUSBMHDRC can also be readily connected to a range of other standard buses through the addition of a suitable wrapper/bridge.
There is also support for DMA access to the Endpoint FIFOs, including the option of a built-in DMA controller.
The USB 2.0 Controller provides a UTMI+ Level 3-compatible interface for connecting to a suitable USB high/full-speed transceiver via an 8 bit transceiver interface. (The use of a Level 3 PHY allows low-speed devices to be used with a USB 1.1 hub.) An optional ULPI Link Wrapper is included for connecting to ULPI-compatible PHYs.