![](http://datasheet.mmic.net.cn/230000/79RC32438-200BB_datasheet_15568909/79RC32438-200BB_293.png)
IDT PCI Bus Interface
Decoupled PCI Master Transactions
79RC32438 User Reference Manual
10 - 25
November 4, 2002
Notes
PCI Local Base Address [0|1|2|3] Mapping Register
Figure 10.9 PCI Local Base Address [0|1|2|3] Mapping Register (PCILBA[0|1|2|3]M)
Decoupled PCI Master Transactions
CPU core accesses to the PCI bus may take a significantly longer time to complete than normal IPBus
transactions. One reason for this is the fact that the PCI bus can run at one quarter the frequency of the
IPBus. Other reasons are: PCI arbitration delays, retried PCI transactions, and PCI wait states.
Reads from the CPU core to the PCI bus will lock up the IPBus until the transaction completes. Writes
from the CPU core to the PCI bus when the CPU master output FIFO is full will also lock up the IPBus until
a write transaction completes and space becomes available in the FIFO. Locking up the IPBus may have
adverse affects on the real-time performance of the system. For example, it may lead to Ethernet FIFO
overflows and underflows.
The programmer may avoid locking up the IPBus due to CPU core-initiated writes to the PCI bus by
making sure that the CPU master output FIFO is not full prior to performing a write. This may be determined
by observing the state of the Output FIFO Full (OFF) bit in the PCI Decoupled Access Status (PCIDAS)
Register. Since the IPBus does not support split transactions, there is no way to avoid locking up the IPBus
using traditional CPU reads of the PCI bus.
To overcome this difficulty, the PCI bus interface supports decoupled read accesses. Decoupled read
accesses are enabled when the Decoupled Access Enable (DEN) bit is set in the PCI Decoupled Access
Control (PCIDAC) register. When the DEN bit is set, any CPU core-initiated read of an address that maps to
PCI space is completed immediately with a value of zero being returned to the CPU core. The PCI bus
interface then performs the read operation on the PCI bus. While a decoupled access is in progress, the
Busy (B) bit is set in the PCIDAS register. When the read operation completes, the Done (D) bit is set in the
PCIDAS register, the B bit is cleared, and the value read from the PCI bus is available in the PCI Decoupled
Access Data (PCIDAD) register. The CPU may read this value, thus completing the decoupled PCI read
operation. If an error was detected while performing the PCI read, the Error (E) bit is set and the value in the
PCIDAD register is undefined. Note that the D bit will not be set under this condition.
The state of the PCI CPU input and output FIFOs may be determined by examining the state of the
OFE, OFF, IFE, and IFF bits in the PCI decoupled access status register. All of the bits in the PCIDAS
register not masked by the PCI decoupled access status mask register are ORed together and presented to
the interrupt controller as the PCI decoupled access interrupt.
Note that when the DEN bit is set in the PCIDAC register, configuration read and write transactions to
devices other than the RC32438 are also performed in a decoupled manner. Configuration read and writes
to internal RC32438 configuration registers are never performed in a decoupled manner.
MADDR
Description:
Mapping Address.
This field contains the PCI base address for local transactions mapped to
the PCI bus through the PCILBAx register. Local transaction address bits 31 through the value of
the SIZE field in the PCILBAxC register are replaced by corresponding bits in this field for local
transactions that map to the PCI bus through the PCILBAx register.
Initial Value:
0x0
Read Value:
Previous value written
Write Effect:
Modify value
PCILBA[0|1|2|3]M
0
31
24
MADDR
0
8