Main
Memory
CPU
Interrupts
Queue
Push/Pop
Operations
Queue
Manager
CPPI
DMA
(CDMA)
Queue
Push/Pop
Operations
cdma_sreq
cdma_sready
CDMA
Scheduler
(CDMAS)
Queue Indicators
FIFO_full
FIFO_empty
SSRAM/
PPU
FIFO_full
FIFO_empty
Transfer
DMA
(XDMA)
Mentor
USB 2.0
Core
Configuration
Rd/Wr
DMA_req[8]
Endpoint
FIFOs
USB
Bus
CPPI 4.1
USB Controller
RXSQ
Queue 0
RXCQ
Queue 26
Architecture
1670
SPRUH82C – April 2013 – Revised September 2016
Copyright © 2013–2016, Texas Instruments Incorporated
Universal Serial Bus 2.0 (USB) Controller
Step 1 (Initialization for Rx):
1. The CPU initializes Queue Manager with the Memory Region 0 base address and Memory Region 0
size, Link RAM0 Base address, Link RAM0 data size, and Link RAM1 Base address.
2. The CPU creates BDs, and DBs in main memory and link them as indicated in
.
3. It then initializes the RXCQ queue and configures the Queue Manager, Channel Setup, DMA
Scheduler, and Mentor USB 2.0 Core.
4. It then adds (pushes) the address of the three PHDs into the RXSQ.
Step 2 (Mentor USB 2.0 Core receives a packet, XDMA starts data transfer for Receive):
1. The Mentor 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 from the Endpoint FIFO into the CPPI FIFO.
Step 3 (CDMA transfers data from SSRAM / PPU to main memory for Receive):
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.
An example of the completion for a receive USB data flow is shown in
Figure 34-26. Receive USB Data Flow Example (Completion)