FLIP -FLOP

a cura del prof. Giuseppe Spalierno docente di Elettronica e Sistemi
presso l'I.T.I. "Modesto PANETTI" di BARI

ultima versione: dicembre 2003


1. Premessa
I flip flop sono circuiti digitali sequenziali che hanno il compito di memorizzare un bit.
Un circuito digitale si dice sequenziale se l'uscita dipende dagli ingressi applicati e dallo stato precedente della stessa uscita.
Un circuito sequenziale, pertanto, deve ricordare il suo stato precedente e quindi deve possedere uno o più elementi di memoria.
I circuiti digitali si dividono in due fondamentali categorie:

  1. combinatori (il valore dell'uscita dipende solo dal valore dei bit applicati in ingresso);
  2. sequenziali (il valore dell'uscita dipende anche dal suo stato precedente).

I flip-flop sono noti, anche, come multivibratori bistabili perché ciascuno degli stati logici 0 e 1 può essere reso stabile nel tempo.
I multivibratori si dividono in:

  1. astabili (nessuno stato stabile - ad esempio i generatori di onde quadre);
  2. monostabili (un solo stato stabile - ad esempio i temporizzatori);
  3. bistabili (due possibili stati stabili - ad esempio una cella di memoria).

2. Flip-flop SR (Set-Reset)
Il più semplice dispositivo di memoria è il flip-flop Set-Reset. Esso possiede due ingressi denominati Set e Reset ed una uscita indicata con Q.
I circuiti digitali che realizzano il flip flop sono dotati, spesso, anche dell’uscita Q .
Occorre precisare, inoltre, che in un dispositivo di memoria, l’uscita dipende non solo dalla particolare combinazione assunta dalle variabili di ingresso ma anche dallo stato precedente assunto dall’uscita Q. Tale stato precedente verrà indicato con Qo.

2.1. Flip-flop SR con porte NOR
Alla luce di quanto detto si mostra in figura 1 il simbolo logico, la tabella della verità e la soluzione circuitale a porte logiche NOR di un flip-flop S-R.

Fig.1 – Flip-flop S-R. Simbolo, tabella della verità e soluzione circuitale con porte NOR. 

Combinazione SR=00.
Essa è nota come combinazione di riposo poiché l’uscita conserva lo stato precedente (Q=Qo).

Combinazione SR=01.
Ponendo R=1, l’uscita Q si porta a 0 indipendentemente dallo stato precedente.

Combinazione SR=10.
Ponendo S=1, l’uscita Q si porta a 1 indipendentemente dallo stato precedente.

Combinazione SR=11.
Tale combinazione va evitata poiché da un punto di vista logico è una incongruenza: infatti non ha senso comandare il flip-flop per memorizzare lo 0 (R=1) oppure l’1 (S=1). 

Tale flip-flop viene spesso utilizzato per funzionare nel modo seguente.
Se si vuole memorizzare 1 si pone: S=1 e R=0. Successivamente si torna nello stato di riposo: S=0 e R=0. In tal caso l’uscita conserva lo stato precedente: Q=Qo=1.
Se si vuole memorizzare 0 si pone: S=0 e R=1. Successivamente si torna nello stato di riposo: S=0 e R=0. In tal caso l’uscita conserva lo stato precedente: Q=Qo=0.

Verifichiamo, infine, che il circuito realizzato con le porte NOR in figura 1 si comporta da flip-flop S-R.
Dobbiamo ricordare, a tal fine, la tabella della verità della porta NOR (somma logica negata).

Ponendo S=0 e R=1 si deve verificare che Q=0. Infatti l’uscita Q della porta 2 va a 0 poiché l’ingresso R=1.
La porta 1 risulta pilotata con gli ingressi uguali a 0 per cui la sua uscita va a 1. Si noti che le due uscite sono complementari tra loro.
Torniamo nella combinazione di riposo portando R=0 e lasciando S=0.
Poiché l’uscita Q precedentemente era stata portata a 0 (Qo=0), l’uscita della porta 1 rimane a 1 e di conseguenza l’uscita della porta 2 rimane a 0 (Q=0).

Poniamo, ora: S=1 e R=0. L’uscita della porta 1 va a 0 e di conseguenza, poiché R=0, l’uscita della porta 2 si porta a 1: Q=1.
Torniamo nella combinazione di riposo portando S=0 e lasciando R=0.
Poiché l’uscita Q precedentemente era stata portata a 1 (Qo=1), l’uscita della porta 1 rimane a 0 e di conseguenza l’uscita della porta 2 rimane a 1 (Q=1).

Se, infine applichiamo S=1 e R=1, le uscite di entrambe le porte andranno a 0. Conseguenze: le due uscite, in questo caso, non sono più l’una il complemento dell’altra, ed inoltre portando contemporaneamente S ed R a 0 entrambe le uscite si porteranno ad 1 e poi a 0 e così via. In realtà, a causa dei diversi tempi di ritardo di propagazione del segnale elettrico in ciascuna porta, uno dei due NOR propagherà l’1 in uscita prima dell’altra porta. In conclusione diventa aleatorio il valore dell’uscita Q che, pertanto, potrà trovarsi o a 0 o a 1. Anche per questo motivo è bene evitare l’applicazione dell’ultima combinazione della tabella della verità: S=1 e R=1. 

2.2. Flip-flop a porte NAND
Si riporta in fig.2 lo schema logico del flip-flop realizzato a porte NAND.
Qui gli ingressi sono indicati con le lettere A e B che, sostanzialmente, si comportano come gli ingressi S ed R del precedente flip-flop a porte NOR con la differenza che gli ingressi sono attivi in logica negativa. In altre parole i flip-flop di fig.1 e di fig.2 coincidono nella funzione logica purché si ponga: 

A = S ,   B = R

Ponendo AB=10 si realizza la funzione di reset per cui l'uscita Q si porta a 0.
Ponendo AB=01 si realizza la funzione di set per cui l'uscita Q si porta a 1.
Ponendo AB=11 si realizza la funzione di memoria per cui l'uscita conserva il precedente valore memorizzato.
AB=00 è la combinazione da evitare sia per incongruenza logica sia perché porterebbe entrambe le uscite al valore 1 e quindi non sarebbero una il complemento dell'altra.

Fig.2 – Flip-flop S-R con porte NAND. Soluzione circuitale e tabella della verità . 

 

3. Flip-flop sincronizzati

Spesso l’eventuale cambiamento di stato di un flip-flop non si fa coincidere con l’istante in cui si modificano i valori dei bit di ingresso ma con l’istante in cui un ulteriore ingresso, detto ingresso di sincronismo o ingresso di clock e denominato con la sigla CK, va da 1 a 0 oppure da 0 a 1.
Un flip-flop che funziona col clock prende il nome di flip-flop sincronizzato.
I flip-flop esaminati nelle figure 1e 2, invece, essendo privi di ingresso di clock, sono denominati flip-flop Set Reset asincroni.

Il flip-flop si dice attivo sul livello quando il clock è caratterizzato da un livello logico (0 o 1) applicato all'omonimo ingresso.
Il flip-flop si dice attivo su fronti (edge triggered) quando l'eventuale modifica dello stato di uscita dipende dal fronte positivo o di salita (PET = Positive Edge Triggered) o dal fronte negativo o di discesa (NET = Negative Edge Triggered).
Sui dice, anche, che l'uscita si aggiorna nel:

  1. PET quando il clock passa da 0 a 1;

  2. NET quando il clock passa da 1 a 0.

Fig.3 - Flip-flop sensibili ai livelli ed alle transizioni.
Il flip-flop "a" è sensibile al livello logico 1 e funziona nell'intervallo di tempo t.
Il flip-flop "b" è sensibile al livello logico 0 durante il tempo t.
Il flip-flop "c" è di tipo PET e funziona solo nell'istante t1.
Il flip-flop "d", infine, è di tipo NET e funziona solo nell'istante t1.

 

3.1. Flip-flop S-R sincronizzato
In fig.4 si mostra lo schema logico del flip-flop Set Reset sincronizzato. Esso è costituito da due porte logiche NAND, dette porte pilota, e da altre due porte NAND che realizzano il flip-flop S R vero e proprio del tipo mostrato nella precedente fig.2.

Se il clock CK è al livello logico 1 le porte pilota si comportano da NOT e quindi gli ingressi S ed R sono effettivamente coincidenti con gli omonimi ingressi del generico flip-flop Set Reset.

Se, invece, il clock CK è al livello logico basso, le uscite delle due porte pilota sono al livello logico 1 indipendentemente dai valori applicati agli ingressi S e R. Per tale combinazione la "latch" a porte NAND conserva lo stato precedente e quindi il flip flop è insensibile ai comandi esterni applicati.

Nella tabella della verità si riporta l'uscita futura Qn+1 in funzione del clock, degli ingressi S ed R e dallo stato presente Qn.

X rappresenta indifferentemente sia lo stato logico 0 che lo stato logico 1.

 
CK S R Qn Qn+1
0 X X 0 0
0 X X 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 da evitare
 

Fig.4. - Flip-flop SR sincronizzato con porte NAND.
U1A e U1B costituiscono le porte pilota.
Le porte U1C e U1D rappresentano il flip-flop vero e proprio.
Con Qbar si indica l'uscita Q (Q barrata).

 

4. Flip-flop JK

Il flip-flop JK è un dispositivo a due entrate denominate J e K che operano in modo analogo alle entrate S ed R di un flip-flip Set Reset con la differenza che se : J=1 e K=1 l’uscita commuta, cioè se lo stato presente è 0, lo stato futuro è 1 e viceversa.
Per evitare commutazioni multiple, nel caso si lasci a lungo la combinazione J=1 e K=1, tale flip-flop deve essere necessariamente sincronizzato.

 

 
J K Qn Qn+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
 

Fig.5. – Flip-flop JK e tabelle della verità. A destra si mostra la tabella della verità che prescinde dalla presenza del clock e che mostra l'uscita futura in presenza degli ingressi esterni J e K e dallo stato presente Qn.

In fig.5 si mostrano due flip-flop JK sincronizzati. Il primo adegua le uscite quando al clock si applica un segnale digitale che passa da 0 a 1 (transizione positiva indicata con una freccia verso l’alto nella tabella della verità). Il secondo adegua le uscite quando al clock si applica un segnale digitale che passa da 1 a 0 (transizione negativa indicata con una freccia verso il basso nella tabella della verità).

Il primo flip flop JK si dice di tipo PET (Positive Edge Triggered), il secondo, invece, si dice di tipo NET (Negative Edge Triggered).

I flip-flop JK si realizzano con una soluzione circuitale costituita da porte logiche secondo uno schema interno più complesso rispetto a quello visto per il flip-flop SR realizzato a porte NOR e a porte NAND.

Si mostrano, in fig.6, i simboli logici e le tabelle della verità di due diversi flip-flop JK, il primo di tipo PET ed il secondo di tipo NET, con ingressi asincroni di preset (PRE) e di cleear (CLR).

Fig.6 - Simbolo del flip-flop JK PET e relativa tabella della verità ( a sinistra);
simbolo del flip-flop JK NET e relativa tabella della verità ( a destra).
Si noti il simbolo del clock nei due casi.
La maggior parte dei flip-flop integrati presentano, inoltre, ingressi asincroni di preassegnazione a 1 (PRE) e/o di azzeramento (CLR clear).
Quelli indicati in figura sono attivi bassi: se, ad esempio, si applica un livello logico basso sulla linea PRE, il flip-flop memorizza 1 indipendentemente dal clock; se, invece, si applica un livello logico basso sulla linea CLR, il flip-flop memorizza 0 indipendentemente dal clock.

 

5. Flip-flop D

Presenta un solo ingresso denominato D. Spesso è di tipo sincronizzato e funziona nel seguente modo: quando è attivo l’ingresso di clock l’uscita assume lo stesso valore applicato all’ingresso D. In assenza di comando di clock l’uscita conserva lo stato precedente indipendentemente dal valore applicato all’ingresso D.
In fig.7 si mostra il simbolo logico e la tabella della verità del flip –flop D.
Il flip-flop D rappresenta l’elemento fondamentale delle memorie centrali degli elaboratori ( almeno a livello concettuale).

Fig.7 – Flip-flop D e relativa tabella della verità. 

 

6. Flip-flop T
E' un flip-flop avente una sola entrata denominata T e le solite due uscite: Q e la sua complementata Q.
L'uscita Q conserva lo stato precedente se T=0 e commuta se T=1 quando si applica il segnale di clock.
I flip-flop T, al contrario dei JK, D e SR, non sono disponibili commercialmente in forma  integrata poiché si possono ottenere direttamente dai flip-flop JK semplicemente collegando tra loro gli ingressi J e K.
E'  utilizzato come dispositivo divisore di frequenza di clock per due e nei contatori digitali.
Si mostra in fig.8 il collegamento di un flip-flop NET di tipo JK per ottenere un flip-flop di tipo T e la relativa tabella della verità.

Flip-flop T

Fig.8 -   Simbolo del flip-flop T e relativa tabella della verità.
Dalla tabella si nota che solo quando il clock passa dal livello logico alto al livello logico basso si ha:
 Qn+1=Qn se T=0 e Qn+1=Qn  se T=1.

 

7. Diagramma degli stati
Le possibili modalità di funzionamento di un flip-flop e, più in generale, di qualsiasi circuito digitale con uno o più flip-flop, possono essere descritte in diverse modalità: tabella della verità, equazione caratteristica, tabella delle transizioni, diagramma degli stati. Le varie modalità sono tra loro perfettamente equivalenti per cui da ciascuna rappresentazione è possibile ricavare qualsiasi altra.
In questa sede si vuole ricavare il diagramma degli stati del flip-flop J-K.
Il procedimento per ricavare il diagramma degli stati degli altri flip-flop è del tutto equivalente.

Intanto diciamo subito che per diagramma degli stati si intende una rappresentazione grafica dei vari stati o valori logici che il sistema digitale sequenziale può assumere. Nel caso del singolo flip-flop, che possiede una sola uscita Q, i possibili stati sono due: 0 e 1.
I due valori si inseriscono in altrettanti cerchietti ognuno dei quali rappresenta il punto di arrivo o il punto di partenza di un arco orientato che rappresenta la transizione dello stato interno del circuito.  L'arco orientato è condizionato  dagli ingressi esterni che, per il flip-flop JK, sono gli ingressi J e K.

Fig.9. - L'arco orientato individua il passaggio di stato condizionato dagli ingressi J e K

   In fig.10 si mostra il diagramma degli stati del flip-flop JK. Per poterlo costruire si è tenuta presente la tabella della verità rappresentata nella parte destra della fig.5. Per ogni combinazione si tiene conto dei valori degli ingressi J e K e di quelli dello stato presente Qn e futuro Qn+1.

Per la prima combinazione, ad esempio, si ha: J=K=0 e Qn=Qn+1=0.
Si deve disegnare, pertanto, un arco orientato che parte dallo stato 0 (stato presente Qn) e termina nello stesso stato 0 (stato futuro Qn+1).
Si procede con lo stesso ragionamento per le altre combinazioni.
Per l'ultima combinazione si ha: J=K=1, Qn=1 e Qn+1=0.
L'arco orientato parte dallo stato 1 e termina nello stato 0. Sull'arco orientato si scrivono i due valori degli ingressi J e K: 11.

Fig.10. - Diagramma degli stati del flip-flop JK.

 

8. Tabella delle transizioni
Si indica col nome di tabella delle transizioni la mappa di Karnaugh in cui si inseriscono i valori che assume lo stato futuro Qn+1 dell'uscita  in funzione degli ingressi e dello stato presente Qn. Nel caso del flip-flop JK gli ingressi da considerare sono J e K.

Si mostra, in fig.11, la tabella delle transizioni del flip-flop JK. Essa si ricava dalla tabella della verità di fig.5 o, indifferentemente, dal diagramma degli stati della precedente fig.10.

 

JK

Qn

00 01 11 10
0 0 0 1 1
1 1 0 0 1
Fig.11. - Tabella delle transizioni per un flip-flop JK.
Le celle in cui compare un bit coincidente col valore di Qn (celle con sfondo giallo) rappresentano uno stato stabile poiché un impulso di clock non modifica lo stato di uscita Q.
Sono stabili i due stati della prima colonna (JK=00), lo stato superiore della seconda colonna e lo stato inferiore della quarta colonna. Gli altri sono stati instabili.

La funzione minimizzata che si ricava dalla precedente tabella delle transizioni prende il nome di equazione caratteristica e vale:

Qn+1 = J·Qn + K·Qn

Essa si ricava raggruppando le due celle adiacenti della prima riga in cui compare 1 e le due celle della seconda riga poste in prima e quarta colonna.

 

9. Applicazioni dei flip-flop

I flip-flop trovano applicazione in tutti i circuiti digitali sequenziali, cioè in quei circuiti in cui le uscite, oltre a dipendere dagli ingressi esterni, dipendono anche dallo stato interno assunto in precedenza. In altre parole trova applicazione in tutti i dispositivi di memoria: contatori, centralina dei cancelli automatici, ascensori, lavatrici, antifurto, generatori di sequenze binarie e, in particolare, in tutte le applicazioni di automazione industriale.

9.1. Comandi separati di marcia e di arresto
A titolo d’esempio si mostra in fig.12 un flip-flop SR con ingressi in logica negativa realizzato con due porte NAND comandato da due pulsanti, normalmente aperti, indicati con PM e PA. Il circuito consente i comandi separati per la marcia e l'arresto di apparati di potenza.

Quando i pulsanti sono nello stato di riposo, gli ingressi del flip-flop sono al livello logico alto: l'uscita conserva lo stato precedente.

Per mettere in marcia il circuito di potenza, ovvero porre Q=1, si deve pigiare il pulsante di marcia PM.
Ciò provoca il collegamento a massa del pin 1 e quindi l'uscita Q si porta al livello logico alto: il circuito di potenza viene attivato.
Rilasciando il pulsante l'uscita conserva lo stato Q=1 e l'impianto rimane in marcia.
Per arrestare l'impianto si deve pigiare il pulsante di arresto PA. Ciò provoca il collegamento a massa del piedino 5 e quindi Q=0.
L'impianto si arresta. Rilasciando il pulsante l'uscita conserva lo stato Q=0 e l'impianto rimane nello stato di arresto.

Fig.12. - Flip-flop SR per la marcia e l'arresto di apparati.

9.2. Circuito antirimbalzo
Una variante del circuito precedente consente la realizzazione di un circuito in grado di sopprimere rimbalzi meccanici dovuti ai contatti mobili di interruttori.  I rimbalzi multipli, infatti, generano un numero imprecisato di impulsi indesiderati che potrebbero far funzionare in modo anomalo il circuito dipendente dall'interruttore. Si pensi, ad esempio, al contatore "elimina code" dei supermercati. Quando il salumiere preme il pulsante, il display a due cifre deve mostrare il numero successivo a quello corrente grazie alla presenza di un circuito contatore digitale. Se, però, l'interruttore non è protetto da circuito antirimbalzo, alla pressione dello stesso da parte del salumiere, si generano più impulsi che verrebbero conteggiati e quindi anziché visualizzare il numero successivo, vedremmo sui display un numero sicuramente più grande. Se, ad esempio, il display mostra il numero 30 ed alla pressione dell'interruttore si generano 5 impulsi, il successivo numero visualizzato sul display sarà 35 anziché 31.
Un possibile circuito antirimbalzo si realizza con lo schema logico di fig.13 che impiega un flip-flop S R a porte NAND.

Fig.13.- Il deviatore seguito dal flip-flop prende il nome di interruttore antirimbalzo. 

Il deviatore può assumere due posizioni: A e B. Il contatto mobile è collegato alla massa e perciò porta il livello logico 0 all'ingresso collegato.
Supponiamo che il deviatore passi da A a B e successivamente ritorni nella posizione A.

Fig.14. - Forme d'onda nei punti A, B e sull'uscita Q.

Nell'istante t1 il contatto mobile lascia il punto A e questo si porta al livello logico 1. Nell'istante t2, terminata la sua corsa, il contatto mobile tocca il punto B che si porta al livello 0. A causa della sua elasticità, la lamella vibra causando gli impulsi visibili tra gli istanti t2 e t3. In t3 la lamella tocca definitivamente il punto B. Nell'istante t4 si decide di riportare l'interruttore nella posizione A. Quando in t4 il contatto mobile lascia il punto B, questo si porta a 1 e nell'istante t5 raggiunge per la prima volta il punto A che si porta a zero. A causa dell'elasticità della lamella del contatto mobile, si creano su A delle vibrazioni che generano gli impulsi visibili sulla linea A nell'intervallo di tempo compreso tra t5 e t6. In t6 il contatto mobile tocca definitivamente il punto A che rimane definitivamente al livello logico. Nella fig.14 si è supposto che il rimbalzo meccanico produca 3 impulsi spuri prima di raggiungere definitivamente il livello logico 0.

Esaminando le forme d'onda di A e B nei vari  intervalli di tempo, si deduce facilmente la forma d'onda dell'uscita Q che, come si vede nella fig.14, è esente dai rimbalzi meccanici.

 

9.3 Contatore a tre bit
Si mostra in fig.15 un collegamento tra 3 flip-flop JK NET che realizzano un contatore binario a tre bit capace di mostrare su un display, ciclicamente, cifre da 0 a 7 sotto l’applicazione di un fronte di discesa applicato al clock.

Fig.15 – Contatore a 3 bit con visualizzazione su un display. 

Gli impulsi di clock CK si applicano all’ingresso CLK del flip-flop JK denominato U1A. L’uscita Q del flip-flop U1A si applica all’ingresso CLK del flip-flop U2A e, analogamente, l’uscita Q del secondo flip-flop si applica all’ingresso CLK del flip-flop U3A. Gli ingressi J e K di tutti i flip-flop sono tenuti ad 1 per cui ad ogni fronte di discesa applicato agli ingressi CLK l’uscita Q cambia di stato.
Indicando con Q3 Q2 Q1 le uscite dei 3 flip-flop e supponendo 000 lo stato iniziale del contatore si ha, dopo l’applicazione di successivi impulsi di clock:

001, 010, 011, 100, 101, 110, 111

Applicando tali linee ad un display dotato di circuito di decodifica interno si avrà sul visualizzatore la comparsa delle cifre da 0 a 7.
Dopo il 7 riapparirà nuovamente lo 0 e così via. Le linee CLR, se portate allo 0 logico, azzerano il contatore indipendentemente dal clock (comando asincrono).

9.4. Flip-flop D per la rivelazione del verso di rotazione di un disco.
Su un disco metallico vengono praticate due fenditure semicircolari sfalsate fra di loro di 1/4 di giro come si mostra nella fig.16. Da parti opposte al disco sono inserite due sorgenti di luce (diodi LED) e due fotorivelatori S1 e S2 in grado di trasformare in forma binaria le zone opache e trasparenti delle semicorone circolari A e B (00 01 11 10).

Fig.16. - Encoder e flip flop per il rilievo del verso di rotazione.

Applicando il bit B all'ingresso D del flip-flop ed il bit A all'ingresso di clock, l'uscita Q è in grado di rivelare il verso di rotazione del disco.
Infatti nel caso in cui il disco ruota in senso orario si ottiene per il bit A e B la seguente sequenza: AB = 00 01 11 10.
Se, invece, il disco ruota in senso antiorario, si ottiene: AB = 00 10 11 01.

In fig.17 si mostrano le forme d'onda da cui si deduce che, nel caso di rotazione in senso orario, i fronti di salita applicati al clock durante gli istanti t1, t2, ... vedono la linea B applicata all'ingresso D di valore 1 e quindi si ottiene Q=1, viceversa durante la rotazione antioraria i fronti di salita presenti all'ingresso di clock durante gli istanti t3, t4,... vedono la linea D al valore 0 e quindi Q=0.

Fig.17. -  Forme d'onda.