USB HS/FS Device Controller
CPPI 4.1
Main
Memory
CPPI
DMA
(CDMA)
CDMA
Scheduler
(CDMAS)
SSRAM/
PPU
Transfer
DMA
(XDMA)
Endpoint
FIFOs
CPU
Queue
Manager
Interrupts
Queue Indicators
FIFO_full
FIFO_empty
FIFO_full
FIFO_empty
cdma_sreq
cdma_sready
DMA_req[8]
Configuration rd/wr
USB bus
RXCQ
RXSQ
Mentor
USB 2.0
Core
Queue push/
pop operations
Queue
push/pop
operations
Functional Description
RXSQ by writing onto CTRL D register.
displays receive operation Initialization.
Figure 16-21. Receive USB Data Flow Example (Initialization)
16.3.9.9.2.2 USB 2.0 Core Receives a Packet, XDMA Starts Data Transfer for Receive (Step 2)
1. The USB 2.0 Core receives a USB packet from the USB Host and stores it in the Endpoint FIFO.
2. It then asserts a DMA_req to the XDMA informing it that data is available in the Endpoint FIFO.
3. The XDMA verifies the corresponding CPPI FIFO is not full via the FIFO_full signal, then starts
transferring 64-byte data blocks (burst) from the Endpoint FIFO into the CPPI FIFO.
16.3.9.9.2.3 CDMA Transfers Data from SSRAM / PPU to Main Memory for Receive (Step 3)
1. The CDMAS see FIFO_empty de-asserted (there is RX data in the FIFO) and issues a transaction
credit to the CDMA.
2. The CDMA begins packet reception by fetching the first PBD from the Queue Manager using the Free
Descriptor / Buffer Queue 0 (Rx Submit Queue) index that was initialized in the RX port DMA state for
that channel.
3. The CDMA will then begin writing the 64-byte block of packet data into this DB.
4. The CDMA will continue filling the buffer with additional 64-byte blocks of data from the CPPI FIFO and
will fetch additional PBD as needed using the Free Descriptor / Buffer Queue 1, 2, and 3 indexes for
the 2nd, 3rd, and remaining buffers in the packet. After each buffer is filled, the CDMA writes the buffer
descriptor to main memory.
16.3.9.9.2.4 CDMA Completes the Packet Transfer for Receive (Step 4)
1. After the entire packet has been received, the CDMA writes the packet descriptor to main memory.
2. The CDMA then writes the packet descriptor to the RXCQ specified in the Queue Manager / Queue
Number fields in the RX Global Configuration Register.
3. The Queue Manager then indicates the status of the RXCQ to the CPU via an interrupt.
4. The CPU can then process the received packet by popping the received packet information from the
RXCQ and accessing the packet’s data from main memory.
1757
SPRUH73H – October 2011 – Revised April 2013
Universal Serial Bus (USB)
Copyright © 2011–2013, Texas Instruments Incorporated