beautypg.com

3 pci internal arbiter – Intel NETWORK PROCESSOR IXP2800 User Manual

Page 331

background image

Hardware Reference Manual

331

Intel

®

IXP2800 Network Processor

PCI Unit

9.2.11.3

PCI Internal Arbiter

The PCI unit contains a PCI bus arbiter that supports two external masters in addition to the PCI

Unit’s initiator interface. To enable the PCI arbiter, the CFG_PCI_ARB(GPIO[2]) strapping pin

must be 1 during reset. As shown in

Figure 120

, the local bus request and grant pair become

externally not visible. These signals will be made available to external debug pins for debug

purpose.

The arbiter uses a simple round-robin priority algorithm, The arbiter asserts the grant signal

corresponding to the next request in the round-robin during the current executing transaction on the

PCI bus (this is also called hidden arbitration). If the arbiter detects that an initiator has failed to
assert frame_l after 16 cycles of both grant assertion and PCI bus idle condition, the arbiter de-

asserts the grant. That master does not receive any more grants until it de-asserts its request for at

least one PCI clock cycle. Bus parking is implemented in that the last bus grant will stay asserted if
no request is pending.

To prevent bus contention, if the PCI bus is idle, the arbiter never asserts one grant signal in the

same PCI cycle in which it de-asserts another. It de-asserts one grant, and then asserts the next

grant after one full PCI clock cycle has elapsed to provide for bus driver turnaround.

Figure 120. PCI Arbiter Configuration Using CFG_PCI_ARB(GPIO[2])

Pin

CFG_PCI_ARB(GPIO[2]) = 0 (during reset)

CFG_PCI_ARB(GPIO[2]) = 1(during reset)

GNT_L[0]
GNT_L[1]
REQ_L[0]
REQ_L[1]

PCI Bus Grant Input to IXP2800 Network Processor
Not Used, Float
PCI Bus Request Output from IXP2800 Network Processor
Not Used, Tied High

PCI Bus Grant Output to Master 1
PCI Bus Grant Output to Master 2
PCI Bus Request Input from Master 1
PCI Bus Request Input from Master 1

A9767-03

PCI Master
State Machine

PCI Arbiter

GNT_L

GNT_L[2:0]

REQ_L[2:0]

GNT_L[1]

GNT_L[0]

CFG_PCI_ARB

REQ_L[0]

REQ_L[1]

REQ_L

PCI UNIT

0

1