![Intel IXP45X Скачать руководство пользователя страница 540](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092540.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors—PCI Controller
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Develepor’s Manual
August 2006
540
Order Number: 306262-004US
10.3.3.1
AHB-to-PCI DMA Channel Operation
The AHB-to-PCI (ATP) channel uses the PCI Core Initiator Request and Initiator
Transmit FIFOs. The channel reads data from the AHB bus and writes it to a PCI target
on word aligned boundaries.
A DMA transfer from AHB-to-PCI is processed as follows:
1. An AHB master writes the PCI starting address, AHB starting address, and word
count to the PCI_ATPDMA0/1_PCIADDR, PCI_ATPDMA0/1_AHBADDR,
PCI_ATPDMA0/1_LENGTH registers respectively. If the channel enable bit is set in
the PCI_ATPDMA0/1_LENGTH register, the DMA transfer commences.
2. The DMA Controller signals the AHB Slave Interface to retry all access attempts
from the AHB bus and waits for the Transmit FIFO to become empty.
3. The DMA Controller requests access to the AHB Master Interface which it shares
with the other DMA channel and accesses from the PCI bus.
4. When access is obtained, data is read from AHB and loaded into the Initiator
Transmit FIFO. A PCI write request is loaded into the Initiator Request FIFO.
5. The AHB Master and Slave Interfaces are released.
6. When the transfer completes on the PCI bus, the DMA address and length registers
are updated.
7. Steps 2-6 are repeated until all words are transferred. When done, the channel
enable bit in the PCI_ATPDMA0/1_LENGTH register is cleared, the DMA complete
status bit is set.
8. In response to the interrupt, an AHB agent may read the DMA Control register
(pci_dmactrl) to determine the status of the transfer.
10.3.3.2
PCI-to-AHB DMA Channel Operation
The PCI-to-AHB (PTA) channel uses the PCI Core Initiator Request and Initiator Receive
FIFOs. The channel reads data from the PCI bus and writes it to an AHB slave on word
aligned boundaries. A DMA transfer from PCI-to-AHB is processed as follows:
1. An AHB master writes the PCI starting address, AHB starting address, and word
count to the PCI_PTADMA0/1_PCIADDR, PCI_PTADMA0/1_AHBADDR,
PCI_PTADMA0/1_LENGTH registers respectively. If the channel enable bit is set in
the PCI_PTADMA0/1_LENGTH register, the DMA transfer commences.
2. The DMA Controller signals the AHB Slave Interface to retry all access attempts
from the AHB bus and waits for non-full indication from the Initiator Request FIFO.
3. The DMA Controller issues a read request to the PCI Core via the Request FIFO and
releases the AHB Slave Interface.
4. When the PCI data arrives in the Initiator Receive FIFO, the DMA Controller
requests access to the AHB Master Interface which it shares with the AHB-to-PCI
DMA channel and accesses from the PCI bus.
5. When access is obtained, data is read from the Target Receive FIFO and written to
the AHB agent.
6. When the transfer completes on the AHB bus, the DMA address and length
registers are updated.
7. Steps 2-6 are repeated until all words are transferred. When done, the channel
enable bit in the PCI_PTADMA0/1_LENGTH register is cleared, the DMA complete
status bit is set.
8. In response to the interrupt, an AHB agent may read the DMA Control register
(PCI_DMACTRL) to determine the status of the transfer.