![Intel IXP45X Скачать руководство пользователя страница 539](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092539.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Develepor’s Manual
Order Number: 306262-004US
539
PCI Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
The DMA channels use 8-word burst accesses on the PCI and AHB busses (PCI-to-AHB
and AHB -to-PCI) whenever possible. In the general case, a transfer will issue a
starting burst from 1 to 7 words to align the AHB word address to an 8-word boundary.
Then issue 8-word bursts until the words remaining to be transferred is less than 8.
Then complete the transfer with a burst of from 1 to 7 words. Eight-word bursts are the
maximum sustained length that the AHB — and the PCI bus — can transfer. Every eight
words, the PCI bus will disconnect and reconnect later.
This implementation allows fairness among all devices on the PCI bus. In the general
case, a transfer will issue a beginning burst transfer from one to eight words to align
the AHB word address of the DMA to an eight-word boundary.
The subsequent transfers will be issued as eight-word bursts until the words remaining
to be transferred are eight words or less. The final transfer will complete the DMA with
a burst of one to eight words.
The example below demonstrates how to use the DMA channels.
The goal is to:
• Write a 16-word burst to the PCI Bus with no byte-swapping, using the AHB-to-PCI
DMA channel
• Initialize a 16-word burst read from the PCI Bus, using the PCI-to-AHB DMA
channel
• Initialize a six-word burst write to the PCI Bus using the AHB-to-PCI DMA channel.
The AHB-to-PCI DMA channel is used to complete PCI Memory Cycle write accesses
and the PCI-to-AHB DMA channel is used to complete PCI Memory Cycle read
accesses always.
1. Update the AHB-to-PCI DMA AHB Address Register 0 (PCI_ATPDMA0_AHBADDR)
with PCI_ATPDMA0_AHBADDR = 0x00004000 and the AHB-to-PCI DMA PCI
Address Register 0 (PCI_ATPDMA0_PCIADDR) with PCI_ATPDMA0_PCIADDR =
0xFC000004.
2. Update the AHB-to-PCI DMA AHB Address Register 1 (PCI_ATPDMA1_AHBADDR)
with PCI_ATPDMA1_AHBADDR = 0x00004F00 and the AHB-to-PCI DMA PCI
Address Register 1 (PCI_ATPDMA1_PCIADDR) with PCI_ATPDMA1_PCIADDR =
0xA2000004.
3. Update the PCI-to-AHB DMA AHB Address Register 0 (PCI_PTADMA0_AHBADDR)
with PCI_PTADMA0_AHBADDR = 0x00004A00 and the PCI-to-AHB DMA PCI
Address Register 0 (PCI_PTADMA0_PCIADDR) with PCI_PTADMA0_PCIADDR =
0x10000004.
4. Update the AHB-to-PCI DMA Length Register 0 (PCI_ATPDMA0_LENGTH) with
PCI_ATPDMA0_LENGTH = 0x80000010.
The DMA write transfer to the PCI bus begins.
5. Update the PCI-to-AHB DMA Length Register 0 (PCI_PTADMA0_LENGTH) with
PCI_PTADMA0_LENGTH = 0x80000010.
Assume that this DMA channel is enabled prior to the end of the first eight-word
burst of the first write DMA transfer ending. The DMA read transfer to the PCI bus
becomes interleaved with the first write transfer. So the first eight words of the
read starts towards completion.
6. Update the AHB-to-PCI DMA Length Register 1 (PCI_ATPDMA1_LENGTH) with
PCI_ATPDMA1_LENGTH = 0x90000006.
Assume this is set while the above read DMA transaction is occurring.
7. The next PCI transfer is completing the last eight words of the initial 16-word write
DMA transfer. That is followed by the last eight words of the 16-word read DMA
transfer and the execution of the six-word write transfer with the data byte lanes
swapped.