Macchine a Stati finiti Prof. Alberto Borghese Dipartimento di Scienze dell nformazione borghese@dsi.unimi.it Università degli Studi di Milano /27 Sommario Macchine a stati finiti Esempio: sintesi di un controllore per venditore di bibite. Esempio: sintesi di un controllore di un semaforo. 2/27
La CPU come macchina sequenziale M FF Fase di fetch WB M Decodifica Esecuzione M Decod Lettura / scrittura Write back R/W M M Exec 3/27 i o i i M x x K x K y o y y N Macchina di Huffman Stato 4/27
Macchina a Stati Finiti (di Moore) La Macchina di Moore è definita, in teoria degli automi, dalla quintupla : <,,, f(.), g(.) > : insieme degli stati (in numero finito). : alfabeto di ingresso: tutti i simboli che si possono presentare in ingresso. Se abbiamo n ingressi, avremo 2 n possibili simboli da leggere in ingresso (configurazioni). : alfabeto di uscita: tutti i simboli che si possono generare in uscita. Se abbiamo m uscite, avremo 2 m possibili simboli da presentare in uscita (configurazioni). f(.): funzione stato prossimo: = f(,). Definisce l evoluzione della macchina nel tempo. L evoluzione è deterministica. g(.): funzione di uscita: = g() nelle macchien di Moore. Per il buon funzionamento della macchina è previsto uno stato iniziale, al quale la macchina può essere portata mediante un comando di reset. 5/27 Descrizione di una macchina di Moore STT: State Transition Table (Tabella degli Stati). Per ogni coppia, (Stato presente ngresso), si definisce l Uscita e lo Stato Prossimo. La forma è tabellare e ricorda le tabelle della verità da cui è derivata. STG: State Transition Graph (Diagramma degli stati o Grafo delle transizioni). Ad ogni nodo è associato uno stato. Un arco orientato da uno stato x i ad uno stato x j, contrassegnato da un simbolo (di ingresso) α, rappresenta una transizione (passaggio di stato) che si verifica quando la macchina, essendo nello stato x i, riceve come ingresso il simbolo α. 6/27
Sommario Macchine a stati finiti Esempio: sintesi di un controllore per venditore di bibite. Esempio: sintesi di un controllore di un semaforo. 7/27 STG di una macchina venditrice di bibite Voglio costruire una macchinetta che eroga caffè quando l utente ha inserito 3c. Accetta o 2c e non dà resto. = [c, c, 2c] = [, caffè] = Monete accumulate = [, c, 2c, 3c, 4c) = F(,) = g() c / c / 2c / =2c =2c =2c 3c / 4c / 8/27
STG di una macchina venditrice di bibite (Semplificata) Voglio costruire una macchinetta che eroga caffè quando l utente ha inserito 3c. Accetta solamente monete da c. = [c, c] = [Nulla, Caffè] = Monete accumulate = [, c, 2c, 3c] = F(,) = g() c / N c / N 2c / N 3c / C 9/27 STT della vendor machine c c c c c Nulla c c 2c Nulla 2c 2c 3c Nulla 3c c c Caffè l controllore controlla ogni.5s l ingresso e ogni.5s aggiorna lo stato e l uscita. c / N c / N 2c / N 3c / C /27
Codifica della STT della vendor machine c () c () c () c () Nulla () 2c () Nulla () 2c () 2c () 3c () Nulla () 3c () c () Caffè () = [c, c] = [, ] = [Nulla, Caffè] = [, ] = [, c, 2c, 3c] = [,,, ] = F(,) da sintetizzare = g() da sintetizzare c / N c / N 2c / N 3c / C /27 Sintesi della funzione di uscita della FSM della Vendor Machine c () c () è su 2 cifre => 2 bit e c () c () Nulla () 2c () Nulla () 2c () 2c () 3c () Nulla () 3c () c () Caffè () = [, ] = [, ] = [,,, ] = F(,) =? = g() = 2/27
Sintesi della funzione stato prossimo della FSM della Vendor Machine è su 2 cifre => 2 bit e = [, ] = [, ] = [,,, ] = F(,) => = ( +!! ) +!! =! +! = g() = 3/27 nput Sintesi del circuito della FSM della Vendor Machine ( +!! ) +!!! +! Q D T = [, ] = [, ] = [,,, ] Q D T = F(,) => = ( +!! ) +!! =! +! = g() = 4/27
Una vendor machine più completa. Monete diverse dai c. Scelta di bevande diverse. Bevande diversi con costi diversi. Periodo di refrattarietà nella quale non si possono inserire monete (periodo di preparazione del caffè).... 5/27 Sommario Macchine a stati finiti. Esempio: sintesi di un controllore per venditore di bibite. Esempio: sintesi di un controllore di un semaforo. 6/27
Controllore di un semaforo 2 strade: nord-sud ed est-ovest che devono essere controllate da un semaforo (per semplicità supponiamo che possa accendere solamente rosso e verde). l semaforo può commutare ogni 3 secondi (clock con frequenza =?). Supponiamo che esista una video-camera in grado di leggere, per ogni direttrice, se esiste almeno un auto in attesa, oppure un auto che si accinga ad attraversare (le due condizioni sono trattate allo stesso modo). l semaforo deve cambiare colore (da rosso a verde) quando esiste un auto in attesa sulla sua direttrice. Se ci sono due auto in attesa sulle due direttrici il semaforo deve cambiare colore. 7/27 Stato, nput, Output del semaforo ngresso: [Nulla, Auto NS, Auto EO, Auto Both ] Uscita: [Luce_Verde NS, Luce_Verde EO ] Stato:? f(,) =? G() =? 8/27
ngresso: [Nulla, Auto NS, Auto EO, Auto Both ] STG del semaforo, Auto NS Uscita: [Luce_Verde NS, Luce_Verde EO ] Stato: [Verde NS, Verde EO ] Verde NS / Luce NS f(,) =? G() =? Auto EO, Auto Both Auto NS, Auto Both, Auto EO Verde EO / Luce EO 9/27 STT del semaforo nput Nulla Auto NS Auto EO Auto Both Uscita Verde NS Verde NS Verde NS Verde EO Verde EO Luce NS, Auto NS Verde EO Verde EO Verde NS Verde EO Verde NS Luce EO Verde NS / Luce NS Auto EO, Auto Both Auto NS, Auto Both, Auto EO Verde EO / Luce EO 2/27
STT del semaforo binaria nput Nulla = Auto NS = Auto EO = Auto Both = Uscita Verde NS = Verde NS = Verde NS = Verde EO = Verde EO = Luce NS = Verde EO = Verde EO = Verde NS = Verde EO = Verde NS = Luce EO = ngresso: [Nulla, Auto NS, Auto EO, Auto Both ] = [,,, ] Uscita: [Luce_Verde NS, Luce_Verde EO ] = [, ] Stato: [Verde NS, Verde EO ] = [, ] f(,) =? G() =? 2/27 Sintesi della MSF del semaforo nput 2 =f(,) = g( ) Q D T 22/27
Sintesi della MSF del semaforo 2 =f() = g( ) _ = + + + = + Q D T = Uscita ngresso: [,,, ] Uscita: [, ] Stato: [, ] f(,) =? G() =? 23/27 Sintesi del circuito della MSF del semaforo 2 =f() = g( ) _ = + + + = + = Q D T 24/27
passi della progettazione di una MSF l committente fornisce le specifiche di funzionamento. Definizione delle variabili di nput, Stato e Output. Definizione degli insiemi di simboli che possono essere assunti dalle variabili di nput e di Output. Costruzione dello STG => Definizione dell insieme di simboli che possono essere assunti dallo stato. Costruzione della STT => Definizione implicita delle funzioni stato prossimo ed uscita. Codifica della STT => Definizione del numero di bit per nput, Stato e Output. STT Codificata => Circuiti combinatori che sintetizzano le funzioni f(,) e g(). 25/27 Sommario Macchine a stati finiti Esempio: sintesi di un latch di tipo D. Esempio: sintesi di un controllore di un semforo. 26/27
Esercizi Costruire una macchina a stati finiti (di Moore), in grado di individuare all interno di una parola di e le seguenti configurazioni: e. Le configurazioni si possono concatenare (e.g. da uscita vera, al secondo e terzo ). Stato iniziale. Costruire una macchina a stati finiti (di Moore), con due ingressi, x e x 2, che fornisce quando negli ultimi 3 istanti si è verificata la seguente configurazione: t = -2 t = - t = x x 2 x Stato iniziale x = x 2 =. Costruire un venditore di bibite che distribuisce una bibita quando si raggiungono i 35 cents inseriti. Non dà resto. 27/27