You are on page 1of 8

Breve guida alla realizzazione (sintesi) di semplici automi Un automa o macchina digitale a stati finiti FSM (Finite State

Machine) un sistema digitale dotato di memoria le cui uscite y al tempo t non dipendono solo dagli ingressi nello stesso istante (come nei sistemi combinatori) ma anche dagli eventi passati (espressi dalle variabili di stato solitamente indicate con Q): y(t) = f(x,Q,t) Semplici automi sono i contatori di qualsiasi modulo. In questo caso lautoma notevolmente semplificato dato che levoluzione tra uno stato ed il successivo dovuta allapplicazione del solo segnale di clock, senza alcun ingresso x e con le uscite y che coincidono con le Q. La figura seguente illustra i blocchi fondamentali che realizzano un generico automa:

x ( t) F u n zio n e d i Tr an s izio n e Q ( t+ 1 ) M em o r ia d i C lo c k S ta to Q ( t) F u nzio n e d i T r a s fe r i m e n to

y ( t)

Come si pu notare, i blocchi fondamentali di un automa sono rappresentati da: La funzione di transizione: accetta in ingresso le x e le variabili di stato al tempo t (attuali) e determina le Q al tempo t+1 (future) La memoria di stato: mantiene lo stato attuale delle Q ed evolve allo stato futuro in sincronismo con il segnale di clock La funzione di trasferimento: determina il valore delle uscite y. Quando le uscite dipendono solo dalle Q (manca il collegamento tratteggiato) si parla di automa di Moore; se invece le y dipendono anche direttamente dagli ingressi x lautoma diventa di Mealy. In questa breve guida si tratter solo di automi del primo tipo. Per descrivere il comportamento e la struttura di un automa si usa spesso il diagramma degli stati che un grafo orientato cio uno schema nel quale gli stati sono rappresentati da cerchi collegati tra loro da uno o pi segmenti con indicato il verso di percorrenza. Essi indicano la transizione tra gli stati ed hanno associato le condizioni (combinazione logica degli ingressi x) che determinano il cambiamento di stato. I segmenti che non vanno da uno stato allaltro ma si richiudono su un unico stato indicano le condizioni di permanenza nello stato. Gli altri si suddividono in condizioni di avanzamento (passaggio allo stato che naturalmente segue lattuale) e condizioni di salto (passaggio a stati non consecutivi). E evidente che in ogni stato possibile una sola condizione di permanenza e di avanzamento ma i salti, se presenti, non hanno questo vincolo. Le uscite, quando sono indicate, sono associate ad ogni stato. Vedremo ora come progettare un automa basando il blocco memoria di stato su un insieme di FF di vario tipo. Sintesi di un automa realizzato con flip flop Determinazione del comportamento dellautoma e disegno del diagramma degli stati Questa unoperazione fondamentale e delicata. Partendo dallanalisi dellapparato, macchina, ciclo che si vuole governare con un automa si devono individuare il n di stati necessari, le condizioni di transizione tra gli stati e le uscite associate. Le modalit per arrivare al disegno del diagramma sono 1

varie. Nei casi pi semplici si parte da una descrizione scritta delle caratteristiche principale dellautoma e le si associa un grafo iniziale. Successivamente si procede al collaudo della struttura inserendo eventualmente altri stati e/o condizioni. Un altro metodo quello di disegnare i diagrammi temporali degli ingressi, delle variabili di stato e delle uscite in funzione del segnale di clock. Dallanalisi di tutte questi andamenti temporali si ricava il diagramma degli stati. E inutile proseguire nel progetto se questo primo passo, comunque affrontato, non privo di errori o ambiguit. Infine si vuole far notare che il diagramma degli stati uno strumento utile al progetto dellautoma quando la sua struttura non particolarmente complessa (cio di facile lettura). Altrimenti, pur rimanendo un modo corretto di rappresentarne il funzionamento, diventa un esercizio puramente accademico e senza utilit pratica (unanalogia calzante luso dei diagrammi di flusso nei programmi per elaboratore: quando sono troppo complessi la loro lettura complica anzich aiutare la comprensione degli algoritmi). Determinazione della tabella di eccitazione La tabella di eccitazione un modo alternativo e/o complementare per descrivere il comportamento di un automa. Per la progettazione con luso di FF necessario utilizzarla. Consiste in una tabella il cui nucleo centrale riporta in colonne affiancate gli stati attuali e quelli futuri. Ogni riga della tabella legata ad uno stato attuale perci in generale sono necessarie pi righe per riportare tulle le transizioni agli stati futuri (legati alle condizioni di permanenza, avanzamento e salto). Nella tabella, si aggiungono colonne pi a sinistra di quelle relative agli stati attuali e vengono riportate i valori assunti dagli ingressi, indicandoli con 0 logico, 1 logico o X (condizione di indifferenza). Proviamo a disegnare una tabella di eccitazione partendo dal diagramma degli stati di figura:

