13 / 24 · Concetto
Eventi di accettazione e stabilità durante gli stalli
Assegna le responsabilità di sorgente e destinazione e conserva i payload in stallo.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
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.
| Fronte | valid | ready | Payload | Trasferimento |
|---|---|---|---|---|
| 0 | 1 | 0 | tag4,y9 | Nessuno |
| 1 | 1 | 0 | tag4,y9 | Nessuno |
| 2 | 1 | 1 | tag4,y9 | tag4 una volta |
| 3 | 1 | 1 | tag5,y12 | tag5 una volta |
| 4 | 0 | 1 | Irrilevante | Nessuno |
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.