Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Macchine Sequenziali: Combinatori, Stati Finiti, Automi di Moore - Prof. Rizzi, Sbobinature di Sistemi Digitali

Il concetto di macchine sequenziali in informatica, con particolare attenzione ai combinatori, alle macchine a stati finiti e agli automi di moore. Le caratteristiche di queste macchine, i loro tipi, le loro funzioni e le loro applicazioni. Viene anche discussa la minimizzazione del numero di stati e la tabella di flusso per la progettazione di macchine sequenziali.

Tipologia: Sbobinature

2024/2025

Caricato il 15/04/2025

annunziata-d-aversa
annunziata-d-aversa 🇮🇹

4.5

(2)

23 documenti

1 / 30

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SED_B
Si dividono in due fondamentali categorie:
!1. COMBINATORI: il valore dell'uscita dipende solo dal valore dei bit applicati in ingresso (ovviamente
ipotizzando un circuito ideale che non abbia ritardo dipeso dalla complessità dell'hardware, dove la fanno da
padrona sui ritardi i piani di logica che devono essere attraversati);
!
!2. SEQUENZIALI: il valore dell'uscita dipende anche dal suo stato precedente.
Sono circuiti dotati di memoria, tengono conto di quello che sta succedendo, delle evoluzioni e della storia del
circuito, ovvero lo stato del circuito - la condizione in cui si trova un circuito (cioè il suo stato) dipende dalla storia
passata (gli ingressi precedenti). Le uscite ad un certo istante di tempo t non saranno solo funzione degli ingressi
nell'istante t, ma anche dello stato della macchina in quello stesso istante di tempo.
Lo stato diventa un nuovo ingresso alla macchina, un ingresso interno, che in qualche modo condiziona l'uscita.
Questo implica che il dispositivo ha memoria degli eventi passati e l'informazione relativa al contenuto di questa
memoria è rappresentata dal concetto di stato.
Le reti combinatorie possono essere considerate un caso particolare di sistema sequenziale dove lo stato è unico.
Le macchine dotate di memoria sono anche chiamate macchine a stati finiti, perché il numero degli stati ha una
dipendenza di tipo logaritmico con il numero di elementi di memoria presenti nella macchina, e una relazione
che parte da stati infiniti fa sì che l'hardware abbia elementi di memoria infiniti, e ciò non è realizzabile.
Esistono due tipi di macchine a stati finiti: macchine sequenziali sincrone e macchine sequenziali asincrone.
Nelle macchine sincrone c'è un segnale fornito dall'esterno alla macchina che temporizza il funzionamento
(Clock): la macchina verrà abilitata alla lettura degli ingressi e alla commutazione da questo segnale (la macchina
è controllata ed è prevedibile quando cambierà di stato e darà l'uscita che interessa).
Le macchine asincrone sono macchine non controllate da niente, non esiste un segnale di temporizzazione
esterno che abilita il cambiamento di stato della macchina: non appena cambieranno gli ingressi la macchina
leggerà gli ingressi e cambia di stato; siccome gli ingressi sono aleatori, la gestione e la progettazione di una
macchina asincrona diventa più complicato.
STRUTTURA GENERALE DI UNA MACCHINA SEQUENZIALE (SCHEMA DI HUFFMAN)
Circuiti sequenziali digitali
Ci sono due macro-blocchi:
!- La parte combinatoria
!- La parte di memoria
La parte combinatoria ha degli ingressi
esterni (che si possono gestire) e produrrà un
certo numero di uscite (non è detto che siano
dello stesso numero degli ingressi).
La parte combinatoria e la parte di memoria
sono legate tramite una retroazione: il
ritardo dovuto alla retroazione svolge
proprio la memoria, poiché mantiene il dato
per un certo tempo.
Pur non avendo elementi di memoria, un circuito retroazionato è comunque un circuito sequenziale.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Anteprima parziale del testo

Scarica Macchine Sequenziali: Combinatori, Stati Finiti, Automi di Moore - Prof. Rizzi e più Sbobinature in PDF di Sistemi Digitali solo su Docsity!

SED_B

Si dividono in due fondamentali categorie:

  1. COMBINATORI : il valore dell'uscita dipende solo dal valore dei bit applicati in ingresso (ovviamente ipotizzando un circuito ideale che non abbia ritardo dipeso dalla complessità dell'hardware, dove la fanno da padrona sui ritardi i piani di logica che devono essere attraversati);
  2. SEQUENZIALI : il valore dell'uscita dipende anche dal suo stato precedente. Sono circuiti dotati di memoria, tengono conto di quello che sta succedendo, delle evoluzioni e della storia del circuito, ovvero lo stato del circuito - la condizione in cui si trova un circuito (cioè il suo stato) dipende dalla storia passata (gli ingressi precedenti). Le uscite ad un certo istante di tempo t non saranno solo funzione degli ingressi nell'istante t, ma anche dello stato della macchina in quello stesso istante di tempo. Lo stato diventa un nuovo ingresso alla macchina, un ingresso interno, che in qualche modo condiziona l'uscita. Questo implica che il dispositivo ha memoria degli eventi passati e l'informazione relativa al contenuto di questa memoria è rappresentata dal concetto di stato. Le reti combinatorie possono essere considerate un caso particolare di sistema sequenziale dove lo stato è unico. Le macchine dotate di memoria sono anche chiamate macchine a stati finiti, perché il numero degli stati ha una dipendenza di tipo logaritmico con il numero di elementi di memoria presenti nella macchina, e una relazione che parte da stati infiniti fa sì che l'hardware abbia elementi di memoria infiniti, e ciò non è realizzabile. Esistono due tipi di macchine a stati finiti: macchine sequenziali sincrone e macchine sequenziali asincrone. Nelle macchine sincrone c'è un segnale fornito dall'esterno alla macchina che temporizza il funzionamento (Clock): la macchina verrà abilitata alla lettura degli ingressi e alla commutazione da questo segnale (la macchina è controllata ed è prevedibile quando cambierà di stato e darà l'uscita che interessa). Le macchine asincrone sono macchine non controllate da niente, non esiste un segnale di temporizzazione esterno che abilita il cambiamento di stato della macchina: non appena cambieranno gli ingressi la macchina leggerà gli ingressi e cambia di stato; siccome gli ingressi sono aleatori, la gestione e la progettazione di una macchina asincrona diventa più complicato. STRUTTURA GENERALE DI UNA MACCHINA SEQUENZIALE (SCHEMA DI HUFFMAN)

