The USB Full-Speed Dual-Role Controller primarily provides a ‘Dual-role’ USB controller for use as either the host or the peripheral in point-topoint communications with another USB function (which may be either full-speed or low-speed). Alternatively it can be used as the function controller for a full-speed USB peripheral.
The USB Full-Speed Dual-Role Controller complies with both the USB standard for full-speed functions and the On-The-Go supplement to the USB 2.0 specification.
The USB Full-Speed Dual-Role Controller is user-configurable for up to 15 ‘Transmit’ endpoints and/or up to 15 ‘Receive’ endpoints in addition to Endpoint 0. (Whether these endpoints are used for IN transactions or for OUT transactions at any time will depend on whether the device containing the USB Full-Speed Dual-Role Controller is currently being used as a USB peripheral or as the host for point-to-point communications with another USB peripheral.) These additional endpoints can be individually programmed for Bulk/Interrupt or Isochronous transfers.
Each endpoint requires a FIFO to be associated with it. The USB Full-Speed Dual-Role 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 2048 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.
When acting as the host for point-to-point communications, the USB Full-Speed Dual-Role Controller additionally maintains a frame counter and automatically schedules SOF, Isochronous, Interrupt and Bulk transfers. It also includes support for the session control and host negotiation protocol required for point-to-point communications, details of which are given in the USB On-The-Go supplement to the USB 2.0 specification.