
Copyright 1997-2000, V3 Semiconductor Inc.
EPC User
’
s Manual Revision 1.05
37
Chapter 6
DMA Controller
The EPC
’
s DMA Controller includes two channels, each capable of transferring data from
Local memory to PCI, or from PCI to Local memory. The DMA Controller supports the
following features:
Block transfers up to 4 megabytes in size for each link
On-the-fly byte order conversion
PCI and local transfer ranges independent of data transfer apertures
Block chaining with no limit on the number of chained blocks
The DMA controller is useful in applications that transfer large amounts of sequential data
across the bridge. For example, an intelligent disk controller may need to transfer a data
buffer from the local memory space to the host processors
’
memory space located on the
PCI bus. Using DMA is ideal in this case, since the programmer simply sets starting
addresses and the transfer count, then lets the EPC transfer the data without local or host
processor intervention.
6.1
DMA TRANSFERS
A DMA transfer consists of the movement of data by the EPC from local memory to the PCI
bus, or from PCI memory to the local bus.
6.1.1
Local Bus to PCI Bus DMA Transfers
Prior to starting local-to-PCI DMA transfers, the programmer must set the local and PCI
starting address, as well as the byte order conversion, direction, and priority options. DMA
transfers are initiated by setting the IPR bit within the DMA_CSRx register.
A Local-to-PCI DMA data transfer begins with the EPC requesting the local bus. Once the
local bus is granted, the EPC performs a local bus read to fetch the contents of the memory
location pointed to by the local DMA address register (DMA_LOCAL_ADDRx). The local bus
read performed by the DMA controller does not use the read prefetch FIFOs.The data read
from the local bus is then placed in the Local-to-PCI write FIFO, the address for the write
phase is stored in the DMA address generator. The PCI command that is used for the write