Arbitration
Distributed arbitration
- devices requesting bus place ID values on open-collector ARB lines
- if value on ARB ? ID then they stop driving ARB lines
- device with ARB ? ID gets bus (must be decided in 2 bus cycles)
- e.g., #1 vs. #2:
0001 0010 0000 start arbitration
0... 0... 0... check 1st bit (both ok)
00... 00... 00... check 2nd bit (both ok)
000... 001... 000... check 3rd bit (#2 loses and removes itself)
0001 ... 0001 check 4th bit (#1 matches and wins)