User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 418
UG585 (v1.11) September 27, 2016
Chapter 15: USB Host, Device, and OTG Controller
Data Toggle Inhibit
This feature is for test purposes only and should never be used during normal device controller
operation. Setting the data toggle inhibit bit active (usb.ENTPTCTRLx [RXI] bit = 1) causes the device
controller to ignore the data toggle pattern that is normally sent and accept all incoming data
packets regardless of the data toggle state.
In normal operation, the device controller checks the DATA0/DATA1 bit against the data toggle to
determine if the packet is valid. If Data PID does not match the data toggle state bit maintained by
the device controller for that endpoint, the Data toggle is considered not valid. If the data toggle is
not valid, the device controller assumes the packet was already received and discards the packet (not
reporting it to the DCD). To prevent the host controller from re-sending the same packet, the device
controller will respond to the error packet by acknowledging it with either an ACK or NYET response.
15.6 Device Endpoint Packet Operational Model
All transactions on the USB bus are initiated by the host and in turn, the device must respond to any
request from the host within the turnaround time stated in the USB 2.0 Specification. At USB 1.1 Full
or Low Speed rates, this turnaround time was significant and the USB 1.1 device controllers were
designed so that the device controller could access main memory or interrupt a host protocol
processor in order to respond to the USB 1.1 transaction. The architecture of the USB 2.0 device
controller must be different because the same methods will not meet USB 2.0 High-speed
turnaround time requirements.
A USB host sends requests to the device controller in an order that cannot be precisely predicted as
a single pipeline, so it is not possible to prepare a single packet for the device controller to execute.
However, the order of packet requests is predictable when the endpoint number and direction is
considered. For example, if endpoint 3 (transmit direction) is configured as a bulk pipe, then we can
expect the host will send IN requests to that endpoint.
Prime and Flush Endpoints
This device controller is designed in such a way that it can prepare packets for each endpoint or
direction in anticipation of the host request. The process of preparing the device controller to send
or receive data in response to host initiated transaction on the bus is referred to as ‘priming’ the
endpoint. The term ‘flushing’ is used to describe the action of clearing a packet that was queued for
execution.
15.6.1 Prime Transmit Endpoints
Priming a transmit endpoint will cause the device controller to fetch the dTD for the transaction
pointed to by the dQH. After the dTD is fetched, it will be copied in the dQH until the device
controller completes the transfer described by the dTD. Copying the dTD in the dQH overlay area
allows the device controller to fetch the operating context needed to handle a request from the host
without the need to follow the linked list, starting at the dQH when the host request is received.