![](http://datasheet.mmic.net.cn/110000/GT-96100A_datasheet_3491740/GT-96100A_219.png)
GT-96100A Advanced Communication Controller
Revision 1.0
219
9.
INDEPENDENT DMA CONTROLLERS (IDMA CONTROLLERS)
The GT-96100A has four Independent DMA controllers. The IDMA controllers are used to optimize system per-
formance by moving large amounts of data without significant CPU intervention.
Rather than having the CPU read data from one source and write it to another, use the IDMA controllers to
directly transfer data independent of the CPU. This allows the CPU to continue executing other instructions
simultaneous to the movement of data.
It is possible for each IDMA controller to move data between peripherals on the SDRAM/Device Controller bus,
between devices on the PCI buses, or between peripherals on the SDRAM/Device Controller bus and devices on
the PCI buses.
Each IDMA transfer uses one of two internal 64-byte FIFOs for moving data. Data is transferred from the source
device into an internal FIFO, and from the internal FIFO to the destination device.
The IDMA controller can be programmed to move up to 64KBytes of data per transaction. The burst length of
each transfer of each IDMA can be set from 1 to 64 bytes. Accesses can be non-aligned both in the source and
the destination.
The GT-96100A has two “72-byte” FIFOs available for the utilization by the DMA engines. Although the maxi-
mum DMA burst size is 64 bytes, the extra eight bytes in the FIFO are required for non-double word aligned
transfers. Two FIFOs allow for concurrency between two DMA transactions. This means one DMA channel can
be reading data from the SDRAM into the first FIFO while another channel is writing data to a PCI target from
the second FIFO.
The DMA channels support chained mode of operation. The descriptors are stored in memory, and the DMA
engine moves the data until the Null Pointer is reached.
Fly-By DMA transfers are also supported. This type of DMA transfers greatly increase memory bandwidth. Fly-
By transfers are permitted to and from a device or to and from SDRAM.
The DMA can be initiated by the CPU writing a register, an external request via a DMAReq* pin, or from a
timer/counter. In cases where the transfer needs to be externally terminated, an End of Transfer (EOT[3:0]) pin
must be asserted (driven low) for the corresponding DMA channel.
9.1
DMA Channel Registers
Each DMA Channel record consists of the following registers. These registers can be written by the CPU, PCI, or
IDMA controller in the process of fetching a new record from memory.
9.1.1
Byte Count Register
The Byte Count Register consists of four registers at offsets 0x800 - 0x80c.
This register is programmed with a 16-bit number containing the number of data bytes this channel must DMA.
The maximum number of bytes the DMA controller can be configured to transfer is 64K-1. This register decre-
ments at the end of every burst of transmitted data from source to destination.
When the byte count register is 0, or the End of Transfer pin is asserted, the DMA transaction is finished or ter-
minated.