RM0082
HS_USB 2.0 device
Doc ID 018672 Rev 1
467/844
accommodation is limited by the size of the OUT packets. Rest of the data FIFO i.e. 2 KB
(out of total 4KB dada FIFO) is used for TXFIFO.
Figure 40.
RxFIFO implementation
Upon receiving an out packet, UTLI strobes this data into the data FIFO (37 bit wide), and
the UDC sends a status bit indicating whether or not the data was received without errors. If
data reception was error-free, the UTLI confirms the data in the RxFIFO by writing the
relevant endpoint number and associated flag into the address FIFO. In contrast, if data was
received with errors, the
receive FIFO controller
rolls back the data FIFO pointers as if
nothing had been received.
Then, when an external AHB master tries to access the packet received for a particular out
endpoint, at first it must read the relevant endpoint status register (
) to determine the number of bytes to be transferred, before to start the
appropriate AHB transfers with an appropriate
HSIZE
(i.e 32, 16, or 8).
Note:
Any attempt to write the RxFIFO via the AHB interface results in an AHB error.
The RxFIFO also requires a confirming signal when a packet is written to or read from it.
This confirmation is used by the
receive FIFO controller
to propagate pointer information
from one domain to another and to calculate different RxFIFO status signals.
23.3.5
Endpoint FIFO controller (Transmit FIFO controller)
An
endpoint FIFO controller
block manages the FIFO of a specific in endpoint (dedicated to
transactions to the USB Host) supported by the UDC-AHB subsystem. In particular, each in
endpoint is associated to a Transmit FIFO (TxFIFO) which is mapped in external RAM, and
each TxFIFO is in charge of an
endpoint FIFO controller
.
Pa
ck
et
2
Pac
ket 1
Pa
ck
et
3
Address
Data
32 bits wide
37 bits wide
Addrss FIFO
(Implemented in Regiters)
Data FIFO
(Implemented in RAM)