Circuiti sequenziali digitali

Ci sono due macro-blocchi:

  • La parte combinatoria
  • La parte di memoria La parte combinatoria ha degli ingressi esterni (che si possono gestire) e produrrà un certo numero di uscite (non è detto che siano dello stesso numero degli ingressi). La parte combinatoria e la parte di memoria sono legate tramite una retroazione: il ritardo dovuto alla retroazione svolge proprio la memoria, poiché mantiene il dato per un certo tempo. Pur non avendo elementi di memoria, un circuito retroazionato è comunque un circuito sequenziale.

La parte di memoria fornirà dei nuovi ingressi alla parte combinatoria e alcune delle sue uscite diventeranno nuovi ingressi. Oltre agli ingressi esterni che possiamo gestire, la parte combinatoria ha, dunque, anche ingressi interni, che rappresentano lo stato in cui si trova la macchina. Allo stesso modo, produrrà delle uscite apprezzabili all'esterno ed un nuovo stato. Supponendo di avere una macchina sincrona, quando arriva un impulso di clock la macchina verrà abilitata a leggere gli ingressi esterni e lo stato della macchina. Sulla base degli ingressi esterni e dei bit che rappresentano lo stato presente della macchina, fornirà un uscita e la macchina di porterà in una nuova condizione (stato futuro) che verrà memorizzato nella memoria e reso disponibile quando arriverà il successivo impulso di clock, diventando il nuovo stato presente. L'esempio più semplice di memoria è costituito da due semplici NOT in cascata retroazionati: Viene utilizzata maggiormente la seconda configurazione poiché per poter cambiare il dato memorizzato alla prima configurazione devo intervenire sull'hardware, cioè devo aprire il circuito, ma può essere deleterio. Siccome voglio che la mia memoria sia in grado di memorizzare sia gli uni che gli zeri e non voglio intervenire fisicamente ogni volta, si utilizza il secondo sistema che è il più semplice in assoluto.

