IDT DMA Controller
Data Flow within the RC32438
79RC32438 User Reference Manual
9 - 3
November 4, 2002
Notes
Data Flow within the RC32438
The RC32438 is primarily an engine designed to efficiently move data between interfaces. Data is
received from one of the interfaces, stored in the main memory, then transferred out on another interface.
Thus, understanding the operation data flow within the RC32438 is very important in understanding the
behavior of the device and how to optimize the internal resources to meet the needs of the various applica-
tions.
The IPBus
The internal IPBus in the RC32438 is the backbone of the device and is connected to every module in
the RC32438. It is used to transfer all the data within the device and to make the connection between the
external main memory and the on-chip peripherals. There are two potential bus masters on the IPBus: The
CPU core and the DMA Controller (through one of its DMA channels). The processor core and the DMA
Controller must arbitrate to acquire ownership of the IPBus (as described in Chapter 5, Bus Arbitration).
Once the IPBus is granted to a master, data can be transferred within the RC32438. All other interfaces
connected to the IPBus are slaves, including the Device Controller. To transfer data, one of the bus masters
must request data from or send data to the slave.
None of the on-chip peripherals on the RC32438 have IPBus mastership capability. Rather, each has its
internal FIFO to buffer the incoming and the outgoing data. The peripheral receives output data from the
IPBus (either DMA or CPU) in its transmit FIFO and sends it out the interface bus. Or it receives input data
from the interface bus in its receive FIFO and requests service from an IPBus master through an interrupt or
status flag to the CPU or a request to the DMA Controller. The internal FIFOs are only used to compensate
for the IPBus arbitration and access latency. The external memory (DDR or memory/IO) is used as the
primary storage location for the incoming and outgoing data. Thus, all the data movement within the
RC32438 must pass through the memory — either DDR through the DDR controller, or SRAM / dual port
through the Device Controller. The DMA Controller can transfer data between peripherals via external
memory. As an example, input data from the Ethernet port will be stored in external memory first. The CPU
will then process the data for appropriate protocol conversion. The data will then be transferred from the
DDR memory to the PCI interface.
The CPU core can access any of the on-chip peripherals for data transfer and reception. Some periph-
erals, like the Ethernet interface and PCI interface, have associated DMA channels that can be used to
transfer and receive data.
4Kc Core
as Bus Master
When the 4Kc processor core is the IPBus master, it can read and write data from or to any peripheral to
transmit and receive the data. This is accomplished through the execution of the standard load and store
instructions of the 4Kc core. This usually includes several steps: The 4Kc core loads the data from main
memory into one of its internal registers and then writes it to the peripherals for transmission. The reverse
occurs for the reception of data. Usually, the internal peripherals will be accessed as non-cached entries by
the processor core. However, the use of the Prefetch-with-ignore-Hit instruction enables the processor core
to treat some of the peripherals as cached entries, thus speeding up the processing of the data by the 4Kc
core. This usually is used when the 4Kc core needs to process the header of a packet for decision making.
For most of the slow peripherals (like I
2
C), using the processor core is more than adequate to maintain the
0x04_00C0
DMA9DPTR
DMA 9 descriptor pointer
32-bit
0x04_00C4
DMA9NDPTR
DMA 9 next descriptor pointer
32-bit
0x04_00C8 through 0x04_3FFF
Reserved
1.
The address of the register is equal to the register offset added to the base value of 0x1800_0000.
Register Offset
1
Register Name
Register Function
Size
Table 9.1 DMA Register Map (Part 3 of 3)