Skip to content

Circuiti sequenziali, latch D e flip-flop

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.

Vogliamo creare un circuito che accende e spegne una caldaia a seconda del valore della temperatura TT.

Definiamo 2 ingressi:

  • HH sarà 11 quando T>TmaxT > T_\text{max}
  • LL sarà 11 quando T<TminT < T_\text{min}

Si può creare la tabella della verità:

HLC
00?
011
100
11-

Non si può mai verificare il caso in cui H=L=1H = L = 1. Inoltre, bisogna stabilire cosa mettere per H=L=0H = L = 0:

  • Se la tengo spenta:

    Temperatura a caldaia spenta

  • Se la tengo accesa:

    Temperatura a caldaia 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:

Circuito caldaia con ritorno dell'output


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.

Separazione tra parte combinatoria e memoria

  • 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.

Il latch D è un componente che si comporta come una porta:

  • Quando C=1C = 1, la porta è aperta e l’uscita segue le variazioni dell’ingresso DD.
  • Quando C=0C = 0, la porta è chiusa e l’uscita diventa l’ultimo valore su DD prima che CC sia passato a 00.

Simbolo di latch D

Esiste anche un’altra variante, detta a clock attivo basso, con l’ingresso C negato, che quindi lascia passare il valore in ingresso se C=0C = 0.

Il latch D può essere usato come cella di memoria per un circuito sequenziale. Si collegano i pin DD e QQ alla rete combinatoria e il pin CC 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;

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.

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.

Clock con fase attiva simmetrica e accorciata

Problema: per accorciare la lunghezza del duty cycle occorre un segnale con banda maggiore, e quindi una maggiore potenza. Questo fa alzare i costi.

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.

Circuito del flip-flop

  1. Quando C=1C = 1 il master si apre ed è trasparente, quindi segue il valore in ingresso. Il valore in uscita non cambia perché lo slave è chiuso.
  2. Quando C=0C = 0 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 DD viene memorizzato quando il clock scende a 00;
  • positive edge triggered: il valore su DD viene memorizzato quando il clock sale a 11;

Simbolo circuitale del flip-flop con 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 00.

  • Se S=0S = 0, QQ va a 11;
  • Se R=0R = 0, QQ va a 00;

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.

Lo stato corrispondente al ciclo nn-esimo del clock viene indicato con X(n)X(n). Quello futuro Y(n)=X(n+1)Y(n) = X(n + 1) dipende sia dal valore degli ingressi (IN(n)IN(n)), sia dal valore corrente dello stato:

Y(n)=Δ(IN(n),X(n))Y(n) = \Delta(IN(n), X(n))

Le uscite del circuito OUT(n)OUT(n) dipendono dagli ingressi e dallo stato secondo una funzione combinatoria (Λ\Lambda)

OUT(n)=Λ(IN(n),X(n))OUT(n) = \Lambda(IN(n), X(n))

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à:

Tabella degli stati della caldaia

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

Tabella degli stati semplificata