bitGateLab Digital · Impara
Italiano
Apri il simulatore

Impara › Argomento 9

Latch e flip-flop: SR, D, JK e T passo dopo passo

7 min di lettura · Team bitGateLab

Finora le uscite dei tuoi circuiti dipendevano soltanto dagli ingressi del momento. Per contare, conservare un dato o ricordare a che punto è un processo ti serve la memoria, e la cella di memoria più piccola è il latch. Qui costruirai un latch con due porte, lo trasformerai in un flip-flop attivato sul fronte e userai le tabelle che ti serviranno per progettare contatori e macchine a stati.

Il latch SR

Due porte NOR con le uscite incrociate verso gli ingressi formano un latch SR. È la retroazione a creare la memoria: una volta che l'uscita assume un valore, si mantiene da sola.

≥1 ≥1 R S Q Q̄
Latch SR con porte NOR: Q = NOR(R, Q) e Q = NOR(S, Q). L'incrocio senza punto non è un collegamento.
SRQ successivoAzione
00QMantenere
010Reset
101Set
11—Vietato

Con S = R = 1 entrambe le NOR forniscono 0, quindi Q e Q smettono di essere complementari. Peggio ancora: se poi i due ingressi scendono a 0 nello stesso istante, lo stato finale dipende da quale porta è più veloce. Per questo tale combinazione è vietata. La sua equazione caratteristica, valida con la condizione S·R = 0, è Q+ = S + R·Q.

Con le porte NAND si ottiene il latch SR, con ingressi attivi bassi: 11 mantiene, 01 porta Q = 1, 10 porta Q = 0 e 00 è la combinazione vietata (entrambe le uscite a 1).

Il latch D: trasparente finché è abilitato

Per eliminare la combinazione vietata si aggiunge un ingresso di abilitazione EN e si generano S = D·EN e R = D·EN. Poiché S e R non valgono mai 1 contemporaneamente, il problema scompare. Il comportamento è semplice:

La trasparenza è il punto debole del latch. Se colleghi l'uscita di un latch, attraverso della logica, al suo stesso ingresso, finché EN = 1 il segnale può fare più giri e il risultato è imprevedibile. Per i circuiti sequenziali sincroni serve qualcosa che catturi il dato in un solo istante.

Flip-flop attivati sul fronte

Un flip-flop D attivato sul fronte di salita copia D in Q unicamente nell'istante in cui il clock passa da 0 a 1. Per il resto del tempo ignora D. Si costruisce con due latch D in cascata (master e slave) con abilitazioni opposte: finché il clock è a 0 il master segue D e lo slave è chiuso; quando il clock sale il master si chiude e lo slave trasferisce all'uscita il valore catturato. La sua equazione è la più semplice: Q+ = D.

A partire dal flip-flop di base si definiscono altri due tipi molto usati nel progetto:

JKQ+Azione
00QMantenere
010Reset
101Set
11QCommutare

Esempio: un flip-flop JK parte da Q = 0 e riceve cinque fronti con (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Applica Q+ = J·Q + K·Q a ciascuno:

  1. (1,0), Q = 0: 1·1 + 1·0 = 1.
  2. (0,0), Q = 1: 0·0 + 1·1 = 1 (mantiene).
  3. (1,1), Q = 1: 1·0 + 0·1 = 0 (commuta).
  4. (0,1), Q = 0: 0·1 + 0·0 = 0.
  5. (1,1), Q = 0: 1·1 + 0·0 = 1 (commuta).

Sequenza di Q dopo ogni fronte: 1, 1, 0, 0, 1.

Tabelle di eccitazione

La tabella caratteristica risponde alla domanda "dati gli ingressi, dove va Q?". Per progettare serve la domanda inversa: "voglio che Q passi da questo valore a quest'altro, quali ingressi applico?". Questa è la tabella di eccitazione, e la userai in ogni contatore e macchina a stati.

Q → Q+DTJ KS R
0 → 0000 X0 X
0 → 1111 X1 0
1 → 001X 10 1
1 → 110X 0X 0

Le X del JK sono il motivo per cui questo flip-flop dà di solito equazioni più corte: per passare da 0 a 1 è indifferente che K valga 0 (set) o 1 (commutazione), e questa libertà si sfrutta nella mappa di Karnaugh.

Tempi di setup, hold e frequenza massima

Un flip-flop reale richiede che D sia stabile per un certo tempo prima del fronte, il tempo di setup (tsu), e che resti stabile per un certo tempo dopo, il tempo di hold (th). Se D cambia all'interno di questa finestra, l'uscita può restare per un po' a un livello intermedio prima di decidersi: è la metastabilità. Inoltre, l'uscita impiega un ritardo tCQ per cambiare dopo il fronte.

In un circuito sincrono il segnale esce da un flip-flop, attraversa la logica combinatoria e arriva al successivo. Il periodo minimo del clock è:

Tmin = tCQ + tlogica + tsu

Esempio: tCQ = 15 ns, il percorso combinatorio più lungo impiega 20 ns e tsu = 5 ns.

Tmin = 15 + 20 + 5 = 40 ns, quindi fmax = 1 / 40 ns = 25 MHz.

Per l'hold si usa il percorso più corto: se il tCQ minimo è 5 ns e non c'è logica tra due flip-flop, il nuovo dato arriva 5 ns dopo il fronte. Con th = 3 ns la condizione è rispettata, perché 5 ns ≥ 3 ns.

Il setup limita la frequenza e si risolve rallentando il clock. L'hold non dipende dalla frequenza: se non è rispettato, il circuito non funziona nemmeno a velocità molto bassa.

Errori comuni

Provalo nel simulatore

La differenza tra latch e flip-flop si vede subito in un diagramma temporale. Costruiscili entrambi e pilotali con lo stesso segnale.

  1. Inserisci due porte NOR e collega l'uscita di ciascuna a un ingresso dell'altra; aggiungi gli ingressi S e R e due indicatori.
  2. Cambia S e R per verificare le quattro righe della tabella, compresa quella vietata, e osserva che Q e Q valgono 0 contemporaneamente.
  3. Inserisci un latch D e un flip-flop D, e collega a entrambi lo stesso ingresso dati e lo stesso segnale di clock o di abilitazione.
  4. Apri il cronogramma e cambia D più volte mentre il clock è a 1: il latch segue i cambiamenti e il flip-flop prende soltanto il valore presente sul fronte di salita.
  5. Ripeti con un flip-flop JK con J = K = 1 e osserva come la sua uscita abbia metà della frequenza del clock.

Esercizi

  1. Un flip-flop T parte da Q = 1 e riceve T = 1, 1, 0, 1 su quattro fronti. Quali valori assume Q?
    Risposta

    Q+ = T ⊕ Q: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. Sequenza: 0, 1, 1, 0.

  2. Quali valori di J e K ti servono perché un flip-flop passi da Q = 1 a Q = 0?
    Risposta

    J = X, K = 1. Con K = 1 e J = 0 si esegue il reset; con J = K = 1 si commuta. Entrambe le scelte portano Q a 0.

  3. Con tCQ = 12 ns, tsu = 4 ns e una frequenza desiderata di 40 MHz, quanto può impiegare al massimo la logica tra i flip-flop?
    Risposta

    T = 1 / 40 MHz = 25 ns. tlogica ≤ 25 − 12 − 4 = 9 ns.

  4. Scrivi l'equazione di D affinché un flip-flop D si comporti come un JK.
    Risposta

    D = J·Q + K·Q, che è l'equazione caratteristica del JK.

Con questi elementi puoi passare ai contatori e registri e poi alle macchine a stati.