Altifigence Academy

42 / 63 · Concetto

Verifica dello scorrimento e allineamento dati-valid

Rilevare errori nascosti da schemi simmetrici e disallineamenti di valid di un ciclo.

Scegliere sequenze che rivelino gli errori

Spostare solo 0000 o 1111 nasconde l'inversione di direzione. Usate schemi asimmetrici come 1000 o un singolo 1. Anche inizializzare sempre a zero può nascondere difetti di inizializzazione e mantenimento.

Un registroRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci a tre bit da 000 con ingressi 1,0,0 produce 001→010→100. La direzione opposta produce 100→010→001: differisce già al primo fronte.

Controllare il riferimento in due forme

Qnext=(2Q+d) mod 2NQ_{next}=(2Q+d)\bmod2^N

Confrontate il modello numerico con l'RTL di sliceSlice Selezione di un intervallo contiguo del vettore, che determina larghezza e ordine del risultato. Approfondisci e concatenazioni a ogni fronte valido. Con N=3, otto stati e due ingressi danno solo 16 transizioni, tutte verificabili. Aggiungete separatamente le combinazioni reset/enable.

Ogni colonna registra un fronte di salitaFronte di salita Passaggio del clock da 0 a 1, distinto dall’intero intervallo di livello CLK=1. Approfondisci. Gli ingressi sono quelli immediatamente precedenti; gli stati indicati con «after» sono quelli subito dopo l’aggiornamento. Le colonne indicano l’ordine dei campioni, non il ritardo fisico di propagazioneRitardo di propagazione Tempo dalla variazione d’ingresso all’assestamento corretto dell’uscita. Equivalenza logica e proprietà temporali sono distinte. Approfondisci. Inizialmente q=000. Il secondo fronte ha enable=0: anche cambiando din, q mantiene 001. Contate separatamente fronti e accettazioni.

Senza enable si ferma l’intero stato
Mostra i dati della forma d’onda
Dati della forma d’onda: ogni carattere è un intervallo; il punto mantiene lo stato precedente; p è un ciclo di clock.
SegnaleForma d’ondaValori del bus
edge2345E0 → E1 → E2 → E3
enable101.
din10.1
q after2.34001 → 010 → 101

Riproducete il diagramma: un fronte con din=1 dà 001; un altro con enable=0, din=0 mantiene 001. Riattivando enable e applicando din=0,1 si ottengono 010,101. Il modello tratta solo il registro dati; il vincolo di fermare valid con lo stesso enable è esaminato separatamente sotto.

Distinguere ingresso e valore memorizzato durante una pausa

Il reset sincrono ha priorità su enable. Con enable=0, il valore memorizzato viene mantenuto. q=000; q_next = (2q + din) mod 8

Valid fa parte del datapath

Se i dati si fermano mentre valid avanza, o viceversa, il ricevitore consuma campioni sbagliati. Bit d'uscita corretti da soli non dimostrano un'interfaccia corretta.

TestComportamento atteso
Ingressi normali continuiOrdine corretto e latenza valida fissa
enable=0 intermedioDati e valid si fermano insieme
Reset intermedioEliminare la validità del frame precedente
Frame consecutiviDistinguere fine del vecchio e inizio del nuovo

Annotate il numero di accettazione per non confonderlo con il numero di clock. Un controesempio minimo con confine di frame è più utile che rileggere ripetutamente lunghe forme d'onda.

Prova tu

I dati scorrono solo con enable=1, valid invece a ogni clock. Quale ingresso mostra il difetto più facilmente?

Leggi la spiegazione

Inserite un fronte di stop enable=0 fra due dati diversi. valid arriva prima o si associa al dato sbagliato. Confrontate con un riferimento che applica la stessa condizione d’accettazione a dati e metadati.

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