Chapter #8: Finite State Machine Design Contemporary Logic

Download Report

Transcript Chapter #8: Finite State Machine Design Contemporary Logic

Reti Logiche
Macchine a Stati Finiti
Capitolo 8: Progetto di
Macchine a Stati Finiti
Reti Logiche
Contemporary Logic Design
Randy H. Katz
University of California, Berkeley
May 1993
Trasparenze tradotte da:
Luciano Lavagno
Universita’ di Udine
Settembre 1998
© R.H. Katz 8-1
Motivazioni
Reti Logiche
Macchine a Stati Finiti
• Contatori: reti logiche sequenziali in cui stato = uscita
• Generalizzazione a Mcchine a Stati Finiti (FSM):
Le uscite sono funzione degli stati (e degli ingressi)
Stati futuri sono funzione degli stati e degli ingressi
Usate per realizzare circuiti che controllano altri circuiti
Logica che “prende le decisioni”
• Applicazione di tecniche di progetto logico sequenziale:
Specifiche informali (“a parole”)
Trasformazione in specifiche formali di FSM
Esempi di progetti
© R.H. Katz 8-2
Riassunto del capitolo
Reti Logiche
Macchine a Stati Finiti
Concetto di macchina a stati
• Suddivisione tra unita’ operativa (data path) e di controllo (control unit)
• Campionamento degli ingressi ed aggiornamento delle uscite
Metodo base di progetto
• Sei passi di progetto
Diverse rappresentazioni di Macchine a Stati Finiti
• Diagramma degli stati, ASM, VHDL, ABEL Description Language
Macchine di Moore e di Mealy
• Definizione, esempi di realizzazione
Problemi informali
• Esempi di progetto
© R.H. Katz 8-3
Reti Logiche
Macchine a Stati Finiti
Concetto di Macchina a Stati
Hardware = Unita’ Operativa (UO) + Unita’ di Controllo (UC)
Bit risultato
Registri
Unita’ funzionali
combinatorie (p.es. ALU)
Bus
Bit controllo
Unita’ di controllo
FSM che genera sequenze
di segnali di controllo
Informa l’UO su che cosa fare
al prossimo passo
”Burattinaio che
tira i fili"
Stato
Controlli
ed uscite
Risultati
ed ingressi
”Burattino"
Unita’ operativa
© R.H. Katz 8-4
Reti Logiche
Macchine a Stati Finiti
Concetto di Macchina a Stati
Esempio: controllore di parita’ dispari
Mette ad 1 l’uscita ogni volta che l’ingresso ha un numero dispari di 1
Reset
0
Pari
[0]
1
0
1
Disp.
[1]
Diagramma
degli stati
St. presente Ingresso
Pari
0
Pari
1
Disp.
0
Disp.
1
St. futuro
Pari
Disp.
Disp.
Pari
Uscita
0
0
1
1
Tabella di transizione simbolica
St. presente
0
0
1
1
Ingresso
0
1
0
1
St. futuro
0
1
1
0
Uscita
0
0
1
1
Tabella di transizione codificata
© R.H. Katz 8-5
Reti Logiche
Macchine a Stati Finiti
Concetto di Macchina a Stati
Esempio: controllore di parita’ dispari
Funzioni di stato futuro e di uscita
NS = PS xor PI; OUT = PS
Inp ut
NS
Inp ut
D
Q
CLK
R
Outpu t
Q
CLK
PS/Outp ut
R
Q
Q
\Rese t
\Rese t
Realizzazione con FF T
Realizzazione con FF D
Input
T
1
0
0
1
1
0
1
0
1
1
1
0
Clk
Output
1
1
1
0
1
1
0
0
1
0
1
1
Comportamento nel tempo con ingresso 1 0 0 1 1 0 1 0 1 1 1 0
© R.H. Katz 8-6
Concetto di Macchina a Stati
Reti Logiche
Macchine a Stati Finiti
Temporizzazione:
Quando vengono campionati gli ingressi, calcolato lo stato
futuro, aggiornate le uscite?
Durata di uno stato: intervallo tra eventi del clock
• Evento di clock fa cambiare uscite e stato in base agli ingressi
• Necessario soddisfare tempi di setup/hold:
Ingressi devono essere stabili prima dell’evento di clock
• Dopo il tempo di propagazione, si passa allo stato futuro e
si stabilizzano le uscite
NOTA: segnali asincroni hanno effetto subito,
segnali sincroni hanno effetto al prossimo evento di clock
P.es., abilitazione tri-state: attivo immediatamente
azzeramento sincrono contatore: attivo al prossimo evento
di clock
© R.H. Katz 8-7
Concetto di Macchina a Stati
Reti Logiche
Macchine a Stati Finiti
Esempio: sistema sincrono attivo sul fronte di salita
Durata stato
Clock
Ingressi
Uscite
Sul fronte di salita vengono campionati gli
ingressi e calcolati le uscite e lo stato futuro
Dopo un ritardo di propagazione, le uscite e lo
stato futuro sono stabili
Uscite imediate:
hanno effetto subito sull’UO
possono far cambiare i risultati dell’UO
Uscite ritardate:
hanno effetto al prossimo evento di clock
ritardi di propagazione devono essere
maggiori del tempo di hold
© R.H. Katz 8-8
Reti Logiche
Macchine a Stati Finiti
Concetto di Macchina a Stati
Macchine a stati comunicanti
L’uscita di una macchina e’ l’ingresso di un’altra e viceversa
X
CLK
FSM 2
FSM 1
Y
FSM 1
A
A
B
C
D
D
X
Y=0
Y=0
X=0
X=0
A
[1]
FSM 2
C
[0]
X=1
Y=1
Y
X=1
Y=0,1
B
[0]
X=0
D
[1]
Le due macchine avanzano insieme (“al passo”)
Ingressi/uscite iniziali: X = 0, Y = 0
© R.H. Katz 8-9
Metodo base di progetto
Processo a sei passi
Reti Logiche
Macchine a Stati Finiti
1. Capire la specifica
2. Derivare una specifica astratta dell’FSM
3. Minimizzare gli stati
4. Assegnare gli stati
5. Scegliere i tipi di FF per realizzare il registro di stato
6. Realizzare l’FSM
1, 2 descritti adesso; 3, 4, 5 descritti piu’ avanti;
4, 5 casi generali del metodo di progetto visto per il contatore
© R.H. Katz 8-10
Reti Logiche
Macchine a Stati Finiti
Metodo base di progetto
Esempio: FSM che controlla distributore automatico
Definizione informale e generica
fornire gomma da masticare dopo aver ricevuto 150 lire
unica fessura per 50 e 100 lire
non da’ resto
Passo 1. Capire il problema:
Disegnare una figura!
Schema a blocchi
Sensore
monete
50
100
Reset
FSM
Open
distributore
automatico
Meccanismo
distribuzione
gomma
Clk
© R.H. Katz 8-11
Reti Logiche
Macchine a Stati Finiti
Esempio distributore automatico
Passo 2. Trasformare in una specifica formale piu’ adatta
Tabulare sequenze di ingresso “tipiche”
3 da 50 lire
1 da 50 lire, 1 da 100 lire
1 da 100 lire, 1 da 50 lire
Reset
2 da 100 lire
2 da 50 lire, 100 lire
S0
50
Disegnare il diagramma degli stati:
S1
Ingressi: 50, 100, reset
Uscita: apri
50
S3
50
100
100
S2
50
100
S4
S5
S6
[apri]
[apri]
[apri]
100
S7
S8
[apri]
[apri]
© R.H. Katz 8-12
Reti Logiche
Macchine a Stati Finiti
Esempio distributore automatico
Passo 3: Minimizzazione degli stati
Stato
Presente
Reset
0
0
50
50
100
50
50
100
100
50, 100
100
150
[open]
150
Riutilizzare gli
stati quando
e’ possibile
Ingressi
100 50
0
0
1
1
0
0
1
1
0
0
1
1
X
0
1
0
1
0
1
0
1
0
1
0
1
X
Stato
Futuro
Uscita
Apri
0
50
100
X
50
100
150
X
100
150
150
X
150
0
0
0
X
0
0
0
X
0
0
0
X
1
Tabella degli stati simbolica
© R.H. Katz 8-13
Reti Logiche
Macchine a Stati Finiti
Esempio distributore automatico
Passo 4: Codifica degli stati
Stato presente Ingressi
Q1 Q0
100 50
0
0
0
1
1
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Stato futuro
D 1 D0
0 0
0 1
1 0
X X
0 1
1 0
1 1
X X
1 0
1 1
1 1
X X
1 1
1 1
1 1
X X
Uscita
Apri
0
0
0
X
0
0
0
X
0
0
0
X
1
1
1
X
Tabella degli stati codificata
© R.H. Katz 8-14
Reti Logiche
Macchine a Stati Finiti
Esempio distributore automatico
Passo 5. Scegliere i FF per la realizzazione
FF D sono i piu’ facili da usare
Q1 Q0
100 50
Q1
Q1 Q0
100 50
Q1
50
100
Q1 Q0
100 50
50
100
Q0
Mappa per D1
Q1
50
100
Q0
Mappa per D0
Q0
Mappa per Apri
D1 = Q1 + 100 + Q0 50
D0 = 50 Q0 + Q0 50 + Q1 50 + Q1 100
OPEN = Q1 Q0
8 porte
© R.H. Katz 8-15
Reti Logiche
Macchine a Stati Finiti
Esempio distributore automatico
Passo 5. Scegliere i FF per la realizzazione
FF J-K
Stato presente Ingressi
Q1 Q0
D N
0 0
0
0
0
1
1
0
1
1
0 1
0
0
0
1
1
0
1
1
1 0
0
0
0
1
1
0
1
1
1 1
0
0
0
1
1
0
1
1
Stato futuro J1
D1 D0
0
0
1
X
0
1
1
X
1
1
1
X
1
1
1
X
0
1
0
X
1
0
1
X
0
1
1
X
1
1
1
X
0
0
1
X
0
1
1
X
X
X
X
X
X
X
X
X
K1
J0 K 0
X
X
X
X
X
X
X
X
0
0
0
X
0
0
0
X
0
1
0
X
X
X
X
X
0
1
1
X
X
X
X
X
X
X
X
X
0
1
0
X
X
X
X
X
0
0
0
X
Tabella di transizione codificata trasformata
© R.H. Katz 8-16
Esempio distributore automatico
Reti Logiche
Macchine a Stati Finiti
Realizzazione:
J1 = 100 + Q0 50
K1 = 0
J0 = Q0 50 + Q1 100
K0 = Q1 50
7 porte
© R.H. Katz 8-17
Rappresentazioni alternative per FSM
Reti Logiche
Macchine a Stati Finiti
Perche’ i diagrammi degli stati non bastano
Non abbastanza flessibili per grandi FSM
Non adatti per sviluppo graduale della FSM
Non descrivono in modo ovvio un algoritmo: cioe’ una ben
specifica sequenza di operazioni basate sui dati di ingresso
algoritmo = sequenza + operazioni sui dati
separazione fra controllo e dati
Spostamento graduale verso rappresentazioni simili ad un programma:
• Rappresentazione ad Algorithmic State Machine (ASM)
• Linguaggi di descrizione dell’hardware (Hardware
Description Languages, HDL)
p.es. VHDL, ABEL
© R.H. Katz 8-18
Reti Logiche
Macchine a Stati Finiti
Rappresentazioni alternative per FSM
Rappresentazione ad Algorithmic State Machine (ASM)
Tre elementi base:
• Stato
• Decisione
• Uscita
FSM e’ esattamente in uno
stato alla volta
Singolo ingresso in uno stato
Unico cammino di uscita da
uno stato per ogni
combinazione degli ingressi
Uscite
attive alte (.H) o basse (.L)
immediate (I) o ritardate
(fino al clock successivo)
Cammino
di ingresso nello stato
Codice dello stato
*
***
Nome
dello stato
Lista uscite
assoc. allo stato
T
Condizione
Condizione
Stato
F
Blocco
ASM
Output
Box
Lista uscite
condizionali
Uscite ad
altri blocchi ASM
© R.H. Katz 8-19
Reti Logiche
Macchine a Stati Finiti
Rappresentazioni alternative per FSM
Rappresentazione ad ASM
Condizioni:
l’ordine non ha effetto sul risultato finale
Blocchi ASM equivalenti:
A passa a B se (I0 • I1) altrimenti passa a C
A
A
010
I0
T
010
F
I1
T
F
I1
F
F
I0
T
T
B
C
B
C
© R.H. Katz 8-20
Reti Logiche
Macchine a Stati Finiti
Rappresentazioni alternative per FSM
Esempio: controllo di parita’
Ingresso X, uscita Z
Pari
0
Lista di uscita vuota implica Z inattivo
Z attivo nello stato Dispari
F
X
T
Dispari
Stato
Ingr. presente
F
Pari
T
Pari
F
Disp.
T
Disp.
1
H.Z
F
X
Tabella degli stati simbolica
Stato
futuro Uscita
—
Pari
—
Disp.
A
Disp.
A
Pari
T
Seguire i cammini per
derivare le tabelle di
transizione degli stati
Tabella degli stati codificata
Stato Stato
Ingr. presente futuro Uscita
0
0
0
0
1
0
0
1
0
1
1
1
1
1
1
0
© R.H. Katz 8-21
Reti Logiche
Macchine a Stati Finiti
Rappresentazioni alternative per FSM
ASM per distributore automatico
0
00
T
100
F
F
100
10
T
100
F
F
50
50
T
50
T
150
01
11
H.Apri
50
T
Reset
F
F
100
F
T
T
0
© R.H. Katz 8-22
Rappresentazioni alternative per FSM
Linguaggi di descrizione dell’hardware: VHDL
ENTITY parity_checker IS
PORT (
x, clk: IN BIT;
z: OUT BIT);
END parity_checker;
Reti Logiche
Macchine a Stati Finiti
Descrizione dell’interfaccia
Realizzazione FSM
ARCHITECTURE behavioral OF parity_checker IS
BEGIN
main: BLOCK (clk = ‘1’ and not clk’STABLE)
TYPE state IS (Even, Odd);
SIGNAL state_register: state := Even;
BEGIN state_even:
BLOCK ((state_register = Even) AND GUARD)
BEGIN
state_register <= Odd WHEN x = ‘1’
ELSE Even
END BLOCK state_even;
Espressione di controllo
Decisione stato futuro
BEGIN state_odd:
BLOCK ((state_register = Odd) AND GUARD)
BEGIN
state_register <= Even WHEN x = ‘1’
ELSE Odd;
END BLOCK state_odd;
z <= ‘0’ WHEN state_register = Even ELSE
‘1’ WHEN state_register = Odd;
END BLOCK main;
END behavioral;
Decisione uscite
© R.H. Katz 8-23
Rappresentazioni alternative per FSM
Linguaggi di descrizione dell’hardware: ABEL
Reti Logiche
Macchine a Stati Finiti
module parity
test_vectors ([clk, RESET, X] -> [SREG])
title 'odd parity checker state machine'
[0,1,.X.] -> [S0];
u1 device 'p22v10';
[.C.,0,1] -> [S1];
[.C.,0,1] -> [S0];
"Input Pins
[.C.,0,1] -> [S1];
clk, X, RESET pin 1, 2, 3;
[.C.,0,0] -> [S1];
[.C.,0,1] -> [S0];
"Output Pins
[.C.,0,1] -> [S1];
Q, Z
pin 21, 22;
[.C.,0,0] -> [S1];
[.C.,0,0] -> [S1];
Q, Z
istype 'pos,reg';
[.C.,0,0] -> [S1];
end parity;
"State registers
SREG = [Q, Z];
S0 = [0, 0]; " even number of 0's
S1
= [1, 1]; " odd number of 0's
equations
[Q.ar, Z.ar] = RESET; "Reset to state S0
state_diagram SREG
state S0:
if X then S1
else S0;
state S1:
if X then S0
else S1;
© R.H. Katz 8-24
Metodo progetto per macchine di Moore e Mealy
Reti Logiche
Macchine a Stati Finiti
Definizioni
Macchina di Mealy
Xi
Ingressi
Zk
Uscite
Logica
combinatoria
per uscite e
stato futuro
Registro di stato
Clock
Le uscite dipendono da
stati ed ingressi
Cambiamenti in ingresso
causano cambiamenti
immediati in uscita
Reazione
di stato
Alcuni segnali
sono asincroni
Registro di
stato
Xi
Ingressi
Macchina di Moore
Logica
combinat.
per uscite
Logica
combinatoria
per stato futuro
(ingressi dei
flipflop)
Zk
Uscite
Clock
Le uscite dipendono
solo dagli stati
Cambiamenti in uscita
sincronizzati con
il clock
Reazione
di stato
© R.H. Katz 8-25
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
Diagrammi degli stati equivalenti
Macchina
di Moore
50 100 + Reset
(50 100 + Reset)/0
Reset/0
Reset
0
0
Macchina
di Mealy
[0]
Reset/0
Reset
50/0
50
50
100/0
50 100/0
100/1
N
50 100
D
[0]
N
50/0
100
100
D
50 100/0
50 +100/1
150
Reset/1
Uscite associate
con lo stato
[0]
50 100
50 + 100
150
[1]
Reset
Uscite associate
con la transizione
© R.H. Katz 8-26
Reti Logiche
Macchine di Moore e di Mealy
Macchine a Stati Finiti
Stati o transizioni?
Una macchina di Mealy in genere ha meno stati di una di Moore
a parita’ di sequenza di uscita
0
0/0
0
0
[0]
Stesso comportamento
ingresso/uscita
0
0
1
1
1/1
[0]
Diverso numero di stati
1/0
0/0
1
1
2
[1]
S0
00
S0
IN
S1
0
IN
01
IN
S2
1
S1
1
ASM
equivalenti
IN
10
H.OUT
H.OUT
IN
© R.H. Katz 8-27
Macchine di Moore e di Mealy
Comportamento nel tempo delle macchine di Moore
Reti Logiche
Macchine a Stati Finiti
De-progettate questo circuito:
X
X
\B
J Q
C
KR Q
F Fa
A
\A
Ingresso X
Uscita Z
Stato A, B = Z
\R eset
Clk
X
X
\A
J Q
C
KR Q
F Fb
Z
\B
\R eset
Due metodi per de-progettazione:
• Ad hoc: provare combinazioni di ingresso per derivare tabella di
transizione
• Formale: derivare le transizioni analizzando il circuito
© R.H. Katz 8-28
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
De-progettazione ad hoc
Comportamento in risposta alla sequenza 1 0 1 0 1 0:
100
X
Clk
A
Z
\Reset
Reset X = 1
X=0
X=1
X= 0
X=1
X= 0
X= 0
AB = 00 AB = 00 AB = 11 AB = 11 AB = 10 AB = 10 AB = 01 AB = 00
A B
0 0
Tabella di
transizione degli
stati parziale
0 1
1 0
1 1
X
0
1
0
1
0
1
0
1
A+
?
1
0
?
1
0
1
1
B+
?
1
0
?
0
1
1
0
Z
0
0
1
1
0
0
1
1
© R.H. Katz 8-29
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
De-progettazione formale
Derivare la tabella di transizione dalle funzioni di stato futuro
in ingresso ai flipflop e dalle funzioni di uscita!
Ja = X
Jb = X
Ka = X • B
Kb = X xor A
Z=B
Funzioni di eccitazione del FF J-K:
A+ = Ja • A + Ka • A = X • A + (X + B) • A
B+ = Jb • B + Kb • B = X • B + (X • A + X • A) • B
Mappe di Karnaugh delle funzioni di stato futuro:
A+
Stato 00, Ingresso 0 -> Stato 00
Stato 01, Ingresso 1 -> Stato 01
B+
© R.H. Katz 8-30
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
ASM completa per la macchina di Moore da identificare
00
S0
11
S3
H. Z
0
1
X
0
X
1
S1
01
S2
10
H. Z
0
X
1
1
X
0
Nota: tutte le uscite sono associate con gli stati
Non ci sono uscite dipendenti dagli ingressi (macchina di Moore)
© R.H. Katz 8-31
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
De-progettate questa macchina di Mealy
Clk
D
Q
DA
C
A
\A
X
\A
R
\X
Q
J
C
K
\Reset
A
X
B
Q
R
Q
\B
\Reset
DA
\X
B
B
Z
\X
X
A
Ingresso X, Uscita Z, Stato A, B
Il registro di stato ha un FF D ed un FF J-K
© R.H. Katz 8-32
Reti Logiche
Macchine di Moore e di Mealy
Macchine a Stati Finiti
Metodo ad hoc
Comportamento nel tempo con sequenza di ingresso 101011:
100
Notate le
alee su Z!
X
Clk
Uscite valide
al fronte di
discesa
successivo
del clock
A
B
Z
\Res et
Reset
AB=00
Z =0
X =1
AB=00
Z =0
X =0
AB=00
Z =0
X =1
AB=01
Z =0
X =0
AB=11
Z=1
A B
0 0
Tabella di
transizione
parziale basata
sulle forme
d’onda
0 1
1 0
1 1
X
0
1
0
1
0
1
0
1
X =1
AB=10
Z =1
A+
0
0
?
1
?
0
1
?
X =1
AB=01
Z =0
B+
1
0
?
1
?
1
0
?
Z
0
0
?
0
?
1
1
?
© R.H. Katz 8-33
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
Metodo formale
A+ = B • (A + X) = A • B + B • X
B+ = Jb • B + Kb • B = (A xor X) • B + X • B
=A•B•X + A•B•X + B•X
Z
=A•X + B•X
A+
Transizioni ed uscite mancanti:
Stato 01, Ingr. 0 -> Stato 01, Uscita 1
Stato 10, Ingr. 0 -> Stato 00, Uscita 0
Stato 11, Ingr. 1 -> Stato 11, Uscita 1
B+
Z
© R.H. Katz 8-34
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
ASM per la macchina di Mealy da identificare
S0 = 00, S1 = 01, S2 = 10, S3 = 11
S0
1
H. Z
00
10
S2
0
X
0
S1
X
1
H. Z
S3
01
11
H. Z
0
X
1
1
X
0
Nota: alcune uscite dipendono dalle transizioni, altre
dagli stati (macchina di Mealy)
© R.H. Katz 8-35
Macchine di Moore e di Mealy
Variante macchina di Moore
(anche detta macchina di Mealy sincrona)
Reti Logiche
Macchine a Stati Finiti
Clock
Xi
Ingressi
Zk
Uscite
Logica
combinatoria
per uscite
e stato futuro
Registro di stato
Clock
Reazione
di stato
Uscite e stati memorizzati:
“risponde” dopo un ciclo di clock (Moore)
ma non ci sono alee sulle uscite!
© R.H. Katz 8-36
Reti Logiche
Macchine a Stati Finiti
Macchine di Moore e di Mealy
Macchina di Mealy
Xi
Ingressi
Logica
combinatoria
per uscite
e stato futuro
Registro di stato
Zk
Uscite
Clock
Reazione
di stato
Uscite non memorizzate:
“risponde” immediatamente (Mealy)
ma puo’ avere alee sulle uscite!
© R.H. Katz 8-37
Specifiche informali di FSM
Reti Logiche
Macchine a Stati Finiti
Traduzione di specifiche informali in specifiche formali
Quattro esempi:
• Riconoscitore di stringa finita
• Contatore con decisioni complesse
• Controllore di semaforo
• Serratura a combinazione numerica
Useremo diagrammi degli stati ed ASM
© R.H. Katz 8-38
Specifiche informali di FSM
Riconoscitore di stringa finita
Reti Logiche
Macchine a Stati Finiti
Un riconoscitore di stringa finita ha un ingresso (X) ed una uscita (Z).
L’uscita e’ attiva quando e’ stata vista la sequenza …010…
in ingresso, purche’ non sia mai stata vista la sequenza 100.
Passo 1. Capire il problema
Esempi di comportamenti ingresso/uscita:
X: 00101010010…
Z: 000010101000…
X: 11011010010…
Z: 000000001000…
© R.H. Katz 8-39
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Riconoscitore di stringa finita
Passo 2. Disegnare diagramma degli stati/ASM per le due stringhe
che vanno riconosciute, cioe’ 010 ed 100.
S0
[0]
Produce
1 in uscita
Reset
S1
[0]
S4
[0]
S2
[0]
S5
[0]
S3
[1]
S6
[0]
Diagramma degli stati
di Moore
Reset manda la FSM
nello stato S0
Rimane per sempre nello stato
© R.H. Katz 8-40
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Riconoscitore di stringa finita
Condizioni di uscita da S3: ho riconosciuto …010
se il prossimo ingresso e’ 0, ho visto …0100 (stato S6)!
se il prossimo ingresso e’ 1, ho visto …0101 = …01 (stato S2)
S0
[0]
Reset
S1
[0]
S4
[0]
S2
[0]
S5
[0]
S3
[1]
S6
[0]
© R.H. Katz 8-41
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Riconoscitore di stringa finita
Condizioni di uscita da S1: riconosce stringhe del tipo …0 (nessun 1)
torna ad S1 se l’ingresso e’ 0
Condizioni di uscita da S4: riconosce stringhe del tipo …1 (nessuno 0)
torna ad S4 se l’ingresso e’ 1
S0
[0]
Reset
S1
[0]
S4
[0]
S2
[0]
S5
[0]
S3
[1]
S6
[0]
© R.H. Katz 8-42
Specifiche informali di FSM
Riconoscitore di stringa finita
S2, S5 mancano ancora di alcune transizioni
Reti Logiche
Macchine a Stati Finiti
S2 = …01; se il prossimo ingresso e’ 1, potrebbe essere l’inizio
di (01)1(00), cioe’ esattamente del caso di S4!
S5 = …10; se il prossimo ingresso e’ 1, potrebbe essere l’inizio
di (10)1(0), cioe’ esattamente del caso di S2!
Reset
S0
[0]
S1
[0]
S4
[0]
S2
[0]
S5
[0]
S3
[1]
S6
[0]
Diagramma degli
stati finale
© R.H. Katz 8-43
Specifiche informali di FSM
Riconoscitore di stringa finita
Reti Logiche
Macchine a Stati Finiti
module string
state_diagram SREG
title '010/100 string recognizer state machine state S0: if X then
Josephine Engineer, Itty Bity Machines, Inc.' state S1: if X then
u1 device 'p22v10';
state S2: if X then
state S3: if X then
"Input Pins
state S4: if X then
state S5: if X then
clk, X, RESET
pin 1, 2, 3;
state S6: goto S6;
"Output Pins
test_vectors ([clk,
Q0, Q1, Q2, Z
pin 19, 20, 21, 22;
[0,1,.X.] -> [0];
[.C.,0,0] -> [0];
Q0, Q1, Q2, Z istype 'pos,reg';
[.C.,0,0] -> [0];
[.C.,0,1] -> [0];
"State registers
[.C.,0,0] -> [1];
SREG = [Q0, Q1, Q2, Z];
[.C.,0,1] -> [0];
S0 = [0,0,0,0]; " Reset state
[.C.,0,0] -> [1];
S1 = [0,0,1,0]; " strings of the form ...0
[.C.,0,1] -> [0];
S2 = [0,1,0,0]; " strings of the form ...01
[.C.,0,0] -> [1];
S3 = [0,1,1,1]; " strings of the form ...010
[.C.,0,0] -> [0];
S4 = [1,0,0,0]; " strings of the form ...1
[.C.,0,1] -> [0];
S5 = [1,0,1,0]; " strings of the form ...10
[.C.,0,0] -> [0];
S6 = [1,1,0,0]; " strings of the form ...100
end string;
equations
[Q0.ar, Q1.ar, Q2.ar, Z.ar] = RESET; "Reset to S0
S4
S2
S4
S2
S4
S2
else
else
else
else
else
else
S1;
S1;
S3;
S6;
S5;
S6;
RESET, X] -> [Z]
Descrizione ABEL
© R.H. Katz 8-44
Specifiche informali di FSM
Riconoscitore di stringa finita
Riassunto del procedimento:
Reti Logiche
Macchine a Stati Finiti
• Scrivere esempi di sequenze di ingresso ed uscita per capire
la specifica
• Scrivere le sequenze degli stati delle stringhe da riconoscere
• Aggiungere transizioni mancanti, riutilizzando stati il piu’
possibile
• Verificare il comportamento ingresso/uscita del diagramma
degli stati per verificare che si comporti come specificato
© R.H. Katz 8-45
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Contatore complesso
Un contatore sincrono a 3 bit ha un ingresso M che ne controlla
il modo di funzionamento:
• Quando M = 0 il contatore conta in avanti in binario puro.
• Quando M = 1 il contatore conta in avanti in codice Gray.
Binario: 000, 001, 010, 011, 100, 101, 110, 111
Gray: 000, 001, 011, 010, 110, 111, 101, 100
Esempio di comportamento corretto di ingresso/uscita:
Ingresso di modo M
0
0
1
1
1
0
0
Stato presente Stato futuro (Z2 Z1 Z0)
000
001
001
010
010
110
110
111
111
101
101
110
110
111
© R.H. Katz 8-46
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Contatore complesso
Uno stato per ogni combinazione di uscita
Aggiungere gli archi opportuni in base al modo
S0
[000]
S0
Reset
000
S1
S1
[001]
0
S2
[010]
001
H. Z 0
S2
S3
[011]
1
M
010
H. Z 1
M
S3
011
H. Z 1
H. Z 0
0
1
M
1
S4
[100]
S6
S7
[111]
S4
H. Z 2
H. Z 1
S7
S5
[101]
S6
[110]
0
110
111
M
1
M
H. Z 2
H. Z 1
H. Z 0
0
100
H. Z 2
0
S5
101
H. Z 2
H. Z 0
1
0
M
1
© R.H. Katz 8-47
Specifiche informali di FSM
Contatore complesso
Reti Logiche
Macchine a Stati Finiti
module counter
title 'combination binary/gray code upcounter
Josephine Engineer, Itty Bity Machines, Inc.'
u1 device 'p22v10';
state_diagram SREG
state S0: goto S1;
"Input Pins
state S1: if M then S3 else S2;
clk, M, RESET
pin 1, 2, 3;
state S2: if M then S6 else S3;
state S3: if M then S2 else S4;
"Output Pins
state S4: if M then S0 else S5;
Z0, Z1, Z2
pin 19, 20, 21;
state S5: if M then S4 else S6;
state S6: goto S7;
Z0, Z1, Z2
istype 'pos,reg';
state S7: if M then S5 else S0;
"State registers
SREG = [Z0, Z1, Z2];
test_vectors ([clk, RESET, M] -> [Z0, Z1, Z2])
S0 = [0,0,0];
[0,1,.X.] -> [0,0,0];
S1 = [0,0,1];
[.C.,0,0] -> [0,0,1];
S2 = [0,1,0];
[.C.,0,0] -> [0,1,0];
S3 = [0,1,1];
[.C.,0,1] -> [1,1,0];
S4 = [1,0,0];
[.C.,0,1] -> [1,1,1];
S5 = [1,0,1];
[.C.,0,1] -> [1,0,1];
S6 = [1,1,0];
[.C.,0,0] -> [1,1,0];
S7 = [1,1,1];
[.C.,0,0] -> [1,1,1];
end counter;
equations
[Z0.ar, Z1.ar, Z2.ar] = RESET; "Reset to state S0
Descrizione ABEL
© R.H. Katz 8-48
Specifiche informali di FSM
Controllore di semaforo
Reti Logiche
Macchine a Stati Finiti
Una strada di grande traffico incrocia una strada secondaria.
Il sensore C segnala la presenza di un’auto sulla strada secondaria
Se non ci sono veicoli sulla strada secondaria, il semaforo rimane
verde per la strada principale.
Se c’e’ un veicolo sulla strada secondaria, il semaforo passa da verde
a giallo a rosso per la strada principale, permettendo al semaforo
di diventare verde per la strada secondaria.
Il semaforo rimane verde per la strada secondaria finche’ ci sono
veicoli, ma con un tempo massimo prefissato.
Quando una di queste due condizioni e’ soddisfatta, il semaforo
diventa giallo e poi rosso per la strada secondaria, permettendo al
semaforo di diventare verde per la strada principale.
Anche se ci sono veicoli sulla strada secondaria, la strada principale
ha un intervallo minimo prefissato con il semaforo verde.
Supponete di avere un temporizzatore che genera un’uscita TS
dopo un breve intervallo di tempo ed una TL dopo un lungo intervallo
di tempo, in risposta ad un segnale di partenza ST.
Usate TS per temporizzare il giallo e TL per il verde.
© R.H. Katz 8-49
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
Figura dell’incrocio:
Secondaria
C
HL
FL
Principale
Principale
HL
FL
C
Secondaria
© R.H. Katz 8-50
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
• Tabella degli ingressi e delle uscite:
Segnale di ingresso
reset
C
TS
TL
Descrizione
porta la FSM nello stato iniziale
presenza veicolo su strada secondaria
fine intervallo di tempo breve
fine intervallo di tempo corto
Segnale di uscita
HG, HY, HR
FG, FY, FR
ST
Descrizione
attiva luce verde/gialla/rossa principale
attiva luce verde/gialla/rossa secondaria
inizio intervallo breve o lungo
• Tabella degli stati (alcune uscite ne implicano altre)
Stato
S0
S1
S2
S3
Descrizione
Verde principale (rosso secondaria)
Giallo principale (rosso secondaria)
Verde secondaria (rosso principale)
Giallo secondaria (rosso principale)
© R.H. Katz 8-51
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
Completamento di ASM:
Iniziare con sequenza e uscite di base:
S0
S3
H.HG
H.FR
H.HR
H.FY
S1
H.HY
H.FR
S2
H.HR
H.FG
© R.H. Katz 8-52
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
Decidere condizioni di uscita per S0:
Veicolo in attesa E fine dell’intervallo lungo: C • TL
S0
S0
H.HG
H.FR
0
H.HG
H.FR
0
TL
TL • C
1
0
C
1
H.ST
1
H.ST
S1
H.HY
H.FR
S1
H.HY
H.FR
Frammenti equivalenti di ASM
© R.H. Katz 8-53
Reti Logiche
Specifiche informali di FSM
Macchine a Stati Finiti
Controllore di semaforo
Transizione da S1 ad S2:
Attivare ST uscendo da S0
Restare in S1 finche’ TS e’ attivato
Stesso comportamento per la transizione da S3 ad S4
S1
S2
H.HY
H.FR
0
TS
H.ST
H.HR
H.FG
1
© R.H. Katz 8-54
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
Condizione di uscita per S2: nessun veicolo OPPURE fine
dell’intervallo lungo
S0
H.HG
H.FR
0
H.ST
1
TL • C
S3
H.HR
H.FY
TS
0
1
H.ST
S1
H.HY
H.FR
0
TS
H.ST
H.ST
1
S2
H.HR
H.FG
0
TL + C
1
ASM completa per il controllore di semaforo
© R.H. Katz 8-55
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
Confrontate con il diagramma degli stati:
TL + C
Reset
S0: HG
S0
TL•C/ST
S1: HY
TS/ST
TS
S1
S2: FG
S3
TS
TS/ST
S3: FY
TL + C/ST
S2
TL • C
Vantaggi di ASM:
• Permette di concentrarsi su cammino e condizioni per
uscire da uno stato
• Condizione di uscita costruita passo per passo, e poi
trasformata in una condizione logica
• E’ piu’ facile capire una specifica algoritmica
© R.H. Katz 8-56
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Controllore di semaforo
module traffic
title 'traffic light FSM'
u1 device 'p22v10';
"Input Pins
clk, C, RESET, TS, TL
pin
1, 2,
3, 4,
"Output Pins
Q0, Q1, HG, HY, HR,
FG, FY, FR, ST
pin 14, 15, 16, 17, 18,
19, 20, 21, 22;
5;
HY
HR
FG
FY
FR
=
=
=
=
=
!Q0 & Q1;
(Q0 & !Q1) # (Q0 & Q1);
Q0 & !Q1;
Q0 & Q1;
(!Q0 & !Q1) # (!Q0 & Q1);
state_diagram SREG
state S0: if (TL & C) then S1 with ST = 1
else S0 with ST = 0
state S1: if TS then S2 with ST = 1
else S1 with ST = 0
state S2: if (TL # !C) then S3 with ST = 1
else S2 with ST = 0
state S3: if TS then S0 with ST = 1
else S3 with ST = 0
Q0, Q1 istype 'pos,reg';
ST, HG, HY, HR,
FG, FY, FR istype 'pos,com'; test_vectors
([clk,RESET, C, TS, TL]->[SREG,HG,HY,HR,FG,FY,FR,ST])
"State registers
[.X.,
1,.X.,.X.,.X.]->[ S0, 1, 0, 0, 0, 0, 1, 0];
SREG = [Q0, Q1];
[.C.,
0, 0, 0, 0]->[ S0, 1, 0, 0, 0, 0, 1, 0];
S0 = [ 0, 0];
[.C.,
0, 1, 0, 1]->[ S1, 0, 1, 0, 0, 0, 1, 0];
S1 = [ 0, 1];
[.C.,
0, 1, 0, 0]->[ S1, 0, 1, 0, 0, 0, 1, 0];
S2 = [ 1, 0];
[.C.,
0, 1, 1, 0]->[ S2, 0, 0, 1, 1, 0, 0, 0];
S3 = [ 1, 1];
[.C.,
0, 1, 0, 0]->[ S2, 0, 0, 1, 1, 0, 0, 0];
[.C.,
0, 1, 0, 1]->[ S3, 0, 0, 1, 0, 1, 0, 0];
equations
[.C.,
0, 1, 1, 0]->[ S0, 1, 0, 0, 0, 0, 1, 0];
[Q0.ar, Q1.ar] = RESET;
end traffic;
HG = !Q0 & !Q1;
Descrizione ABEL
© R.H. Katz 8-57
Specifiche informali di FSM
Serratura a combinazione numerica
Reti Logiche
Macchine a Stati Finiti
Una serratura seriale a 3 bit controlla l’ingresso di una stanza.
Gli ingressi sono: RESET, ENTER ed un interruttore a 2 posizioni
KEY-IN per il bit di codice.
La serratura genera l’uscita UNLOCK (sblocca) quando il codice
introdotto corrisponde alla combinazione interna.
Una luce di ERROR si illumina se il codice non corrisponde alla
combinazione.
La sequenza corretta e’: (1) premi RESET, (2) introduci il bit di codice,
(3) premi ENTER, ripeti (2) e (3) per altre 2 volte.
La specifica e’ incompleta:
• come viene definita la combinazione?
• quando viene accesa ERROR esattamente?
Fate supposizioni ragionevoli:
• combinazione memorizzata in un registro oppure pre-definita
nella logica di stato futuro
• attivare ERROR subito, appena identificato un errore, oppure
aspettare la fine del codice
In questo caso: combinazione in un registro e segnalazione di errore
alla fine del codice
© R.H. Katz 8-58
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Serratura a combinazione numerica
Capire il problema: disegnare lo schema a blocchi...
RESET
Dati dall’operatore
ENTER
UNLOCK
KEY-IN
Combination
Loc k FSM
Combinazione
interna
ERROR
L0
L1
L2
Ingressi:
Reset
Enter
Key-In
L0, L1, L2
Uscite:
Unlock
Error
© R.H. Katz 8-59
Specifiche informali di FSM
Serratura a combinazione numerica
Reti Logiche
Macchine a Stati Finiti
Enumerazione degli stati:
quali sequenze portano all’apertura della porta?
le condizioni di errore saranno verificate in un secondo tempo …
Stato iniziale START piu’ tre stati di confronto COMP
START
Entra in START quando c’e’ RESET
1
Reset
Esce da START quando ENTER e’
stato premuto
0
Enter
COMP0
0
1
KI = L0
N
Continua se Key-In e’ uguale ad L0
Y
© R.H. Katz 8-60
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Serratura a combinazione numerica
COMP0
IDLE1
Cammino per
sbloccare:
KI = L 0
N
Y
Enter
1
COMP2
IDLE0
0
Attendere che
Enter sia stato
premuto
Enter
COMP1
0
KI = L2
N
Y
1
DONE
H.Unloc k
Confrontare Key-In
KI = L1
Y
N
Reset
0
1
START
© R.H. Katz 8-61
Reti Logiche
Macchine a Stati Finiti
Specifiche informali di FSM
Serratura a combinazione numerica
Adesso consideriamo gli errori:
Dovremmo seguire la stessa sequenza del cammino che
finisce con UNLOCK, eccetto per l’attivazione di ERROR
alla fine
IDLE0'
ERROR3
IDLE1'
H.Error
Enter
ERROR1
1
0
0
Enter
ERROR2
Reset
0
1
1
START
Errore in COMP0 va ad IDLE0'
Errore in COMP1 va ad IDLE1'
Errore in COMP2 va ad ERROR3
© R.H. Katz 8-62
Specifiche informali di FSM
Serratura a combinazione numerica
Reti Logiche
Macchine a Stati Finiti
Reset + Enter
Reset
Start
Reset • Enter
Comp0
KI = L0
KI ° L0
Enter
Enter
Idle0
Idle0'
Enter
Enter
Comp1
Diagramma degli stati
equivalente
KI = L1
Error1
KI ° L1
Enter
Enter
Idle1
Idle1'
Enter
Enter
Comp2
KI = L2
Reset
Done
[Unlock]
Reset
Start
Error2
KI ° L2
Error3
[Error]
Reset
Reset
Start
© R.H. Katz 8-63
Specifiche informali di FSM
Serratura a combinazione numerica
Reti Logiche
Macchine a Stati Finiti
module lock
title 'comb. lock FSM'
u1 device 'p22v10';
equations
[Q0.ar, Q1.ar, Q2.ar, Q3.ar] = RESET;
UNLOCK = !Q0 & Q1 & Q2 & !Q3;"asserted in DONE
"Input Pins
ERROR = Q0 & !Q1 & Q2 & Q3; "asserted in ERROR3
clk, RESET, ENTER, L0, L1, L2, KI
pin
1, 2, 3, 4, 5, 6, 7;
state_diagram SREG
state START: if (RESET # !ENTER)
"Output Pins
then START else COMP0;
Q0, Q1, Q2, Q3, UNLOCK, ERROR
state COMP0: if (KI == L0) then IDLE0 else IDLE0p;
pin 16, 17, 18, 19, 14, 15;
state IDLE0: if (!ENTER) then IDLE0 else COMP1;
state COMP1: if (KI == L1) then IDLE1 else IDLE1p;
Q0, Q1, Q2, Q3 istype 'pos,reg';state IDLE1: if (!ENTER) then IDLE1 else COMP2;
UNLOCK, ERROR istype 'pos,com';state COMP2: if (KI == L2) then DONE else ERROR3;
state DONE: if (!RESET) then DONE else START;
"State registers
state IDLE0p:if (!ENTER) then IDLE0p else ERROR1;
SREG
= [Q0, Q1, Q2, Q3];
state ERROR1:goto IDLE1p;
START
= [ 0, 0, 0, 0];
state IDLE1p:if (!ENTER) then IDLE1p else ERROR2;
COMP0
= [ 0, 0, 0, 1];
state ERROR2:goto ERROR3;
IDLE0 = [ 0, 0, 1, 0];
state ERROR3:if (!RESET) then ERROR3 else START;
COMP1 = [ 0, 0, 1, 1];
IDLE1 = [ 0, 1, 0, 0];
test_vectors
COMP2 = [ 0, 1, 0, 1];
DONE = [ 0, 1, 1, 0];
end lock;
IDLE0p = [ 0, 1, 1, 1];
ERROR1 = [ 1, 0, 0, 0];
IDLE1p = [ 1, 0, 0, 1];
ERROR2 = [ 1, 0, 1, 0];
ERROR3 = [ 1, 0, 1, 1];
Descrizione ABEL
© R.H. Katz 8-64
Riassunto del capitolo
Comportamento fondamentale nel tempo di una FSM
Reti Logiche
Macchine a Stati Finiti
• quando gli ingressi vengono campionati, e quando gli stati e le uscite
cambiano e si stabilizzano
• Macchine di Moore e Mealy (sincrone ed asincrone)
uscite = F(stato) oppure uscite = F(stato, ingressi)
Primi due passi della procedura (in sei passi) per la sintesi di FSM
• capire il problema
• derivare una rappresentazione astratta della FSM
Rappresentazioni astratte di FSM
• diagrammi degli stati, ASM, linguaggi di descrizione dell’hardware
Specifiche informali
• capire il comportamento ingresso/uscita; disegnare schemi
• tracciare gli stati per l’”obiettivo”; aggiungere le condizioni di errore
• riutilizzare gli stati se possibile
© R.H. Katz 8-65