Chapter 1
Circuiti sequenziali:
macchine a stati
Nella prima parte del corso ci siamo occupati dei circuiti combinatori. In un circuito combinatorio con un ouput Z funzione degli input
X1 ; : : : Xn , Z varia istantaneamente in risposta a cambiamenti degli
input. Diciamo che e un circuito senza memoria.
In un circuito sequenziale avente input X1 ; : : : Xn e ouput Z , Z
non varia istantaneamente in risposta a cambiamenti degli input. Le
caratteristiche di un tale circuito sono:
Presenza di un segnale di clock di input (onda quadra periodica).
All'interno del circuito e presente una memoria contenente un
certo numero di bit di informazione. Il contenuto di questa memoria e detto lo stato del circuito. I bit della memoria, vale a dire
lo stato, possono cambiare a seconda dei valori dei segnali input,
solo in corrispondenza del fronte di salita del segnale di clock.
I segnali di output sono combinazioni logiche dei bit della memo-
ria di stato (macchina a stati di Moore). In questo modo anche i
segnali di output possono variare solo in corrispondenza del fronte
di salita del segnale di clock.
Consideriamo alcuni esempi:
1
2
CHAPTER 1.
CIRCUITI SEQUENZIALI: MACCHINE A STATI
Figure 1.1: Diagramma temporale di un contatore a 3 bit.
Figure 1.2: Diagramma degli stati di un contatore a 3 bit free-running.
3
Contatore a 3 bit free-running Questo contatore non ha input
oltre al clock.
In questo caso il conteggio e uguale allo stato (e coerente col fatto
che gli output debbano essere combinazioni logiche dei bit di stato).
Fig. 1.1 mostra il diagramma temporale. Vediamo che lo stato cambia solo in corrispondenza dei fronti di salita del clock. Non essendoci
input, lo stato cambia su ogni fronte. Consideriamo ad esempio il ciclo di clock in cui lo stato e 3 (stato corrente). Lo stato successivo e
zero. Vediamo che il valore dello stato successivo dipende dallo stato
corrente.
Possiamo visualizzare il comportamento temporale del contatore con
un diagramma a bolle (Fig. 1.2). Questo diagramma e una rappresentazione astratta del comportamento del circuito, non una rappresentazione circuitale. A ciascuno stato, oltre al codice numerico, viene
assegnato anche un nome simbolico. Ogni bolla rappresenta un possibile stato, mentre le frecce connettono ciascuno stato ai possibili stati
successivi e deniscono quindi le transizioni da uno stato al successivo.
Nel caso presente, per ciascuno stato esiste un solo stato successivo.
Contatore a 2 bit con segnale di enable Questo contatore ha
un input denominato enable oltre al clock.
Anche in questo caso il conteggio e uguale allo stato.
Fig. 1.3 mostra il diagramma temporale. Lo stato cambia sempre in
corrispondenza dei fronti di salita del clock ma solo quando il segnale di
enable e 1. Quindi in questo caso lo stato successivo dipende sia dallo
stato corrente che dal valore del segnale di input.
Il segnale enable mostrato in gura e un tipico segnale sincrono. La
sua fase e ssata rispetto al segnale di clock: il segnale cambia sempre
leggermente dopo il fronte di salita di clk. Il contatore campiona il
segnale di enable su ogni fronte di salita di clk e cambia lo stato nel
fronte in cui vede enable=1, come indicato in gura. E' essenziale tenere
conto di questo aspetto per comprendere a fondo il comportamento di
questi circuiti.
Fig. 1.4 mostra il diagramma degli stati del contatore con enable.
Alle frecce delle transizioni sono associate ora i valori logici del segnale
di input che determina le transizioni. Partiamo dallo stato iniziale S0.
La transizione a S1 avviene solo se enable=1. Se enable=0 lo stato
non cambia e questo corrisponde alla freccia che inizia e termina nel
4
CHAPTER 1.
CIRCUITI SEQUENZIALI: MACCHINE A STATI
Figure 1.3: Diagramma temporale di un contatore a 2 bit con enable.
Figure 1.4: Diagramma degli stati di un contatore a 2 bit con enable.
5
Figure 1.5: Diagramma temporale di un contatore a 2 bit con output
Cout.
medesimo stato. Un comportamento simile si ha per gli altri stati.
Contatore a 3 bit con segnale di output Cout Il contatore pu
o
produrre, oltre al conteggio, anche un segnale di output quando il conteggio raggiunge il valore massimo. In Fig. 1.5 e mostrato il diagramma
temporale per questo caso per un contatore a 2 bit. Anche Cout e, per
costruzione, un segnale sincrono col clock. In questo esempio, esso e
inoltre interamente funzione dei bit di stato e non degli eventuali input come l'enable. Nel seguito considereremo solo macchine a stati di
questo tipo (macchine a stati di Moore).
La logica di eccitazione Come passo successivo, a partire dal
diagramma degli stati possiamo elaborare una tavola della vertia che
visualizza per ciascuno stato corrente e segnali di input lo stato successivo. Fig. 1.6 mostra questa tavola per il contatore con enable a due
bit. I bit dello stato successivo sono denotati aggiungendo il simbolo *.
Nella tavola appaiono anche gli eventuali segnali di output come Cout.
6
CHAPTER 1.
CIRCUITI SEQUENZIALI: MACCHINE A STATI
Figure 1.6: Tavola per la logica di eccitazione del contatore a 2 bit con
enable e segnale di output Cout.
Possiamo considerare questa tavola come una tavola della verita vera
e propria descrivente una funzione logica - detta logica di eccitazione avente come input Q1, Q0, enable e come output Q1*, Q0* e Cout.
La memoria di stato: Flip Flop D. Entriamo adesso dentro
la memoria. Ciascun bit della memoria e conservato in un dispositivo
detto Flip Flop di tipo D. Il simbolo di circuito e mostrato in Fig. 1.7.
Questo circuito campiona il valore sull'input D su ogni fronte di salita
del segnale di clock e lo passa all'output Q. Fig. 1.8 mostra un diagramma temporale in cui e mostrato Q per un certo pattern di D. Il
valore di Q non puo cambiare fra un fronte di salita e il successivo viene mantenuto congelato. Questo e mostrato nella gura Fig. 1.8 in
basso, in cui D ha diverse variazioni fra due fronti di salite del segnale
di clock. Queste variazioni vengono ignorate dal FF.
Dentro il contatore a 2 bit free-running Nel caso del contatore
a 2 bit la memoria di stato e formata da due FF. Resta in problema
di denire gli input D0 e D1 dei due FF. Torniamo alla logica di eccitazione. Le equazioni logiche per Q0* e Q1* sono
0 =
Q1 =
Q
0
Q 0 Q1
Q
0
(1.1)
(1.2)
7
Figure 1.7: Simbolo e funzionamento del FF D.
Figure 1.8: Funzionamento del FF D: diagrammi temporali.
8
CHAPTER 1.
CIRCUITI SEQUENZIALI: MACCHINE A STATI
Figure 1.9: il contatore a 2 bit free running completo e diagrammi
temporali.
Q0* e Q1* sono lo stato successivo a Q0 e Q1. Se quindi vengono
mandati in input ai due FF, sul fronte di salita di clock successivo
verranno campionati dai FF e passati agli output Q0 e Q1, cioe, diventeranno i nuovi stati correnti. In questo modo si ha la transizione
corretta da uno stato corrente allo stato successivo (si veda anche il
diagramma temporale di Fig. 1.9). La Fig. 1.9 mostra il circuito completo corrispondente al contatore. I bit Q0 e Q1 saranno gli output
corrispondenti al conteggio.
Macchine a stati Il contatore e un esempio di macchina a stati.
Adesso generalizzeremo il discorso considerando qualche altro esempio.
Consideriamo un circuito che controlla le frecce di una macchina. Col
tasto SW0 si attiva la freccia sinistra (corrispondente al LED0 sulla
scheda), che comincia a lampeggiare con una frequenza di circa 1 Hz.
Schiacciando nuovamente SW0 la freccia viene disattivata.
9
Figure 1.10: Macchina a stati per far lampeggiare un led premendo il
tasto SW0.
Il controllo della freccia destra avviene con SW1 in modo analogo
alla freccia sinistra.
Consideriamo una prima versione del circuito che controlla la sola
freccia sinistra. Un possbile diagramma degli stati e mostrato in Fig. 1.10.
Nell stato iniziale, denotato IDLE, il led e spento. Ci sono due frecce
che partono da IDLE. Se SW0=1 lo stato diventa LED0-ON. Se SW0=0
lo stato resta IDLE. Una volta passati nello stato LED0-ON c'e' una
sola freccia senza condizione: questo signica che si passa automaticamente allo stato LED0-OFF. Il circuito resta nello stato LED0-ON per
un solo ciclo di clock. Nello stato LED0-ON viene generato il segnale
LED0 che accende il led della scheda. Una volta in LED0-OFF si passa
nuovamente in LED0-ON e cos via. In questo modo si cicla all'innito
fra LED0-ON e LED0-OFF.
In questo circuito, una volta attivato il lampeggiamento, non c'e
10 CHAPTER
1.
CIRCUITI SEQUENZIALI: MACCHINE A STATI
Figure 1.11: Macchina a stati per il controllo della freccia sinistra.
modo di arrestarlo. Il diagramma di Fig. 1.11 risolve questo problema. Questa volta dallo stato LED0-ON partono due freccie corrispondenti a due possibili stati successivi: LED0-OFF se SW=0 e IDLE se
SW0=1 (tasto premuto nuovamente). Lo stesso si ha per LED0-OFF:
se SW0=0 si va in LED0-ON altrimenti in IDLE. Fig. 1.11 mostra la
tavola delle transizioni degli stati (assegnando IDLE Q1Q0=00, LED0ON Q1Q0=01, LED0-OFF Q1Q0=10).
Questo esempio e utile per illustrare un altro aspetto importante.
Lo stato LED0-ON ha due possibili stati successivi raggiunti da due
freccie diverse corrispondenti a due diverse condizioni (una SW0=0,
l'altra SW0=1). Non ci possono essere due freccie con due condizioni
per i segnali di input uguali, oppure due frecce senza condizione (transizione automatica). In questo caso il circuito non saprebbe decidere
quale sarebbe lo stato successivo e il comportamento in pratica diventa
impredicibile. In particolare, l'AND logico delle condizioni di tutte le
11
Figure 1.12: Circuito corrispondente alla macchina a stati per il controllo della freccia sinistra.
possibili coppie di frecce che lasciano uno stato deve essere zero: questo
e soddisfatto per LED0-ON poiche SW0*SW0'=0. L'OR logico delle
condizioni associate a tutte le freccie che lasciano uno stato deve essere
uno: anche in questo caso cio e soddisfatto poiche SW0+SW0'=0.
Le equazioni della logica di eccitazione sono
0 =
Q1 =
Q
1 Q0 S W 0 + Q1 Q 0 S W 0
Q1 Q 0 S W 0 :
Q
0
0
0
0
0
0
Il circuito completo e mostrato in Fig. 1.12. Il diagramma temporale
che illustra il funzionamento del circuito e mostrato in Fig. 1.13.
12 CHAPTER
1.
CIRCUITI SEQUENZIALI: MACCHINE A STATI
Figure 1.13: Diagramma temporale della macchina a stati per la freccia
sinistra.
Scarica

Chapter 1 Circuiti sequenziali: macchine a stati