USB 2.0 Multi-Point High-Speed OTG Controller
The Mentor Graphics multi-point high-speed dual role USB controller is a complete USB On-The-Go (OTG) solution intended for use in point-to-point communications with other OTG devices and host computers, as well as in multipoint communications with a network of USB 2.0 peripherals and hubs. The controller complies with both the USB standard for high-speed and full-speed functions and the OTG supplement to the USB 2.0 specification. The approach used in this controller is to allow the core’s endpoints to be allocated to the functions of different target devices. Furthermore, this allocation can be made dynamically. In theory, a full USB tree of 128 devices could be supported in this way, though it is likely to be used with much smaller numbers of devices in practice.

The core offers a 32-bit AMBA AHB-compatible CPU interface and a UTMI+ Level 3 transceiver interface, together with a wrapper for connecting to a ULPI compatible PHY. (An UTMI+ Level 3 interface is used because it allows the core to support low-speed devices attached through a USB 1.1 hub.) An alternative USB 1.1 PHY interface is also provided, together with an I2C PHY interface to facilitate use with such devices such as the Philips ISP 1301 transceiver. The RAM interface offered by this core is configurable for endpoint FIFO sizes from 8 to 8192 bytes (except for the endpoint 0 FIFO, which is fixed at 64 bytes). The RAM for these FIFOs needs to be added by the user. DMA access to the endpoint FIFOs is supported, including a DMA controller built into the AHB interface. This controller supports transfers using INCR4, INCR8, and INCR16 4/8/16-beat incrementing bursts as well as bursts of unspecified length.

On-The-Go Operation
OTG is strictly a point-to-point topology involving two “dual-role” devices; one operating as host and the other as peripheral. OTG devices always use mini-AB receptacles and the initial configuration is determined by the state of its ID pin. If sampling the ID line identifies the core as the “A” device, the core will go into host mode. Conversely, the “B” device will default to peripheral. This device supports host negotiation protocol (HNP), which enables the devices to collaborate and switch roles between as required. Also supported is a session request protocol (SRP), whereby the “B” device can request a new session by pulsing the data lines and/or VBus. This allows the “A” device to power down an idle bus and save power. Details on both of these protocols are given in the USB On-The-Go supplement to the USB 2.0 specification.

Host Operation
In a multi-point set-up, the controller acts as the host to a range of USB peripheral devices connected directly or via a hub. Peripheral devices are allocated to the core's individual Rx and Tx endpoints — by recording the function address and, where necessary, the relevant hub address and port details. This allocation is dynamic, enabling new devices to be added to the network and old ones to be removed. Software automatically maps active devices to the appropriate host endpoints. In this way, transactions can essentially be carried out as if to a single target device — and multiple peripherals can be supported while maintaining a simple interface and low gate count.