Il circuito che vogliamo realizzare puo' essere schematizzato come segue:
I tre device collegati al bus invieranno un segnale di request all'arbitro per chiedere
di poter utilizzare il bus e riceveranno dall'arbitro un segnale di grant se autorizzati all'uso
del bus. L'arbitro che vogliamo realizzare sara' descritto dal seguente automa a stati finiti:
Indicando con REQ1, REQ2, e REQ3 i segnali di richiesta rispettivamente dei devices 1 2 e 3 come
input possiamo considerare le stringhe nella forma:
REQ3 REQ2 REQ1
e adottando la convenzione:
REQ=0 il device non fa richiesta di usare il bus
REQ=1 il device fa richiesta di usare il bus
gli input saranno:
X = {000, 001, 010, 011, 100, 101, 110, 111}
L'INPUT 000 significa dunque che nessun device ha fatto richiesta di usare il bus, 011 che
il device 2 ed il device 1 hanno fatto richiesta di usare entrambe il bus. Nel caso di richiesta
contemporanea dell'uso del bus di piu' devices adotteremo la convenzione di autorizzare il device
rappresentato nell'input dal bit piu' significativo (bit piu' a sinistra nella stringa). Quindi
nel caso dell'input 011 l'arbitro autorizzera' il device 2 ad usare il bus.
Per le uscite, adottando poi la convenzione che l'arbitro invia 0 al GRANT di un device se non
lo autorizza all'uso del bus ed 1 se lo autorizza e considerando le stringhe di output nella
forma:
GRANT3 GRANT2 GRANT1
le uscite saranno:
Z = {000, 001, 010, 100}
Infine come stati interni abbiamo:
S = {A, B, C, D}
essendo:
A = Nessuno usa il bus
B = DEV1 usa il bus
C = DEV2 usa il bus
D = DEV3 usa il bus
Naturalmente stiamo supponendo anche che un DEVICE riporta a 0 il segnale di REQ dopo aver
terminato di utilizzare il bus in modo da segnalare all'arbitro che ha terminato.
Il diagramma di flusso sara' il seguente:
da cui si ottiene la seguente tabella delle transazioni:
L'automa puo' essere sempificando ottenendo l'automa minimo: