microoperazioni: i K⋅Q assegnamenti Rq<=Rsk,q(x,Rq-1,...,R0) relativi ai registri operativi.
microsalti: i K assegnamenti STAR<=(x,R1-1,...,R0) relativi al registro di stato.
statement di etichetta Si : gli statement completi all’interno al costrutto casex .. endcase.
Precisazioni sulle microooperazioni
C={A,B} descrive l’assegnamento del registro C con i contenuti di A,B.
{A,B}<=C equivale a DUE microoperazioni:
A<=C[l−1:m]
B<=C[m−1:0]
C[m−1:0]<=B è sostanzialmente scorretta, in quanto A OGNI clock TUTTO il registro viene riassegnato, quindi equivarrebbe a: C<={C[l−1:m],B}
Handshake /dav, rfd
/dav : data valid: se \dav=1 allora il dato fornito non è attendibile, se \dav=0 il dato è corretto e disponibile
rfd : ready for data: se rfd=1, il consumatore è pronto a ricevere, se rfd=0 allora il consumatore non è pronto a leggere il dato
Funzionamento:
S0: /dav,rfd=1,1 : il dato del produttore non è pronto, il consumatore è pronto a ricevere
S1: /dav,rfd=0,1 : il dato è pronto
S2: /dav,rfd=0,0 : il consumatore ha prelevato il dato e non è pronto a riceverne altri
S3: /dav,rfd=1,0 : il produttore è pronto a produrre un nuovo byte
S0: /dav,rfd=1,1 : ritorno allo stato iniziale
Partendo da una condizione iniziale in cui rfd=1 e \dav=1:
Il produttore compie la prima mossa: aggiorna il dato e pone \dav=0, ad indicare che il dato è adesso valido.
Il consumatore, legge \dav=0, pone quindi rfd=0, preleva il dato, e lo elabora.
Il produttore riporta allora \dav=1 e attende che il consumatore riport rfd=1, per ritornare alal condizione iniziale.
Tutte queste variabili di handshake necessitano di un registro di supporto, ognuno dello stesso nome della variabile.
Handshake soc, eoc
soc: start of computation: soc=0 consumatore non ha bisogno di nuovo byte, soc=1 indica al produttore di fornire un nuovo byte.
eoc: end of computation: eoc=0 produttore ha iniziato la preparazione di un nuovo byte, eoc=1 il produttore è pronto a preparare un nuovo byte.
Funzionamento:
S0: soc,eoc=0,1 : consumatore non è pronto a nuovo byte e produttore è disponibile ad iniziarne una nuova
S1: soc,eoc=1,1 : consumatore è pronto
S2: soc,eoc=1,0 : produttore inizia produzione
S3: soc,eoc=0,0 : consumatore notifica di aver capito e non chiede più altri dati
S0: soc,eoc=0,1 : il produttore ha finito e il consumatore preleva il dato