6
–
12
6.4.2
Fair Arbitration
When using this arbitration class, an active node can send an asynchronous packet exactly once each fairness
interval. Once a subaction gap is detected, a node can begin arbitration when its Arbitration_Enable signal is set. The
Arbitration_Enable signal is set at the beginning of the fairness interval and is cleared when the node successfully
accesses the bus through fair arbitration. This disables further fair arbitration attempts by that node for the remainder
of the fairness interval. In the absence of urgent nodes, a fairness interval ends once all of the nodes attempting fair
arbitration have successfully accessed the bus. At this time, all of the fair nodes have their Arbitration_Enable signals
reset and cannot arbitrate for the bus. The bus remains idle until an arbitration reset gap occurs. Once this happens,
the next fairness interval begins. All of the nodes set their Arbitration_Enable signal and can begin to arbitrate for the
bus. This process is illustrated in Figure 6
–
10.
arb
arb
arb
arb
Node A
Node B
Node C
Clear When Node Wins Arbitration
Set at Arbitration Reset Gap
Note: Arbitration Number of A > B > C
Fairness Interval N
Fairness
Interval N
–
1
Fairness
Interval N+1
Node A
Node B
Node B
A
A
A
Figure 6
–
10. Fair Arbitration Timing
NOTE:
A node sending a concatenated subaction does not reset its Arbitration_Enable bit.
6.4.3
Urgent Arbitration
The backplane environment enhances the fair priority algorithm by splitting access opportunities among nodes based
on two priority classes: fair and urgent. Nodes using an urgent priority can use up to three-fourths of the access
opportunities, with the remaining equally shared among nodes using the fair priority. All nodes are required to
implement the fair priority class, while the urgent priority class is optional. Packets are labeled as urgent when that
priority class is used.
The fair/urgent allocation uses the same fairness interval described in fair arbitration but accompanies the
Arbitration_Enable flag with an Urgent_Count. The fair/urgent method works as follows:
When the bus is idle for longer than an arbitration reset gap, a fairness interval begins and all nodes set
their Arbitration_Enable flags, while nodes implementing urgent priority set their Urgent_Count to three.
A node that is waiting to send a packet using the fair priority class should begin arbitrating after detecting
a subaction gap as long as its Arbitration _Enable flag is set. When its Arbitration_Enable flag is cleared,
it waits for an arbitration reset gap before it begins arbitrating. When such a node wins an arbitration contest,
it sends a packet without the urgent label and its Arbitration_Enable flag is cleared.
A node that is waiting to send a packet with urgent priority begins arbitrating after detecting a subaction gap
if its Urgent_Count is nonzero. When its Urgent_Count is zero, it waits for an arbitration reset gap before
it begins arbitrating. Whenever such a node wins an arbitration contest, it sends a packet with the urgent
label.