LATCH TIPO S-R

È un dispositivo costituito da due porte NOR a due ingressi caratterizzato dal fatto che uno dei due ingressi alle due porte sono ingressi esterni e l'altro è la retroazione dell'altra porta. Si chiama S-R perché il dispositivo funziona con SET e RESET.

La porta NOR ha un uno in uscita solo se ha tutti gli ingressi a zero.

Posso battezzare ora U2=Q e U1=Q'. Siccome quando S=1, l'uscita viene portata a 1, S viene chiamato ingresso di SET (settare una variabile vuol dire portarla all'1 logico. R verrà chiamato ingresso di RESET perché quando R=1 cancella (resetta) il contenuto e porta a 0 l'uscita. Questo sistema, però, in realtà ha 3 ingressi : 2 ingressi esterni (S,R) e uno interno (Q). Quello che c'era prima nella macchina viene portato in ingresso. Allora il funzionamento sarà caratterizzato da una tabella a 3 ingressi: EQUAZIONE CARATTERISTICA: espressione booleana in cui viene espresso lo Stato futuro in funzione degli ingressi e dello stato presente della macchina TABELLA DI PILOTAGGIO: una tabella che ci dice quali ingressi devo avere quando dallo stato presente vogliamo spostarci in un certo stato futuro; ci dice come dobbiamo pilotare gli ingressi per fare in modo che da uno stato passo ad un altro.

LATCH SR CON PORTE NAND

Siccome il latch è un sistema funzionalmente completo, si potrebbe anche fare con porte NAND. Qualsiasi circuito può essere trasformabile in logica NAND. Dato questo per vero, facciamo la trasposizione porta a porta in logica NAND. La porta NOR non è altro che una porta OR seguita da un invertitore. Quindi in logica NAND avró una NOR preceduta da due invertitori. Se prendo le uscite Q e Q’ come mostrato nel primo circuito, prima avrò una cascata di due NOT, che posso semplificare, lasciando solo le ultime due porte con l’uscita che vi entra direttamente. Avrò quindi il circuito ottimizzato. I due circuiti, a e b, pur avendo ingressi negati, hanno le stesse uscite. Questo vuol dire che i due latch avranno comportamento duale: il latch b ha la condizione di indeterminazione per 00 (don’t care), per 01 sarà settato (1), per 10 verrà resettato (0), e condizione di determinazione per 11 (Q). GATED LATCH Sono dei dispositivi sempre di memoria, ma sincroni. Questo vuol dire che esiste un segnale di temporizzazione che abilita i cambiamenti di stato. Gli ingressi vengono acquisiti e letti dalla macchina in modo controllato dal clock, temporizzato. Per semplicità useremo un’onda quadra come segnale di clock. Per poter far entrare questo ingresso di temporizzazione sarà necessario mettere due porte logiche AND in cui entrerà il clock e gli ingressi dell’SR avendo quindi un altro piano di logica. Quando il clock è zero, qualunque siano S ed R, quello che entra nel latch sarà sempre zero e mantiene lo stato. Se il clock invece è ad 1, il latch risponderà alla tabella della verità. Questo dispositivo è, quindi, un dispositivo sincrono che gode della proprietà di trasparenza

GATED LATCH JK

Ha come base sempre l’SR. Ha 3 ingressi che sono J, K, e Q retroazionato, che è lo stato futuro: nella AND dove c’è K retroazioniamo Q , nella AND dove c’è J retroazioniamo Q’. Quando Q=0, indipentemente dal valore di K, R=0, perchè è l’uscita di una AND dove vi entra Q=0. J, invece sara uguale a K, perchè se Q=0, Q’=1, che entra nella AND insieme al clock, che se funziona è 1, allora S=J. R=0, S=0, allora mantiene lo stato Q=0. R=0, S=1, in uscita Q= Se Q diventa 1, allora Q’=0, e quindi quello che esce dalla AND di sotto, indipendentemente da J è zero, quindi S=0. Compattando: Quando J e K sono zero, Q=Q+; Quando J=0 e K=1, indipendentemente da Q , l’uscita è 0. Quando J=1 e K=0, l’uscita è 1; Quando J e K sono entrambi 1, quando Q=0, Q+=1 e quando Q=1, Q+=0: commuta la memoria. Quindi possiamo dire che si comporta come un SR nelle prime tre configurazioni (J=S e K=R); cambia in corrispondenza della condizione 11 che nell’SR era indeterminata, qui ha un comportamento deterministico e cambia il contenuto della memoria. Equazione caratteristica: Ci dice come evolve la macchina sulla base degli ingressi. Due implicanti primi essenziali che sono dei subcubi di ordine 1: La tabella di pilotaggio ci dice come dobbiamo pilotare J e K per avere questi cambiamenti di stato. Analizziamo le configurazioni:

  • 00: J è sempre 0, K puó essere qualsiasi = X
  • 01: J è 1, K qualsiasi =X
  • 10: J puó essere qualsiasi e K=
  • 11: J puó essere qualsiasi, K= Ovviamenre questi sono positive level triggered. Quando saranno dei negative, vicino al clock ci andrà il pallino.

LATCH T

T sta per Toggler che vuol dire bilancio, perche il suo funzionamento quando abbiamo due uni in ingresso oscilla in continuazione. Ha sempre come base il JK ed è caratterizzato dal fatto che J e K sono cortocircuitati, cioè sono lo stesso ingresso. Usiamo come base il JK perchè nell’SR la combinazione 11 non è ammissibile e funzionerebbe solo con 1 e 0. Di questa tabella non saranno ammissibili tutte, ma solo le righe in cui J=K:

  • quando J=K=0, Q+ risulta =Q (mantiene lo stato)
  • quando J=K=1, Q+ risulta il complemento di Q (cambia lo stato) L’equazione caratteristica è una XOR tra T e Q Se mantiene lo stato, T=0; Se cambia lo stato T= Potrebbe capitare di voler settare o resettare la macchina indipendentemente dal clock, quindi deve essere possibile poter intervenire sulla macchina, nei dispositivi sincroni, indipendentemente dal clock e portare o ad 1 o a 0 il contenuto della memoria. Per questo motivo esistono due ingressi asincroni accessibili dall’esterno che sono il PRE-SET e il PRE-CLEAR :
  • Qualora forzato (posto ad 1 in logica NOR) il pre-set ha il compito di forzare un 1 in uscita, memorizzare un 1
  • Una volta abilitato, il pre-clear ha la funzione di cancellare il contenuto della memoria, indipendentemente dal clock. Poichè il pre-set setta la macchina, andrà messo in ingresso alla porta NOR dove entra il set. Il clear, invece, andrà in ingresso alla NOR dove entra il reset.

FF MASTER SLAVE

Dispositivo sincrono, ma con un sincronismo molto meno dilatato, di tipo Edge triggered, che viene abilitato al cambiamento di stato sul fronte del clock, cioè quando il clock o sale da 0 a 1 (fronte di salita = positive edge triggered) o quando scende da 1 a 0 (fronte di discesa = negative edge triggered). Il flip flop è un dispositivo che ha dell’hardware dentro, quindi ha bisogno di un certo tempo per leggere il clock che lo abilita per poter funzionare correttamente e leggere gli ingressi. Il clock percorre in modo impulsivo il fronte di salita così come quello di discesa, quindi non avrebbe il tempo il dispositivo di leggere gli ingressi, quindi serve un ritardo per mantenere il clock abilitato e permettere al dispositivo di leggere gli ingressi. Questo ritardo di salita o di discesa, a seconda che il dispositivo sia positive o edge triggered, sarà quello necessario per leggere gli ingressi. Sfruttiamo il ritardo di salita o di discesa per leggere gli ingressi. Il flip flop master slave è costituito da una cascata di due gated latch: uno funziona da master l’altro da slave. Mettiamo due gated latch in cascata in modo tale che le uscite di uno siano gli ingressi del successivo e che il dispositivo sia clockato dallo stesso segnale di temporizzazione, il primo normale e l’altro negato. Chiamamo con C1 il clock che va al primo elemento di memoria e C2 il clock che va al secondo, che è il complemento di C1. Per semplicità di trattazione trascuro il ritardo introdotto dall’invertitore. Considero due positive lever triggered. Supponiamo che inizialmente la condizione memorizzata sia 0 e supponiamo di settare la macchina e di porre J=1 e K=0 (ci aspettiamo un cambiamento di stato). Quando il primo gated latch riesce a leggere l’10, nonappena il clock va ad 1, legge 10 e mi da un 1 in Q1. Questo 1 arriva nel secondo latch e si ferma perchè il C2 risulta 0. Q1=1 rimane là finchè lo slave non viene abilitato alla lettura dal clock, cioè nonappena il C2 sale. Avremo quindi Q2=Q=1. Vedrò che l’uscita cambia rispetto alla variazione degli ingressi quando il clock è sul fronte di discesa. Partendo da due level triggered abbiamo realizzato un negative edge triggered, che commuta sul fronte. Se volessi fare un positive edge triggered, mi basterebbe negare il clock.

FF MASTER SLAVE A MUX

I flip flop edge triggered vengono realizzati producendo, o fisicamente, o funzionalmente, la derivata del segnale di clock. Genera un impulso (fisico o funzionale) in corrispondenza di un fronte. I fattori che differenziano i bistabili sincroni riguardano due aspetti:

  • la realzione ingresso-stato (i due ingressi sono efficaci)
  • la relazione stato-uscita (quando vengono modificate le uscite)

TIPI DI AUTOMI

Struttura generale di una macchina sequenziale (Huffman):

  • un alfabeto di ingresso (simbolo I ), contenente tutti i possibili simboli (cioe configurazioni binarie) che la macchina può ricevere in ingresso; se n sono gli ingressi, l’insieme I sarà costituito da 2^n simboli di ingresso cioe 2^n configurazioni binarie;
  • un alfabeto di uscita (simbolo U ), contenente tutti i possibili simboli che la macchina puó fornire in uscita; se m sono le uscite, l’insieme U sarà costituito da 2^m simboli di uscita , cioè 2^m configurazioni binarie;
  • un insieme degli stati (simbolo S ), contenente tutti i possibili stati (individuati ciascuno da una configurazione binaria) in cui la macchina può trovarsi; se N è il numero di stati, cioè il numero di elementi di S, allora servono k variabili di stato per rappresentarli, dove 2^k >= N; Una funzione che trasforma lo stato presente nello stato successivo, in funzione del simbolo di ingresso applicato: se indichiamo con delta tale funzione, sarà una funzione del tipo delta: I*S --> S; ovviamente, questa funzione gode della proprietà di chiusura, nel senso che, data una qualsiasi coppia (x,y) € (I,S), essa fornisce comunque un elemento z€S; in termini ancora più formali, possiamo affermare che, se x(t) è il valore di ingresso all’istante t e delta(t) è lo stato all’istante t, allora lo stato all’istante t+1 sarà
  • infine una funzione che consenta di determinare l’uscita all’istante t, noto che l’istante t, noto che sia lo stato all’istante t (nel caso della macchina di Moore) ed eventualmente anche l’ingresso all’istante t (nel caso della macchina di Mealy): Dove ovviamente con s(t) abbiamo indicato lo stato all’istante t e con x(t) l’ingresso all’istante t.

Supponiamo di avere una macchina a stati finiti che risulta essere caratterizzata da un solo ingresso e una sola uscita. L’ingresso è una sequenza di bit comunque nulla e idem l’uscita. La macchina ha il compito di riconoscere la sequenza (riconoscitore di sequenza). Nonappena arriva la sequenza 011, la macchina che normalmente ha l’uscita zero, deve commutarla a 1. Sintesi di una FSM sincrona: dalle specifiche al diagramma di flusso Arriva il primo fronte di clock, la macchina elabora l’ingresso, fornisce l’uscita, si porta in un nuovo stato ed è pronta per il successivo impulso di clock, dove legge l’ingresso, lo elabora, produce l’uscita ecc.. I vari impulsi di clock, quindi, devono essere opportunamente distanziati per fare in modod che venga prodotta l’uscita e dia il giusto risultato. Automa di Mealy Supponiamo che l’uscita sia funzione dello stato e dell’ingresso. Questo dignifica che dovremo legare l’uscita allo stato in cui si trova la macchina, ma anche agli ingressi che in quel momento riusciamo ad applicare. Diamo un significato agli stati cercando di metterne meno possibile perchè dal numero di stati dipenderà il numero degli elementi di memoria e quindi la complessità della macchina. Stato A = non è arrivato alcun bit utile per la sequenza (deve arrivare 0) Se arriva 1, ritorno in A perchè non è utile per la sequenza, con uscita 0. Se arriva 0, vuol dire che è arrivato il primo bit utile della sequenza e mi sposto in un altro stato B, con uscita 0. Stato B = è arrivato il primo bit utile (0). Se arriva 0, la sequenza si è interrotta, ma questo secondo zero è come se fosse il primo bit utile per la sequenza ( “nonappena riconosce”) quindi rimango in B, con uscita 0. Se arriva 1, è il secondo bit utile alla sequenza, mi sposto in un altro stato C con uscita 0. Stato C = è arrivato il secondo bit utile (1). Se arriva 0, lo utilizzo come primo bit della sequenza e la macchina si riporta nello stato “è arrivaro il primo bit utile”, cioè lo stato B, con uscita 0. Se arriva 1, chiudo la sequenza e produco un 1 in uscita, la macchina si resetta portandosi nello stato A con uscita 1. Automa di Moore In questo caso, l’uscita non dipende dall’ingresso, ma è solo funzione dello stato. Stato A = non è arrivato alcun bit utile e l’uscita è 0. Se arriva 1, non è utile all’inizio della sequenza e rimango in A. Se arriva 0, è arrivato il primo bit utile e mi sposto nello stato B. Stato B = è arrivato il primo bit utile e l’uscita è 0. Se arriva 0, è sempre il primo bit utile e rimango in B. Se arriva 1, è arrivato il secondo bit utile della sequenza e la macchina si porta nello stato C. Stato C = è arrivato il secondo bit utile con uscita 0 Se arriva 0, torno in B perchè è il primo bit utile. Se arriva 1, è il terzo bit utile e mi sposto in D. Stato D = è arrivato l’ultimo bit utile e l’uscita è 1 Se arriva 0, torno in B. Se arriva 1, torno in A e ricomincio la sequenza.

Minimizzazione del numero di stati Lo scopo della riduzione del numero degli stati consiste nell’individuare la macchina minima equivalente a quella data. La macchina minima equivalente è quella macchina che è funzionalmente equivalente a quella data ed ha il numero minimo di stati. La macchina M1 è equivalente a M2 quando, in corrispondenza degli stessi ingressi, qualunque essi siano, produce la stessa uscita. Si ed Sj di una macchina M sono distinguibili se esiste almeno una sequenza finita di ingresso che applicata ad M produca sequenze di uscita diverse a seconda che si consideri Si o Sj come stato iniziale. Se la sequenza di ingresso è lunga k bit, gli stati Si e Sj si dicono k-distinguibili. Gli stati che non sono k-distinguibili sono detti k-equivalenti. Se gli stati sono k-equivalenti, qualunque sia k, sono equivalenti. Il mio obiettivo è lasciare nella macchina solo gli stati distinguibili e togliere gli stati equivalenti, perché non mi danno un’informativa differente sul comportamento della macchina, ma potrebbero implicare un numero di elementi di memoria in più. Si e Sj di una macchina M sono equivalenti se applicando ad M una qualsiasi sequenza di ingresso, comunque lunga, si produce la stessa sequenza di uscita, indipendentemente che sia Si e Sj lo stato iniziale di applicazione alla sequenza di ingresso. L’equivalenza tra stati è una relazione di equivalenza. Formalmente, una relazione di equivalenza induce sull’insieme degli stati una partizione di equivalenza tale che:

  • due stati appartengono alla stessa classe se e solo se sono equivalenti
  • due stati appartengono a classi diverse se e solo se non sono equivalenti
  • l’insieme S si dice partizionato nelle m classi C1, ... , Cm se: Esempio: Supponiamo di avere una macchina M1 sintetizzata con automa di Mealy (ha un’uscita che varia a seconda degli ingressi). La macchina ha 8 stati, ma vediamo se c’è qualche stato equivalente che posso omettere. Vado ad analizzare le coppie di stati. Analizzo gli stati 2 e 3. Aldilà degli stati futuri, in corrispondenza di x=0 mi danno uscite diverse (una è 0 e una è 1). Questo stati sicuramente sono distinguibili perchè producono uscita diversa. Gli stati 3 e 4. Per x=0 hanno entrambi uscita 1, per x=1 hanno tutti e due uscita 0, quindi potrebbero essere equivalenti ( uno-equivalenti). Devo vedere se per sequenze di bit più lunghe rimangono equivalenti o distinguibili, quindi devo cercare gli n-distinguibili per n lunga. Per fare questo, devo realizzare una tabella triangolare che ci permette di analizzare in modo iterativo le nostre equivalenze.

Metodo della tabella triangolare Vado ad individuare le classi di stati più grandi equivalenti tra di loro (classi di massima equivalenza = il più grande insieme di stati equivalenti tra di loro). È triangolare e non quadrata per la proprietà riflessiva (1 e 1 sono equivalenti) e proprietà simmetrica ( se 1 e 2 sono equivalenti, lo sono anche 2 e 1). Per trovare il massimo equivalente devo verificare se l’unione delle coppie mi da tutti gli stati della macchina e che l’intersezione sia nulla. Inoltre, per la relazione di equivalenza deve valere anche la proprietà transitiva: se ho 1,2 e 1,5 se non ho sbagliato a realizzare la tabella, sicuramente devo trovare anche 2,5, se non lo trovo vuol dire che ho sbagliato qualcosa nell’analisi della tabella. A questo punto posso realizzare l’equivalente 1,2,5 che è costituito da stati tra di loro a coppie tutti equivalenti. Ci sono poi 3,6 e 3,7 quindi ci deve essere anche 6,7. L’equivalente sarà quindi anche 3,6,7. Inoltre consideriamo 4,8 da solo. Ora, quali saranno gli stati che andremo a considerare gli stati della macchina minima? Quelli che godono di due proprietà:

  1. L’unione ci deve dare tutti gli stati della macchina.
  2. L’intersezione tra questi stati equivalenti deve dare un insieme vuoto.

Assegnamento Siccome lo stato è la situazione in cui si trova la macchina, il contenuto della memoria, e noi sappiamo che i flip flop possono memorizzarei dei bit 0 e 1, allora la fase di assegnamento consiste nell’andare a codificare gli stati tramite un codice costituito dal n di bit che dipenderà da quanti sono gli stati. Nella macchina minima abbiamo tre stati, che devono essere distinguibili, ovvero devono dire cose diverse. Quindi andremo a codificare i tre stati con tre codici diversi. Per fare ciò avremo bisogno di minimo due bit. Esiste una codifica ottima per fare in modo che la parte combinatoria costi il meno possibile, ci sono metodi che permettono di ottimizzare la parte combinatoria, ma sono lunghissimi e molto spesso non producono grandissimi risultati. Per questo non li facciamo, tanto comunque il circuito funziona lo stesso. Codifico A con 00, B con 01 e C con 10. Questo vuol dire che quando sto nello stato A, in un flip flop c’è 0 e nell’altro 0, quando sono in B in uno c’è 0 e nell’altro 1 ecc. Quindi quando si va a codificare, il numero di bit sarà sicuramente uguale al numero di flip flop. Scelta dell’elemento di memoria Si può scegliere qualsiasi elemento di memoria, basta che sia un flip flop, perchè voglio un segnale di temporizzazione. Vediamo come la scelta del flip flop impatta sulla macchina. Supponiamo inizialmente di scegliere un flip flop di tipo D. Questo flip flop è caratterizzato dal fatto che lo stato futuro coincide con l’ingresso. Abbiamo bisogno di due elementi di memoria e quindi di D1 e D2 che coincidono con Y1 e Y2. Possiamo codificare A con 00 perchè i flip flop hanno anche degli ingressi che sono il clear e il preset, con i quali ci assicuriamo che il contenuto precedente della memoria sia stato cancellato e di ripartire da zero. Quindi non è una forzatura, ma si puó fare. Devo andare a sintetizzare tre funzioni (D1, D2 e z) di tre variabili (x, y1 e y2). La z nella sua funzione booleana dovrà contenere lo stato (y1, y2 o tutti e due) e per forza la x perchè macchina di Mealy. Se non la contiene ho sbagliato perchè l’automa è di Moore.

Schema logico