Altifigence Academy

13 / 24 · Concetto

Eventi di accettazione e stabilità durante gli stalli

Assegna le responsabilità di sorgente e destinazione e conserva i payload in stallo.

Un trasferimento richiede entrambi i segnali a un fronte

Valid garantisce che la sorgente ha un payload da offrire. Ready garantisce che la destinazione può accettarne uno al fronte corrente. Un fronte di salita con entrambi i segnali alti trasferisce esattamente una transazione. Il payload comprende tutti i campi associati, come tag, operazione o indirizzo. Un segnale valid mantenuto alto può indicare un elemento in stallo oppure una sequenza di elementi trasferiti ai fronti ready consecutivi.

Quando valid è alto e ready è basso, mantieni stabili valid e l'intero payload. Il nostro contratto consente soltanto al reset o a uno svuotamento esplicito di annullare questo obbligo. Se una sorgente attende ready prima di attivare valid e una destinazione attende valid prima di attivare ready, entrambe possono aspettare per sempre. Offri un elemento preparato indipendentemente da ready. Questi principi di handshake e stabilità sono documentati nella specifica AMBA AXI di Arm, sezione A3. Questo piccolo flusso non implementa l'interfaccia AXI completa.

FrontevalidreadyPayloadTrasferimento
010tag4,y9Nessuno
110tag4,y9Nessuno
211tag4,y9tag4 una volta
311tag5,y12tag5 una volta
401IrrilevanteNessuno

Tag4 deve rimanere invariato durante lo stallo. Dopo il suo trasferimento al fronte 2, la sorgente può presentare tag5. Ready da solo al fronte 4 non crea una transazione. Contare soltanto valid può perdere ingressi; leggere soltanto i dati può duplicare uscite.

Queste regole presumono un solo dominio di clock. Non risolvono l'attraversamento tra domini di clock o la metastabilità. Conta gli ingressi accettati e le uscite consegnate dai rispettivi handshake. Senza reset, accettati meno consegnati deve uguagliare il lavoro interno in sospeso. Accoda i tag accettati e rimuovili soltanto alla consegna. Combina questa contabilità con verifiche dei payload in stallo per rilevare perdite, duplicazioni e cambi d'identità anche quando i valori aritmetici coincidono.

Prova tu

Valid è alto su quattro fronti nella tabella. Quanti trasferimenti avvengono e quali tag vengono trasferiti? Quale regola viene violata se y cambia a 10 al fronte 1?

Leggi la spiegazione

Avvengono due trasferimenti, dei tag 4 e 5 ai fronti 2 e 3. Modificare y al fronte 1 viola la stabilità del payload per la transazione in stallo al fronte 0.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.