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:
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:
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:
PET quando il clock passa da 0 a 1;
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.
|
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.
|
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à.
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.
|
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.