![Texas Instruments AM1808 Technical Reference Manual Download Page 1649](http://html.mh-extra.com/html/texas-instruments/am1808/am1808_technical-reference-manual_10945581649.webp)
Architecture
1649
SPRUH82C – April 2013 – Revised September 2016
Copyright © 2013–2016, Texas Instruments Incorporated
Universal Serial Bus 2.0 (USB) Controller
Host—
The host is an intelligent system resource that configures and manages each communications
control module. The host is responsible for allocating memory, initializing all data structures, and
responding to port interrupts.
Main Memory—
The area of data storage managed by the CPU. The CPPI DMA (CDMA) reads and
writes CPPI packets from and to main memory. This memory can exist internal or external from the
device.
Queue Manager (QM)—
The QM is responsible for accelerating management of a variety of Packet
Queues and Free Descriptor / Buffer Queues. It provides status indications to the CDMA Scheduler
when queues are empty or full.
CPPI DMA (CDMA)—
The CDMA is responsible for transferring data between the CPPI FIFO and Main
Memory. It acquires free Buffer Descriptor from the QM (Receive Submit Queue) for storage of
received data, posts received packets pointers to the Receive Completion Queue, transmits
packets stored on the Transmit Submit Queue (Transmit Queue) , and posts completed transmit
packets to the Transmit Completion Queue.
CDMA Scheduler (CDMAS)—
The CDMAS is responsible for scheduling CDMA transmit and receive
operations. It uses Queue Indicators from the QM and the CDMA to determine the types of
operations to schedule.
CPPI FIFO—
The CPPI FIFO provides 8 FIFO interfaces (one for each of the 4 transmit and receive
endpoints). Each FIFO contains two 64-byte memory storage elements (ping-pong buffer storage).
Transfer DMA (XDMA)—
The XDMA receives DMA requests from the Mentor USB 2.0 Core and initiates
DMAs to the CPPI FIFO.
Endpoint FIFOs—
The Endpoint FIFOs are the USB packet storage elements used by the Mentor USB
2.0 Core for packet transmission or reception. The XDMA transfers data between the CPPI FIFO
and the Endpoint FIFOs for transmit operations and between the Endpoint FIFOs and the CPPI
FIFO for receive operations.
Mentor USB 2.0 Core—
This controller is responsible for processing USB bus transfers (control, bulk,
interrupt, and isochronous). It supports 4 transmit and 4 receive endpoints in addition to endpoint 0
(control).
34.2.8.1 CPPI Terminology
The following terms are important in the discussion of DMA CPPI.
Port—
A port is the communications module (peripheral hardware) that contains the control logic for
Direct Memory Access for a single transmit/receive interface or set of interfaces. Each port may
have multiple communication channels that transfer data using homogenous or heterogeneous
protocols. A port is usually subdivided into transmit and receive pairs which are independent of
each other. Each endpoint, excluding endpoint 0, has its own dedicated port.
Channel—
A channel refers to the sub-division of information (flows) that is transported across ports.
Each channel has associated state information. Channels are used to segregate information flows
based on the protocol used, scheduling requirements (example: CBR, VBR, ABR), or concurrency
requirements (that is, blocking avoidance). All four ports have dedicated single channels, channel 0,
associated for their use in a USB application.
Data Buffer—
A data buffer is a single data structure that contains payload information for transmission to
or reception from a port. A data buffer is a byte aligned contiguous block of memory used to store
packet payload data. A data buffer may hold any portion of a packet and may be linked together
(via descriptors) with other buffers to form packets. Data buffers may be allocated anywhere within
the 32-bit memory space. The Buffer Length field of the packet descriptor indicates the number of
valid data bytes in the buffer. There may be from 1 to 4M-1 valid data bytes in each buffer.
Host Buffer Descriptor—
A buffer descriptor is a single data structure that contains information about
one or more data buffers. This type of descriptor is required when more than one descriptor is
needed to define an entire packet, i.e., it either defines the middle of a packet or end of a packet.