MSF non completamente specificate
Data la seguente tabella degli stati, eseguire l'ottimizzazione e applicare i criteri euristici per la scelta della codifica ottimale da utilizzare per generare la tabella delle transizioni corrispondente. Sintetizzare le funzioni d'uscita corrispondenti. Sintetizzare la funzione di stato prossimo scegliendo il flip-flop da utilizzare.
Il primo passo è quello di ottimizzazione,
ossia
generare la tabella triangolare per verificare se ci sono compatibilità.
Da questo primo passo gli unici nodi che si
possono dire compatibili sono S1 e S2. Ne risulta la seguente tabella:
Ad essa corrisponde il seguente grafo di compatibilità: Per identificare i gruppi di
stati compatibili bisogna seguire la seguente regola: Nel nostro caso il sottografo completo (ossia avente tutti i collegamenti interni) è formato da S0 S1 S2 e i nodi interessati dai suoi vincoli sono S1 e S3, cancello S0 e S2 perchè non interessati. Il grafo rimanente ha come unico sottografo completo S1 S3, il suo vincolo è S0 S2, tale vincolo è già rispettato dal primo sottografo scelto, ossia S0 S1 S2. Cancello dal grafo i nodi S1 e S3 perchè non interessati dai vincoli in considerazione. Rimangono solo i nodi isolati S4 e S5 che vanno presi singolarmente. Si delinea quindi un
raggruppamento del tipo A={S0,S1,S2} B={S1,S3} C=S4 D=S5. Bisogna controllare
che questo raggruppamento rispecchi i vincoli:
S3S1 è rispettato perché esiste B, S0S2 è rispettato perché è compreso in
A. Può sorgere il problema di come
gestire S1 visto che appartiene a due gruppi, si applicano alcune euristiche
che risultano utili al momento della
scelta della codifica migliore per gli
stati.
Applicando queste euristiche, deriva la seguente tabella degli stati ottimizzata:
Ora bisogna scegliere una codifica
per gli stati.
Ad ogni coppia di stati che
rispetta uno dei criteri, si attribuisce una
marca per ogni loro occorrenza lungo la
tabella. Applicando il primo criterio si ottengono le seguenti marche (divise per colonna considerata):
Applicando il secondo criterio si ottengono le seguenti marche (divise per riga considerata):
Sommando i contributi dei due criteri si ottengono le seguenti marche:
E' utile rappresentare graficamente questa situazione: E' necessario spezzare qualche
lato per ottenere una configurazione adatta alla scelta della codifica. Si ottiene quindi la seguente codifica:
Si ottiene in questo modo la tabella delle transizioni della macchina a stati finiti:
A questo punto è possibile sintetizzare
le funzioni d'uscita della macchina a
stati, ossia le reti combinatorie che determinano il valore di ognuno dei bit
dell'uscita. Le due funzioni d'uscita hanno le seguenti mappe di Karnaugh:
Per sintetizzare la rete combinatoria di stato prossimo invece è necessario scegliere il tipo di flip-flop da utilizzare. NOTA: La funzione d'uscita non dipende dal tipo di bistabile scelto, mentre la finzione di stato prossimo sì. NOTA: Se il bistabile scelto è il flip-flop D non serve il calcolo della tabella delle eccitazioni della MSF perchè essa coincide con la tabella delle transizioni in quando tale flip-flop non fa altro che riportare in uscita il dato che riceve in ingresso al colpo di clock successivo. Se il bistabile scelto non è di
tipo D, bisogna considerare la sua tabella delle eccitazioni.
Utilizzando le tabelle delle eccitazioni dei bistabili è possibile generare la tabella delle eccitazioni della MSF. Tale tabella è generata a partire dalla tabella delle transizioni della MSF, infatti quest'ultima ha sulle righe i valori dello stato attuale e all'interno delle celle i valori dello stati prossimo. Per generare la tabella delle eccitazioni, si sostituisce nella tabella delle transizioni lo stato prossimo con i valori degli ingressi del bistabile che portano a generare quello stato prossimo a partire da quello stato attuale. Scegliendo per esempio di realizzare la tabella delle eccitazioni della MSF in considerazione con un flip-flop di tipo T, il risultato è il seguente:
Per ottenere questa tabella da quella delle transizioni non si è fatto altro che eliminare le codifiche degli stati prossimi all'interno delle celle e sostituirle con una nuova codifica di 2 bit. Questa nuova codifica rispecchia il comportamento degli ingressi dei bistabili T necessari a memorizzare lo stato. In particolare, chiamando a e b i due bit della nuova codifica, a=0 sse Q1=Q1* e b=0 sse Q2=Q2* . a=1 e b=1 altrimenti. Dove Qi* è l'i-esimo bit dello stato prossimo appena eliminato. A questo punto è sufficiente ricavare le due mappe di Karnaugh aventi all'interno delle celle l'i-esimo bit degli ingressi ai bistabili appena creati per poter sintetizzare la rete combinatoria di stato prossimo in grado di controllare i bistabili T. Se si fossero scelti altri tipi di bistabili si sarebbero avute quattro mappe di Karnaugh in quanto gli ingressi da controllare sarebbero stati 4, o due S e due R, oppure due J e due K.
|
|
|
|