1 Contatore: esempio di circuito sequenziale 2 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 3 Circuito sequenziale con input: contatore con input di enable Il contatore controlla il valore di ENABLE sui fronti di salita di 4CLK 5 ZOOM 6 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) 7 Nei sistemi digitali le transizioni avvengono sui fronti di salita di clk Potrei pero’ provocare le transizioni invertendo clk 8 Circuito sequenziale con output: COUT e’ un segnale che ci dice quando il contatore ha raggiunto il conteggio massimo 9 Tutti i segnali di output prodotti da un circuito sequenziali sono sincroni col segnale di clock 10 L’input EN potrebbe essere pilotato dall’uscita di un altro circuito sequenziale (qui un altro contatore) che per definizione e’ un segnale sincrono 11 EN prodotto da un altro circuito sequenziale e’ quindi OK 12 Può essere mandato in input al contatore 13 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 S1 S2 S3 S0 S4 S7 S6 S5 14 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 Stato corrente Notazione: Q* denota i bit dello stato successivo N.B.: questo circuito sequenziale non ha input (oltre clock e reset) Stato successivo Q2Q1Q0 Q2*Q1*Q0* 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 15 16 17 18 I Flip-Flop potrebbero essere proprio i dispositivi adatti 19 Consideriamo 2 Flip-Flop: assumiamo che le uscite Q0 e Q1 siano i 2 bit del conteggio 20 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 21 Cosa succede se colleghiamo Q0* all’ingresso D0 del FF0 e Q1* all’ingresso del FF1? 22 23 24 25 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 26 nello stato Contatore a 2 bit con enable: il conteggio (stato) cambia solo se il segnale di enable è 1 input Stato corrente Stato successivo Q1Q0 EN Q1*Q0* 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 27 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 28 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 Logica di eccitazione Stato successivo Flip Flops Stato corrente 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51