Altifigence Academy

30 / 63 · Concetto

Stato successivo del contatore e priorità del reset

Unire incremento, mantenimento, reset e ritorno in una specifica e calcolare ogni fronte.

Definire prima la funzione di stato successivo

Un contatore libero a NN bit con reset sincrono ed enable si descrive così:

Ck+1={0rk=1(Ck+1) mod 2Nrk=0, ek=1Ckrk=0, ek=0C_{k+1}=\begin{cases} 0&r_k=1\\ (C_k+1)\bmod2^N&r_k=0,\ e_k=1\\ C_k&r_k=0,\ e_k=0 \end{cases}

Il resetReset Controllo che riporta allo stato iniziale specificato. Occorre definirne sincronicità e priorità rispetto agli altri controlli. ha priorità; con enable=0 si mantiene il valore. Nella visualizzazione seguente potete cambiare enable per confrontare incremento e mantenimento.

Partendo da q=11, scegliete reset=1: cambia solo il prossimo stato in 00. Avanzate il clock per osservare quando cambia il registro. Rilasciate reset e percorrete 00→01→10→11→00. Con enable=0 il numero di fronti deve continuare ad aumentare, mentre q deve restare fermo.

Confrontare gli stati prima e dopo il fronte di salita

Il reset sincrono ha priorità su enable. Con enable=0, il valore memorizzato viene mantenuto. q=11; q_next = (q + 1) mod 4

Preparare i valori attesi per ogni fronte

Con stato iniziale 3 e reset=1 solo al primo fronte, un contatore a due bit produce poi 0,1,2,3,0. Attivare il reset sincrono fra i fronti non porta subito a 0 il registroRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci prima del fronte di salitaFronte di salita Passaggio del clock da 0 a 1, distinto dall’intero intervallo di livello CLK=1. Approfondisci.

Frontereset primaC precedenteC aggiornato
1130
2001
3012
4023
5030

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. Si parte da 3; al primo fronte reset prevale sull'incremento. L'ultimo fronte riporta da 3 a 0.

Reset e ritorno a zero di un contatore a 2 bit
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
edge23452E0 → E1 → E2 → E3 → E4
reset10...
count before2345211 → 00 → 01 → 10 → 11
count after2345200 → 01 → 10 → 11 → 00

Non confondere i tipi di reset

if(rst) dentro always_ff @(posedge clk) è sincrono. Non equivale al reset asincrono che aggiunge un fronte reset alla lista eventi. Il rilascio asincrono ha vincoli recovery/removal propri: non sceglietelo solo perché porta a 0 più rapidamente.

Per un contatore a impulsi periodici bisogna definire anche quando emettere il segnale: durante lo stato massimo oppure per un ciclo dopo il ritorno a 0. Cambiano formula d'uscita e istante d'osservazione.

Prova tu

Un contatore a tre bit vale 7. Prima rst=0, en=0, poi rst=0, en=1: quali stati seguono?

Leggi la spiegazione

Prima mantiene 7, poi ritorna a 0 nel campo a tre bit. Per conservare 8 serve più larghezza o una politica separata di saturazione/errore.

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