GT-96100A Advanced Communication Controller
160
Revision 1.0
7.3.3
PCI Target Read Prefetching
The target FIFOs are also used for read prefetch. The Memory Read (MR), Memory Read Line (MRL), and
Memory Read Multiple (MRM) cycles are executed as prefetchable read cycles.
The Device/DRAM Unit fills the target FIFOs as soon as it is determined that the PCI request will be longer than
a single word (based on how long Frame* is asserted.) The “aggressiveness” of the prefetch is controlled by the
type of read command (MR/MRL/MRM) and the state of the bits for each of the read command types in the
Prefetch/Max_Burst register.
By default, the only “aggressive” prefetched read is the Memory Read Multiple. Both Memory Read and Mem-
ory Read Line commands are marked for aggressive prefetch via the Prefetch/Max_Burst register. With aggres-
sive prefetch, as soon as at least one word is delivered from the FIFO to the PCI bus, the PCI slave requests from
the Device/DRAM unit to prefetch into the second FIFO.
NOTE: When using aggressive prefetch, the upper address allowed to be read from the PCI is last DRAM
address minus 0x8.
In a non-aggressive prefetch, read cycle data is prefetched into only one of the target FIFOs. Data is not fetched
into the second FIFO until all the data from the first FIFO is delivered to the PCI bus. MR and MRL cycles are by
default, non-aggressive prefetch.
NOTE: All three types of read commands will result in prefetch (multiple read cycles) on the Device/DRAM
bus unless Frame* is only asserted for a single cycle.
Cycles to internal registers and Configuration cycles are non-postable nor prefetchable. These cycles are always
single word.
NOTE: If a PCI master attempts to burst transaction to internal register, the GT-96100A disconnects after the
first TRDY*.
7.3.4
PCI Target Address Space Decode and Byte Swapping
The GT-96100A decodes accesses on the PCI bus, for which it may be a target, by the values programmed into
the Base Address registers (BARs).
There are two sets of BARs for each PCI interface: regular BARs (in PCI Function 0) and swap BARs (in PCI
Function 1). Accesses decoded by the regular BARs are passed without modifying the data to or from the target
memory device. Accesses decoded by the swap BARs are passed with to or from the target memory device after
converting the endianess of the data (e.g. little-endian to big-endian).
The GT-96100A uses a two stage decode process for accesses through the PCI devices target interface. Once a
PCI access is determined to be a “hit” based on the BAR comparison, the address is passed to the Device Unit for
sub-decode. For example, PCI_0 Base Address Register 0 in Function 0 (PCI_0 BAR0) decodes non-byte
swapped accesses to the SDRAM controlled by either SCS[0]* or SCS[1]*. The GT-96100A then uses the values
programmed into the SCS[0]* Low and SCS[0] High decode registers to determine if the access is to the
SDRAM in SCS[0]* space.
If the target address of a PCI write transaction “hits” based on the BAR decode, then misses in the Device Unit,
transaction is completed properly on the PCI bus, but data is NOT written to memory. In case of read transaction,
although there is no actual read from memory, transaction is completed properly on PCI bus, but the data driven