User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 432
UG585 (v1.11) September 27, 2016
Chapter 15: USB Host, Device, and OTG Controller
15.8.1 Software Model
The USB device controller API software provides a framework of routines to control the USB
controller in device applications. The software should be designed to significantly simplify the
software tasks required to develop a USB device application. The API software presents a high-level
data transfer interface to the user's application code. All the register, interrupt and DMA interactions
with the controller are managed by the API. The API also includes routines that handle all the USB
device framework commands which are required for all USB devices.
15.8.2 USB Reset
After receiving a USB reset from the bus, the port enters the default FS or default HS state in
accordance with the reset protocol described in Appendix C.2 of the USB Specification Rev. 2.0. The
state diagram shown in Figure 15-12 depicts the state of the controller in device mode.
15.8.3 Register Controlled Reset
To reset the controller, the DCD writes a 1 to the usb.USBCMD [RST] bit. When the reset process is
completed, the controller hardware sets this bit to 0. Once the reset is started, the controller cannot
stop the process. Writing a 0 has no effect.
Writing a 1 to the [RST] bit will reset the internal pipelines, timers, counters, and state machines to
their initial value. Writing a 1 when the device is in the attached state is not recommended since the
effects on an attached host are undefined. In order to ensure that the device is not in an attached
state, all primed endpoints should be flushed and the usb.USBCMD [RS] bit should be set to 0.
15.9 Programming Guide for Device Endpoint Data
Structures
This section describes how to manage the device endpoint data structures. These are images written in
system memory that are accessed by the controller to service USB transaction initiated by the host. These
structures are the basis for the device controller functions.
15.9.1 Device Controller Initialization Overview
After hardware reset, the device is disabled until the Run/Stop bit is set to a 1. In the disabled state,
the pull-up on the USB D+ is not active which prevents an attach event from occurring. At a
minimum, it is necessary to have the queue heads setup for endpoint 0 before the device attach
occurs. Shortly after the device is enabled, a USB reset occurs followed by setup packet arriving at
endpoint 0. A Queue head must be prepared so that the device controller can store the incoming
setup packet.
In order to initialize a device, the DCD should perform the following steps: