Contatore: esempio di circuito sequenziale
Circuito sequenziali L’output dipende dall’input corrente e dalla storia passata degli input Lo “stato” racchiude tutte le informazioni sul passato necessarie per predire l’output corrente basato sull’input corrente Variabili di stato, uno o più bit di informazione Esempio di circuito sequenziale: il contatore Le variabili di stato sono i bit del conteggio il conteggio definisce lo stato Ad un certo istante lo stato (conteggio) dipende dalla storia passata
Circuito sequenziale con input: contatore con input di enable Il contatore controlla il valore di ENABLE sui fronti di salita di CLK
ZOOM
Input EN deve essere sincrono: deve cambiare sempre a un istante fissato un pò dopo il fronte di salita del segnale di clock Tutti i segnali di input di un circuito sequenziale devono essere sincroni col segnale di clock (altrimenti il circuito può funzionale male)
Nei sistemi digitali le transizioni avvengono sui fronti di salita di clk Potrei pero’ provocare le transizioni invertendo clk
Circuito sequenziale con output: COUT e’ un segnale che ci dice quando il contatore ha raggiunto il conteggio massimo
Tutti i segnali di output prodotti da un circuito sequenziali sono sincroni col segnale di clock
L’input EN potrebbe essere pilotato dall’uscita di un altro circuito sequenziale (qui un altro contatore) che per definizione e’ un segnale sincrono
EN prodotto da un altro circuito sequenziale e’ quindi OK
Può essere mandato in input al contatore
Descrizione dei circuiti sequenziali: diagrammi degli stati Versione grafica della tavola degli stati di un contatore a 2 bit S1 Le frecce indicano la transizione da uno stato (conteggio) al successivo S0 S2 S3 contatore a 3 bit S2 S1 S3 S0 S4 S7 S5 S6
Descrizione dei circuiti sequenziali: tavola delle transizioni degli stati Per ciascuno stato corrente, specifica gli stati successivi in funzione degli input Per ciascuno stato corrente, specifica gli output Esempio: contatore a 3 bit Q2Q1Q0 Q2*Q1*Q0* 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 Stato corrente Stato successivo Notazione: Q* denota i bit dello stato successivo N.B.: questo circuito sequenziale non ha input (oltre clock e reset)
I Flip-Flop potrebbero essere proprio i dispositivi adatti
Consideriamo 2 Flip-Flop: assumiamo che le uscite Q0 e Q1 siano i 2 bit del conteggio
Aggiungiamo un circuito combinatorio che ha come input Q0 e Q1 (stato corrente) e che produce come output Q0* e Q1*, cioe’ lo stato successivo
Cosa succede se colleghiamo Q0. all’ingresso D0 del FF0 e Q1 Cosa succede se colleghiamo Q0* all’ingresso D0 del FF0 e Q1* all’ingresso del FF1?
Contatore a 2 bit con enable: il conteggio (stato) cambia solo se il segnale di enable è 1 Transizione da uno stato al successivo: adesso dipendono dal valore di ENABLE Se ENABLE=0 lo stato non cambia: freccia che parte e termina nello stato
Contatore a 2 bit con enable: il conteggio (stato) cambia solo se il segnale di enable è 1 Q1Q0 EN Q1*Q0* 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 Stato corrente Stato successivo input
Astrazione: dal contatore alle macchine a stati Macchine a stati: controllano circuiti caratterizzati da uno stato (definito da un certo numero di Flip-Flop) La transizione a uno stato successivo dipendono dallo stato corrente e dagli input In ogni stato possono produrre degli output usati per controllare altri circuiti Descrivibili da un diagramma a bolle come il contatore
Macchine a stati Stato successivo determinato da un circuito combinatorio: Ha come input i segnali di input esterni e i segnali di output dei flip flop (stato corrente) Ha come output i valori degli input D dei flip flop necessari per produrre lo stato successivo clk Inputs Stato corrente Stato successivo Flip Flops Logica di eccitazione