1
2
Contatore: esempio di circuito sequenziale
3
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
4
Circuito sequenziale con input: contatore con input di enable
Il contatore controlla il valore di ENABLE sui fronti di salita di CLK
5
6
ZOOM
7
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)
8
Nei sistemi digitali le transizioni avvengono sui fronti di salita di clk
Potrei pero’ provocare le transizioni invertendo clk
9
Circuito sequenziale con output: COUT e’ un segnale che ci dice quando il contatore ha raggiunto il conteggio massimo
10
Tutti i segnali di output prodotti da un circuito sequenziali sono sincroni col segnale di clock
11
L’input EN potrebbe essere pilotato dall’uscita di un altro circuito sequenziale (qui un altro contatore) che per definizione e’ un segnale sincrono
12
EN prodotto da un altro circuito sequenziale e’ quindi OK
13Può essere mandato in input al contatore
14
Descrizione dei circuiti sequenziali: diagrammi degli stati
Versione grafica della tavola degli stati di un contatore a 2 bit
S0
S1 S2
S3
S4
S5S6S7
Le frecce indicano la transizione da uno stato (conteggio) al successivo
S0
S1
S2S3
contatore a 3 bit
15
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 00 1 0 0 1 10 1 1 1 0 01 0 0 1 0 11 0 1 1 1 01 1 0 1 1 11 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)
16
17
18
19
I Flip-Flop potrebbero essere proprio i dispositivi adatti
20
Consideriamo 2 Flip-Flop: assumiamo che le uscite Q0 e Q1 siano i 2 bit del conteggio
21
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
22
Cosa succede se colleghiamo Q0* all’ingresso D0 del FF0 e Q1* all’ingresso del FF1?
23
24
25
26
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
27
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 01 0 1 1 11 1 0 1 11 1 1 0 0
Stato corrente Stato successivo
input
28
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
29
Macchine a stati
Stato successivo determinato da un circuito combinatorio:
FlipFlops
clk
Logica di eccitazione
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
InputsStato corrente
Stato successivo
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51