IDT DMA Controller
Data Flow within the RC32438
79RC32438 User Reference Manual
9 - 5
November 4, 2002
Notes
Similarly, the received data can be stored anywhere in the main memory without any byte alignment or
length restrictions. Further, there is no relationship required between the alignment or length of the trans-
mitted data and the received data. For example, the received data can start at byte 3 within the word and be
561 bytes long.
Data Flow Using the DMA Controller
The reception and transmission of data using the DMA Controller follows a series of standard steps. For
the data reception, the following steps highlight the data and control flow within the RC32438.
1. The 4Kc processor core initializes the DMA channel for the desired peripheral.
2. The peripheral starts receiving the data in its input FIFO. Depending on the peripheral used, once
the required number of bytes are received in the FIFO or when an “end of packet” is received, the
peripheral places a DMA request with its associated DMA channel.
3. The DMA channel transfers the data from the peripheral to memory.
4. The DMA Controller can be configured to generate an interrupt to the 4Kc core when it completes
transferring a packet to memory. This signals the 4Kc core to begin executing software for higher
level protocol processing.
The transmission of the data follows the same steps in reverse order. The following steps highlight the
data and control flow within the RC32438 when data is transmitted.
1. The upper layer software stacks ready the data for transmission.
2. The 4kc core sets up the DMA channel for transmission.
3. The DMA channel transfers the data from memory to the output FIFO of the peripheral.
4. The peripheral transmits the data on its bus.
5. The operation continues until the end of the packet. This usually triggers an interrupt to the 4Kc core
which ends the DMA operation.
Figure 9.2 illustrates the simplified data movement operation within the RC32438.
Figure 9.2 Anatomy of DMA Operations
Memory-to-Memory Transfer
The DMA Controller has a 16-word internal FIFO that is only used during memory-to-memory transfers.
This FIFO is needed to temporarily store the data between transfers. To do a memory-to-memory DMA
operation, the data is read from the source memory, stored in the DMA FIFO, then written in the destination
memory. Only DMA channels 6 and 7 can be used for memory-to-memory DMA operations.
Note:
Memory-to-memory DMA operations using channel 6 will not start until channel 7 is
started.
The maximum burst size is limited by the DMA FIFO size and is fixed at 16 words.
Source and destination memories can be any type of memory or device connected to the DDR
Controller or the Device Controller.
Endianness swapping is not supported during memory-to-memory DMA.
DMA
State Machine
IPBus
Channel 0
Channel 9
DDR
Controller
DDR
On-chip
peripherals
1. Issue request to transfer data
2. Appropriate channel is
selected
3. Load descriptor from DDR
4. Transfer data
5. Store
descriptor
to memory
and end
the transfer