00 X1 10 10

00

X1

0 X1 10 X1 00 00 10

Questo automa ha 4 stati 00, 01, 10 e 11 e due ingressi X1 e X2 (in questo caso indicati nel disegno con i valori). Se gli ingressi valgono sempre 00 lautoma evolve secondo la sequenza 00, 10, 11, 01 e poi ricicla; se valgono 10 gira in senso opposto; se X2 vale 1 qualunque sia il valore di X1 lo stato 2

passa (o resta) a 00. E un automa che evolve secondo la sequenza tipica del codice Gray in un senso o in quello opposto e resetta a 00 con una condizione degli ingressi. Proviamo a disegnare la tabella di eccitazione: Ingressi X1 X2 0 0 X 1 1 0 0 0 X 1 1 0 0 0 X 1 1 0 0 0 X 1 1 0 Stati Attuali Q1 Q0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 Stati Futuri Q1 Q0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0

Un modo (non lunico) per disegnarla , come detto prima, partire dalle colonne degli stati attuali ed indicare a fianco quelli futuri corrispondenti. In questo caso, se lo stato attuale 00, abbiamo il salto a 10, la permanenza in 00 o lavanzamento a 01. Riportando a sinistra il valore degli ingressi abbiamo una rappresentazione tabulare completa del diagramma degli stati (le uscite sono omesse per semplicit, ma non creano particolari problemi). Scelta dei flip flop da utilizzare Il numero N dei flip flop da utilizzare legato al numero n degli stati: N 2n Il tipo dei flip flop pu essere scelto tra D, T e JK. Conviene descrivere il comportamento dei vari flip flop con la rispettiva tabella di eccitazione anzich con la tradizionale tabella di verit: Flip flop D: D 0 1 Qn+1 0 1 Stato Attuale 0 0 1 1 Stato Futuro 0 1 0 1 D 0 1 0 1

Flip flop T: T 0 1 Qn+1 Qn Qn negato Stato Attuale 0 0 1 1 Stato Futuro 0 1 0 1 T 0 1 1 0

Flip flop JK: J 0 0 1 1 K 0 1 0 1 Qn+1 Qn 0 1 Qn negato Stato Attuale 0 0 1 1 Stato Futuro 0 1 0 1 J 0 1 X X K X X 1 0

Ingressi X0 X1 X2 X3 0 0 X X 1 0 X X 0 1 X X X X 1 0 X X 0 X X X 1 1 X X X X X X X X X X X X

X4 X X X X X X 0 1 X

Stati Attuali Q1 Q0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1

Stati Futuri Q'1 Q'0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0

J1 0 0 1 1 0 1 X X X

Ingressi FF K1 J0 X 0 X 1 X 0 X X X X X X 0 0 0 1 1 X

K0 X X X 1 1 0 X X 1

Ingressi X0 X1 X2 X3 0 0 X X 1 0 X X 0 1 X X

X4 X X X

Stati Attuali Q1 Q0 0 0 0 0 0 0

Stati Futuri Q'1 Q'0 0 0 0 1 1 0

J1 0 0 1

Ingressi FF K1 J0 X 0 X 1 X 0

K0 X X X

