Circuiti sequenziali, latch D e flip-flop
Circuiti sequenziali
Section titled “Circuiti sequenziali”Finora abbiamo visto funzioni booleane, per cui ad ogni combinazione degli ingressi è associato un valore d’uscita. Data la stessa combinazione di ingressi, si ottiene sempre la stessa uscita.
Nei circuiti sequenziali, invece, il comportamento può essere influenzato anche dal risultato delle esecuzioni precedenti.
Circuito della caldaia
Section titled “Circuito della caldaia”Vogliamo creare un circuito che accende e spegne una caldaia a seconda del valore della temperatura .
Definiamo 2 ingressi:
- sarà quando
- sarà quando
Si può creare la tabella della verità:
| H | L | C |
|---|---|---|
| 0 | 0 | ? |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | - |
Non si può mai verificare il caso in cui . Inoltre, bisogna stabilire cosa mettere per :
-
Se la tengo spenta:

-
Se la tengo accesa:

In questo caso servono 2 valori diversi: 1 se si stava già scaldando e 0 se non si stava scaldando. Quindi occorre guardare il valore di output precedente:

I circuiti il cui output varia a seconda della storia dei valori d’uscita precedenti sono detti circuiti sequenziali.
Per realizzarli è necessario creare una memoria, che si realizza riportando l’uscita o un nodo interno all’ingresso. Il valore memorizzato nella memoria viene detto stato del circuito.
Lo stato futuro è il valore uscente dal circuito, che verrà memorizzato per il prossimo calcolo.
È conveniente separare la parte di memoria del circuito in un componente distinto e ben definito.

Circuiti sequenziali sincroni e asincroni
Section titled “Circuiti sequenziali sincroni e asincroni”-
Nei circuiti asincroni lo stato può cambiare ad ogni istante, a causa di un cambiamento dello stato futuro. Ciò può portare a variazioni sugli ingressi o sullo stato presente.
-
Nei circuiti sincroni lo stato viene aggiornato solo in corrispondenza di un certo segnale di sincronizzazione detto clock.
I circuiti sincroni sono più semplici perché non c’è più una dipendenza tra il valore di stato presente e quello futuro. Ciò consente di disaccoppiare la lettura dal calcolo dello stato.
Latch D
Section titled “Latch D”Il latch D è un componente che si comporta come una porta:
- Quando , la porta è aperta e l’uscita segue le variazioni dell’ingresso .
- Quando , la porta è chiusa e l’uscita diventa l’ultimo valore su prima che sia passato a .

Esiste anche un’altra variante, detta a clock attivo basso, con l’ingresso C negato, che quindi lascia passare il valore in ingresso se .
Come usare il latch per memoria
Section titled “Come usare il latch per memoria”Il latch D può essere usato come cella di memoria per un circuito sequenziale. Si collegano i pin e alla rete combinatoria e il pin a un clock che scandirà il ritmo del circuito.
Il circuito passa attraverso 2 fasi:
- clock basso: la rete calcola le nuove uscite e il nuovo stato futuro;
- clock alto: lo stato futuro diventa stato presente e il calcolo ricomincia;
Problemi del latch D
Section titled “Problemi del latch D”Il principale problema del latch D è la sua instabilità durante la fase di clock alto. Se la rete combinatoria è molto veloce, lo stato futuro potrebbe mutare di nuovo finché il clock è attivo, lasciando un valore inaspettato in memoria.
Soluzione
Section titled “Soluzione”La soluzione più semplice sarebbe utilizzare un clock con una fase attiva (duty cycle) molto corta: in questo modo la rete combinatoria non sarà in grado di calcolare un nuovo valore in tempo.

Problema: per accorciare la lunghezza del duty cycle occorre un segnale con banda maggiore, e quindi una maggiore potenza. Questo fa alzare i costi.
Flip-flop edge triggered
Section titled “Flip-flop edge triggered”Il valore di questo tipo di flip-flop cambia solo in corrispondenza delle transizioni del clock, eliminando i problemi legati al lungo periodo in cui il clock rimane attivo.
Per realizzarlo si collegano 2 latch D in cascata, il primo detto master e il secondo detto slave. Non c’è mai un collegamento diretto tra l’ingresso e l’uscita.

- Quando il master si apre ed è trasparente, quindi segue il valore in ingresso. Il valore in uscita non cambia perché lo slave è chiuso.
- Quando il master si chiude e lo slave diventa trasparente. Non ci sono variazioni in uscita perché lo slave ritorna semplicemente il valore memorizzato nel master.
Ci sono 2 varianti del flip-flop:
- negative edge triggered: il valore su viene memorizzato quando il clock scende a ;
- positive edge triggered: il valore su viene memorizzato quando il clock sale a ;
Preset e clear
Section titled “Preset e clear”
È importante inizializzare i circuiti con memoria con un valore noto. Lo si può fare al primo fronte attivo del clock oppure usando segnali asincroni (che hanno effetto immediatamente).
Gli ingressi preset e clear servono a questo. Di solito si attivano portando il valore sull’ingresso corrispettivo a .
- Se , va a ;
- Se , va a ;
Macchine a stati finiti
Section titled “Macchine a stati finiti”Lo stato è l’insieme dei valori contenuti nella memoria del circuito, quindi in generale è un vettore di variabili booleane (ciascuna memorizzata tramite un flip-flop). Ogni variabile dello stato presente ha una corrispondente variabile nello stato futuro.
Durante ogni ciclo del clock lo stato presente non cambia, mentre lo stato futuro viene calcolato dalla rete combinatoria. Il passaggio da uno stato all’altro del circuito si chiama transazione.
Equazioni di stato
Section titled “Equazioni di stato”Lo stato corrispondente al ciclo -esimo del clock viene indicato con . Quello futuro dipende sia dal valore degli ingressi (), sia dal valore corrente dello stato:
Le uscite del circuito dipendono dagli ingressi e dallo stato secondo una funzione combinatoria ()
Tabella degli stati
Section titled “Tabella degli stati”Ritornando all’esempio della caldaia visto in precedenza, possiamo scrivere tutti gli stati che il circuito può assumere in una tabella simile alla tabella della verità:

La tabella si può semplificare: se due righe hanno lo stesso stato presente, stato futuro e uscita, rappresentano la stessa transazione:
