Nella configurazione 00 non abbiamo elementi forzanti
Per cui se abbiamo s = 0 e r = 0 i NOR non riescono a determinare i valori di uscita. Che s = 0 e r = 0 siano due elementi neutri significa che il circuito originario con due zeri fissi in ingresso è come se fosse un circuito che al posto dei due NOR ha due NOT perché gli elementi neutri fissi sono ingressi che posso rimuovere, se io li collegassi a massa, il NOR diventerebbe un NOT. Questa rappresentazione vale solo se s = 0 e r = 0.
Per ipotesi, se le uscite di questo nuovo circuito fossero 0 e 1 cosa succederebbe? Lo 0 verrebbe negato e quindi rafforzerebbe l'1 e l'1 verrebbe negato e rafforzerebbe lo 0, viceversa se per ipotesi le uscite fossero 1 e 0. Quindi questa è una situazione plausibile, stabile, e troverei una tabella della verità:
y | y' |
---|---|
0 | 1 |
1 | 0 |
Se invece le uscite fossero 0 e 0 questi valori devono venire negati e quindi avremo 1 e 1, ma analogamente, se le uscite fossero 1 e 1 questi...
valori devono venire negati e quindi avremo di nuovo 0 e 0, e così via. Quindi questa configurazione non sarebbe stabile, cioè se il circuito avesse una simmetria perfetta e si trovasse ad avere in un certo momento 00 in uscita si entrerebbe in un loop infinito in cui si alternano 00 e 11. Questo nella realtà non accadrà mai perché non esiste un circuito perfettamente simmetrico. Quindi il circuito non andrà mai in loop ma entrerà in una delle due condizioni stabili descritte dalla tabella della verità però noi non sapremo determinare quale sia lo stato, cioè non sappiamo più pilotare o precedere il circuito, per cui la configurazione del circuito originale 00 è una condizione in cui non vogliamo finire perché perderemo il controllo sull'uscita del circuito che dipenderebbe da fenomeni involontari (imprecisioni, imperfezioni, ritardi, ... ) e quindi non possiamo condizionare il funzionamento.di un circuito logico che vorremo far funzionare in modo deterministico a qualcosa che invece sfugge al nostro controllo. In corrispondenza della configurazione 00 non sappiamo cosa dire perché abbiamo trovato tre situazioni (una instabile che continua a oscillare il segnale e due stabili) diverse. Quindi questo circuito non può essere un circuito combinatorio.
Se volessimo costruire una tabella della verità esaustiva che ci consenta di completare tutte le righe, dovremmo tener conto del fatto che anche le uscite si comportano anche come degli ingressi e quindi dovremmo mettere y e y' sia a sinistra che a destra della linea verticale che separa le variabili indipendenti da quelle dipendenti.
Circuito sequenziale
Il circuito trattato finora si chiama circuito sequenziale, o meglio una macchina a stati finiti. Le macchine a stati finiti sono delle sestuple (hanno sei elementi) dove gli elementi sono (S, I, O, f, g, s ). Vediamo cosa sono:
0 → S è
l'insieme degli stati in cui questa macchina si può trovare. Si chiama macchina a stati finiti perché l'insieme degli stati S è finito. Lo stato iniziale s appartiene a S.
- I è l'insieme delle possibili configurazioni di ingresso (es: se le variabili sono 2, l'insieme I contiene 4 possibili comandi: 00, 01, 10, 11).
- O è l'insieme delle possibili configurazioni di uscita.
- f è una funzione booleana, detta funzione di uscita (output function). Determina il valore dell'uscita in funzione dell'ingresso e dello stato presente della macchina, f(s, i) = o.
- g è una funzione booleana, detta funzione di stato futuro (next-state function). Ci dice come evolve lo stato della macchina. Determina il valore del prossimo stato che la macchina assumerà in funzione dell'ingresso e dallo stato presente della macchina, g(s, i) = s.
- s è
lo stato iniziale. Immaginiamo di accendere una macchina, se l'evoluzione della macchina e le uscite dipendono dallo stato e dagli ingressi, se noi non conoscessimo lo stato iniziale rischieremmo di non saper descrivere il comportamento della macchina. Se lo stato iniziale non sarà controllabile rischieremo di non poter controllare il comportamento della macchina. Per questo è importante stabilire quale sia lo stato iniziale per fare in modo che la macchina all'accensione si trovi in uno stato noto.
Lo stato della macchina rappresenti la sua memoria di quello che le è accaduto fino a quel momento. Queste macchine si dicono sequenziali perché l'uscita viene determinata dalla configurazione presente degli ingressi e dalla storia pregressa della macchina e quindi una sequenza di eventi in ingresso che la macchina ha subito.
Per rappresentare una macchina a stati finiti è possibile costruire un diagramma degli stati che avrà tanti
che gli stati siano sempre di numero finito è una caratteristica comune a tutte le macchine a stati finiti. Queste macchine possono essere classificate in tre tipi principali: la macchina di Mealy, la macchina di Moore e i circuiti combinatori. La macchina di Mealy è caratterizzata da due funzioni: una funzione di uscita (f) e una funzione di transizione (g). Entrambe le funzioni prendono in input lo stato corrente e l'input e restituiscono l'output e lo stato successivo. In altre parole, la funzione f associa ad ogni stato e input un output, mentre la funzione g associa ad ogni stato e input lo stato successivo. La macchina di Moore, invece, ha solo una funzione di transizione (g) che associa ad ogni stato e input lo stato successivo. La funzione di uscita (f) considera solo lo stato corrente per determinare l'output. In altre parole, la funzione f associa ad ogni stato un output. Infine, i circuiti combinatori sono casi estremi in cui l'output dipende solo dall'input e non dallo stato. Questi circuiti non sono considerati macchine sequenziali, ma rientrano comunque nella classificazione delle macchine a stati finiti. In conclusione, le macchine a stati finiti sono strumenti molto utili per la progettazione di sistemi digitali, in quanto permettono di modellare comportamenti sequenziali e di prendere decisioni in base allo stato corrente.Che dipenda solo dall'ingresso rende lo stato inutile e quindi è inutile considerare degli stati nella macchina e pensare che lo stato evolva. Quindi i circuiti combinatori hanno una funzione f che va dall'insieme degli ingressi all'insieme delle uscite.
Le macchine a stati finiti possono essere sincrone o asincrone. Questo vuol dire che esiste un segnale di sincronismo, cioè qualcosa (come il clock nei sistemi a microprocessore) che scandisce il tempo e non fa cambiare lo stato della macchina in modo arbitrario in qualunque istante possibile, ma lo fa cambiare soltanto in modo sincronizzato al segnale di clock. Quindi in un ciclo lo stato viene calcolato come stato futuro che diventa attuale solo quando scatta il clock. Le macchine sincrone hanno questo segnale di sincronismo.
Esempio con la macchina di Moore
In questo esempio introduco una macchina di Moore rappresentata attraverso il diagramma degli stati.
Schema generale macchina di Moore:
ingressi sono tre e per ogni stato ci interessa studiare il comportamento della macchina a fronte dell'ingresso on, off e test. Il diagramma degli stati non ha più associato anche il valore dell'uscita perché il valore dell'uscita non dipende più univocamente dallo stato in cui ci troviamo ed è questo che rende una macchina una macchina di Mealy. Quindi il valore dell'uscita deve essere associato agli archi e non più ai nodi, perché sono gli archi che in questa rappresentazione dipendono sia dallo stato presente che dagli ingressi che determinano l'attraversamento dell'arco. Per costruire la tabella della verità basta guardare il diagramma degli stati e otteniamo:
Esempio con la macchina stati finiti in codifica binaria
Rappresentazione della macchina a stati finiti tramite diagramma degli stati:
Schema generale di questa macchina:
Se avessimo un circuito di questo tipo descritto da questo diagramma degli stati
in cui s, i ed o sono codificati in termini binari, cioè gli stati, gli ingressi e le uscite li indichiamo non più con lettere ma con sequenze di 0 e 1.