Ora dobbiamo determinare un valore univoco di J1, K1, J0 e K0 che vale per tutti e tre gli stati futuri partendo dallo stato attuale 00. Tranne casi semplici, nei quali dalla semplice osservazione degli ingressi coinvolti si pu ricavare la soluzione, conveniente procedere in questo modo: si compila la tabella di verit che ha come ingressi le variabili Xn coinvolte (nel caso 00 sono X0 e X1 per ogni ingresso dei flip-flop da determinare. Nel ns. caso solo per J1 e J0 dato che K1 e K0 valgono sempre X. Per J1 e per J0 si ha: Ingressi Xn Ingressi FF X0 0 0 1 1 X1 0 1 0 1 J1 0 1 0 X J0 0 0 1 X

Per J1 semplificando con le mappe K si ottiene: X0\X1 0 1 4

1 0 X Da cui si ricava: J1 = X1 Per J0: X0\X1 0 0 0 1 0

1 1 X Quindi J0 = X0 La tabella per lo stato attuale 00 viene riscritta perci cos: Ingressi X0 X1 X2 X3 0 0 X X 1 0 X X 0 1 X X Stati Attuali X4 Q1 Q0 X 0 0 X 0 0 X 0 0 Stati Futuri Q'1 Q'0 0 0 0 1 1 0 J1 X1 Ingressi FF K1 J0 X X0 K0 X

Verifichiamo la correttezza della soluzione: Se si permane in 00 (prima riga) dalla tabella SA/SF del FF JK si ricava che necessario avere J1 = 0 e K1 = X (corretto perch X1 vale 0) e J0 = 0 e K0 = X (corretto perch X0 vale 0). Passiamo alla seconda riga (avanzamento da 00 a 01): Q'1 deve restare a 0 perci J1 = 0 e K1 = X (corretto perch X1 = 0); Q'0 invece va a 1 perci J0 = 1 e K0 = X (corretto perch X0 = 1). Nella terza riga c' il salto a 10: Q'1 passa a 1 quindi J1 = 1 e K1 = X (corretto perch X1 = 1) e Q'0 resta a 0 quindi J0 = 0 e K0 = X (corretto perch X0 = 0). Passiamo ora allo stato attuale 01: Ingressi X0 X1 X2 X3 X X 1 0 X X 0 X X X 1 1 Stati Attuali X4 Q1 Q0 X 0 1 X 0 1 X 0 1 Stati Futuri Q'1 Q'0 1 0 0 0 1 1 J1 1 0 1 Ingressi FF K1 J0 X X X X X X K0 1 1 0

Ora gli ingressi coinvolti sono X2 e X3. Come prima procediamo per ridurre le righe da tre a una. Per K1 e J0 il valore gi determinato e vale X. Per J1 e K0 si ha: Ingressi Xn X0 0 1 0 X X X1 0 0 1 X X X2 X X X 1 0 Ingressi FF Ingressi FF X3 X X X 0 X 5

Ingressi Stati Attuali Stati Futuri

X X X

X X X

1 X X

1 X X

Passando alle mappe K: X2\X3 0 0 0 1 0

1 1 1 Quindi J1 = X2 Per K0 (senza fare la mappa) si vede che K0 = X2 * X3. La tabella per lo stato attuale 01 viene riscritta perci cos: Ingressi X0 X1 X2 X3 X X 1 0 X X 0 X X X 1 1 Stati Attuali Q1 Q0 0 1 0 1 0 1 Stati Futuri Q'1 Q'0 1 0 0 0 1 1 Ingressi FF K1 J0 X X

X4 X X X

J1 X2

K0 X2 * X3

Anche qui facciamo la verifica: Prima riga, avanzamento in 10: Q'1 passa a 1 quindi J1 = 1 e K1 = X (corretto perch X2 = 1) e Q'0 passa a 0 quindi J0 = X e K0 = 1 (corretto perch X2 * X3 = 1 dato che X2 = 1 e X3 = 0); Seconda riga salto a 00: Q'1 resta a 0 quindi J1 = 0 e K1 = X (corretto perch X2 = 0) e Q'0 passa a 1 quindi J0 = X e K0 = 1 (corretto perch X2 * X3 = 1 dato che X2 = 0 e X3 = X); Terza riga salto a 11: Q'1 passa a 1 quindi J1 = 1 e K1 = X (corretto perch X2 = 1) e Q'0 resta a 1 quindi J0 = X e K0 = 0 (corretto perch X2 * X3 = 0 dato che X2 = X3 = 0). Passiamo allo stato attuale 10: Ingressi Stati Attuali X0 X1 X2 X3 X4 Q1 Q0 X X X X 0 1 0 X X X X 1 1 0 Stati Futuri Q'1 Q'0 1 0 1 1 Ingressi FF K1 J0 0 0 0 1

J1 X X

K0 X X

L'ingresso coinvolto solo X4. Dato che le righe sono solo due si pu arrivare in questo caso facilmente e rapidamente alla riduzione ad una riga sola osservando che l'unico ingresso dei FF che varia J0 e coincide con X4 perci si avr: Ingressi Stati Attuali X0 X1 X2 X3 X4 Q1 Q0 X X X X 0 1 0 X X X X 1 1 0 Stati Futuri Q'1 Q'0 1 0 1 1 Ingressi FF K1 J0 0 X4

J1 X

K0 X

L'ultimo stato attuale 11 e dato che le variabili d'ingresso non influenzano l'unico stato futuro non ci sono variazioni rispetto alla tabella iniziale: 6

Unendo tutti i risultati si ottiene la tabella di eccitazione seguente: Ingressi X0 X1 X2 X3 0 0 X X 1 0 X X 0 1 X X X X 1 0 X X 0 X X X 1 1 X X X X X X X X X X X X Stati Attuali X4 Q1 Q0 X 0 0 X 0 0 X 0 0 X 0 1 X 0 1 X 0 1 0 1 0 1 1 0 X 1 1 Stati Futuri Q'1 Q'0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0 Ingressi FF K1 J0 X X0

J1 X1

K0 X

X2 X X

X 0 1

X X4 X

X2 * X3 X 1

Ora possiamo proseguire nel progetto dell'automa in modo analogo al progetto dei contatori sincroni a modulo qualsiasi disegnando tante mappe k quanto sono gli ingressi dei FF: Per J1 e K1 avremo:

J1 Q1/Q0 0 1 0 X1 X 1 X2 X Q1/Q0 0 1

K1 0 X 0 1 X 1

C' la novit che nelle caselle ora ci possono essere anche le variabili di ingresso. Volendo raccogliere gli uni possiamo accorpare le celle che comprendono variabili d'ingresso solo con caselle contigue che contengono X (condizione d'indifferenza). In questo caso risulta: J1 = X1*Q0 + X2*Q0 K1 = Q0 Come si vede nel caso di caselle con variabili d'ingresso abbiamo fatto l'and logico tra il contenuto della cella ed il valore degli ingressi che si ottengono dall'accorpamento (infatti il valore logico dipende sia dal valore del contenuto della casella sia dagli ingressi Q1 e Q0. Per J0 e K0 avremo:

J0 Q1/Q0 0 1 0 X0 X4 1 X X Q1/Q0 0 1

K0 0 X X 1 X2 * X3 1

Come si vede in K0 non possiamo accorpare l'uno con X2 nand X3 (infatti questa espressione pu valere uno o zero). Avremo pertanto: J0 = X0*Q1 + X4*Q1 K0 = X2 * X3*Q1 + Q1 Ora possiamo disegnare il circuito elettrico dell'automa: 7

Q1/Q0 0 1 0 X1 nor X2 X1*notX2 1 X X Volendo raccogliere gli uni possiamo accorpare la cella 00 con la 10 che contiene X ricordandoci che necessario moltiplicare il risultato per il valore dei Q che non cambiano nellaccorpamento,(in questo caso Q0 negato per il primo e Q0 per il secondo). Perci J1 sar pari a: J1 = (X1 nor X2)*notQ0 + (X1*notX2)*Q0 (E possibile semplificare applicando pi volte il teorema di De Morgan. Viene lasciato come esercizio) La mappa per K1 risulta simmetrica di quella di J1: Q1/Q0 0 1 0 X X1 + X2 1 X NotX1 + X2

Dopo vari passaggi si trova K1 = not J1 (anche qui sono possibili ulteriori semplificazioni usando il teorema di De Morgan.provare). Analogamente per J0 avremo: Q1/Q0 0 1 0 X1*notX2 notX1 *not X2 1 X X

Semplificando si pu ottenere: J0 = X2 + (X1 ex-nor Q1) Per K0 avremo: Q1/Q0 0 1 e K0 = not J0 Alla fine del progetto si disegna il circuito completo dellautoma, in questo caso realizzato con due FF JK con gli ingressi ottenuti dalle funzioni risultanti dalla semplificazione con le mappe K. La verifica finale si effettua partendo da uno stato qualsiasi e applicando tutte le possibili combinazioni degli ingressi: se il circuito segue fedelmente il diagramma degli stati (o se si preferisce la tabella di eccitazione) associato allautoma il progetto terminato e si pu passare alla realizzazione del prototipo. 0 X X 1 NotX1 + X2 X1 + X2

You might also like