The document describes a round-robin arbiter module that determines which master can use a shared bus. It uses a rotating priority scheme to grant access to each master in turn. The arbiter logic includes request detection, priority encoding, state tracking to grant the next master, and arbitration logic to assert the appropriate grant lines. Verification is done through testing and simulation of sample waveforms.
3. RRoouunndd--RRoobbiinn AArrbbiitteerr
In a shared bus, the arbiter determines which
master can use the bus
The bus is granted on a rotary basis much like the
four position rotary switch shown below:
When a master relinquishes the bus, the switch is
turned to the next position and the bus is granted
to the master on the level
In this way all masters are granted the bus on an
equal basis
3
MASTER #0
MASTER #3
MASTER #2
MASTER #1
5. RRoouunndd--RRoobbiinn AArrbbiitteerr
Bus requests arrive at inputs [ CYC0] to [CYC3]
If bus is free, one of the 4 grant lines ([GNT0] to
[GNT1]) is asserted which corresponds to the
request signals
5
6. Round-RRoobbiinn AArrbbiitteerr:: CCOOMMCCYYCC
The [COMCYC] indicates whether the bus is free or
busy
It is asserted whenever a master has both requested
the bus and has been granted the bus by the arbiter
6
8. Round-Robin AArrbbiitteerr:: EEnnccooddeerr LLooggiicc
Grant line [GNT0] to [GNT3] are encoded as
[GNT(1..0)]
This is used with the [COMCYC] signal to indicate
which master has been granted the bus
When [COMCYC] is asserted, the master located on
[GNT(1..0)] is granted the bus
8
10. Round-RRoobbiinn AArrbbiitteerr:: LLAASSMMAASS
Round-robin arbiters keep track of the level of the
previous master
The level is saved in a register that latches the
state of grant signals [GNT(1..0)]
The register latches the grant signal when
indicated by the LASMAS state machine
10
CE
11. Round-RRoobbiinn AArrbbiitteerr:: LLAASSMMAASS
LASMAS state machine: state diagram
State = {EDG,LASMAS}
Input logic:
Input = BEG
BEG= (CYC0 || CYC1 || CYC2 || CYC3) & (~COMCYC);
From the state diagram:
EDG= ( BEG & ~EDG & LASMAS) || ( BEG & EDG & ~LASMAS );
LASMAS = ( BEG & ~EDG & ~LASMAS ); 11
CYC0
CYC1
CYC2
CYC3
COMCYC
BEG