La porta NAND, usata come gate control, ha il seguente funzionamento:
se l'ingresso di controllo, Enable
La tabella di verità della porta Nand, riportata più avanti, mostra questo comportamento.
Tabella di verità di una porta NAND:
Enable | Ingresso | Uscita |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Si osservi la configurazione seguente, avente due porte NOT la cui uscita di una costituisce l'ingresso per l'altra.
Le due porte, pur essendo identiche, nella pratica avranno un leggera differenza, per cui, quando viene data l'alimentazione al circuito, l'uscita di una delle due porte NOT raggiunge per prima il livello alto e lo fornisce come ingresso all'altra.
Ad esempio se l'uscita di N1 si trova a livello alto anche l'ingresso di N2 è alto, per cui la sua uscita, invertita, è bassa.
Questo livello, collegato in ingresso a N1, porta l'uscita di N1 a livello alto, confermando il livello che si era ipotizzato.
Questa, quindi, è una configurazione stabile (di memoria) che si autosostiene in virtù dell'alimentazione elettrica del circuito.
Anche l'altra configurazione (uscita di N1 a livello basso e uscita di N2 a livello alto) è stabile.
Le uscite delle due porte, indicate con Q e ¬Q, servono per leggere lo stato interno del circuito. I due stati in cui si può trovare il dispositivo sono convenzionalmente indicati con stato Set (Q=1) e stato Reset (Q=0).
Il circuito visto nel paragrafo precedente costituisce un elemento di memoria (un bit). Ha il difetto che può essere solo letto, ma in esso non si può scrivere.
Affinchè il circuito possa essere impiegato come dispositivo di memorizzazione lo si deve dotare di terminali di ingresso. A questo scopo, le porte Not vengono sostituite con porte Nand a due ingressi e, inoltre, viene aggiunta la funzionalità di abilitazione alla scrittura.
Prima di analizzare il funzionamento del circuito occorre introdurre le seguenti definizioni:
È un circuito che può trovarsi in uno tra un insieme finito di possibili di stati e in conseguenza di un segnale applicato al suo ingresso subisce una transizione in un altro stato emettendo un segnale di uscita.
È una rete sequenziale in cui le transizioni di stato avvengono in corrispondenza di istanti di tempo multipli di T. In questi sistemi il tempo è scandito da un treno di impulsi detto clock
Un dispositivo che è dotato di un ingresso di Enable è sensibile al livello.
Un dispositivo dotato di un ingresso di clock è sensibile alla variazione del livello.
Lo stato del flip flop prima dell'applicazione dell'impulso numero n, letto tramite il terminale di uscita Q, viene indicato con Qn, dopo l'impulso di clock, il flip flop si porterà nello stato Qn+1.
Quando il segnale di Enable si trova a livello '0', le due porte NAND sono disabilitate e sia S1 sia R1 si trovano a livello alto.
In questo caso l'uscita del flip flop non viene modificata dai livelli applicati agli ingressi S e R.
Quando il segnale di Enable si trova a livello '1' le due porte NAND, a cui esso è collegato, sono abilitate e si comportano da invertitori, si possono presentare quattro casi:
primo caso: (S=0 e R=0) → (S1=1 e R1=1)
Le porte P1 e P2 sono abilitate e le loro uscite, non vengono modificate (stato di memorizzazione), pertanto Qn+1 = Qn.
Quando gli ingressi S e R sono entrambi a '0', il flip flop conserva lo stato in cui si trovava prima della transizione da '0' a '1' dell'ingresso di Enable.
secondo caso: (S=0 e R=1) → (S1=1 e R1=0)
La porta P2 è disabilitata, quindi la sua uscita ¬Q si trova a livello '1', indipendentemente dal valore che possedeva prima della transizione da '0' a '1' dell'ingresso di Enable, pertanto Qn+1 = '0'. (stato Reset)
terzo caso: (S=1 e R=0) → (S1=0 e R1=1)
La porta P1 è disabilitata, quindi la sua uscita Q si trova a livello '1', indipendentemente dal valore che possedeva prima della transizione da '0' a '1' dell'ingresso di Enable, pertanto Qn+1 = '1'. (stato Set)
quarto caso: (S=1 e R=1) → (S1=0 e R1=0)
Entrambe le porte, P1 e P2, sono disabilitate; di conseguenza sia Q che ¬Q dovrebbero trovarsi a livello '1', ma questa configurazione non è prevista dal principio di funzionamento del circuito. Quindi questa combinazione logica degli ingressi deve essere evitata.
Il comportamento del flip flop SR con ingresso di Enable è riepilogato nella tabella indicata a lato.
Quando il segnale di Enable si trova a livello 0 il flip flop resta nello stesso stato indipendentemente dagli ingressi applicati.
Anche con la combinazione S=0 e R=0, quando Enable=1, il flip flop ricorda lo stato precedente.
La combinazione S=0 e R=1 porta il flip flop nello stato Reset e la combinazione S=1 e R=0 porta il flip flop nello stato Set.
La combinazione S=1 e R=1 si deve evitare.
Enable | S | R | Qn+1 |
0 | X | X | Qn |
1 | 0 | 0 | Qn |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | ? |
Simbolo circuitale:
Tabella di verità
J | K | Qn+1 |
0 | 0 | Qn |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | ¬Qn |
Il flip flop JK risolve l'ambiguità che nel flip flop SR corrisponde all'applicazione del livello binario "1" sia su S che su R, facendo in modo che al presentarsi di tale situazione il flip flop commuti di stato.
Per impedire al dispositivo di seguire l'andamento di qualsiasi valore binario che si presenta sulle linee J e K, il flip flop funziona nel seguente modo:
dopo aver applicato i valori corretti sugli ingressi J e K si applica un impulso sull'ingresso di clock che autorizza il flip flop a reagire agli ingressi applicati.
Il flip flop, comunque, è sensibile alla variazione del segnale di clock, cioè un livello binario costante sull'ingresso di clock non provoca nessuna transizione di stato, mentre un impulso (cioè il passaggio del livello binario da basso ad alto e il ritorno da alto a basso) sull'ingresso di clock ha effetto sullo stato del flip flop.
La tabella di verità del flip flop JK descrive lo stato in cui si porta il flip flop dopo la transizione sull'ingresso di clock, in funzione dei valori binari applicati sugli ingressi J e K.
L'uscita Q permette di leggere lo stato in cui si trova il flip flop, gli indici n e n+1, stabiliscono la relazione dello stato rispetto all'impulso di clock, cioè con Q(n) ci si riferisce allo stato del flip flop prima dell'applicazione dell'impulso sull'ingresso di clock, mentre con l'indice n+1 ci si riferisce allo stato in cui il flip flop si porta dopo il clock.
Per progettare una rete sequenziale si deve immaginare che il flip flop possa essere sostituito da una rete combinatoria, nella quale gli ingressi sono J, K e Q(n), e l'uscita è Q(n+1), la struttura del circuito equivalente è determinata dalla seguente mappa di Karnaugh:
Raccogliendo i termini che si trovano nelle caselle adiacenti, in modo però da non semplificare Q(n) e perdere così la relazione temporale dello stato, si ha:
Q(n+1) = J·(¬Q(n)) + (¬K)·Q(n)
Questa è detta equazione caratteristica del flip flop JK, e rappresenta la rete combinatoria che ne riproduce lo stesso comportamento.
Un automa, o rete sequenziale, è la rappresentazione di un sistema reale, a tempo discreto e a stati finiti, che per ogni stimolo subisce una modifica di stato e ne segnala la transizione mediante un'informazione di uscita.
Si supponga di avere tre LED da illuminare nella sequenza seguente:
stato↓ | Led A | Led B | Led C |
X0 | Acceso | Spento | Spento |
X1 | Acceso | Acceso | Spento |
X2 | Spento | Acceso | Acceso |
X3 | Spento | Spento | Acceso |
In questo esempio l'automa non ha ingressi, ma si suppone che i passaggi di stato siano cadenzati da un segnale ci clock.
X0, X1, X2 e X3 sono gli stati.
Le uscite sono indicate dalle combinazioni Acceso-Spento dei tre Led.
Si devono rappresentare 4 stati e perciò occorrono N = lg24 = 2 flip flop.
Questi 2 flip flop verranno denominati FF0 e FF1, mentre i loro ingressi saranno J0, K0, ecc...
Le quattro possibili combinazioni che si possono formare con le uscite Q0 e Q1 dei 2 flip flop devono essere messe in corrispondenza con i 4 stati della rete:
Q0 | Q1 | |
X0 | 0 | 0 |
X1 | 0 | 1 |
X2 | 1 | 0 |
X3 | 1 | 1 |
tabella di transizione degli stati
Q0(n) | Q1(n) | Q0(n+1) | Q1(n+1) | |
0 | 0 | → | 0 | 1 |
0 | 1 | → | 1 | 0 |
1 | 0 | → | 1 | 1 |
1 | 1 | → | 0 | 0 |
La tabella, su ogni riga, mostra l'associazione tra lo stato in cui si trova il flip flop e lo stato in cui si porta dopo l'applicazione dell'impulso di clock.
Dalla tabella di transizione di stato si ricavano le funzioni di stato successivo per entrambi i flip flop:
Q1(n+1) = (¬Q0(n))·(¬Q1(n)) + Q0(n)·(¬Q1(n)) = ¬Q1(n)
Q0(n+1) = (¬Q0(n))·Q1(n) + Q0(n)·(¬Q1(n))
Si confrontano le funzioni di transizione con l'equazione caratteristica:
Per il Flip Flop 1, l'equazione caratteristica è:
Q1(n+1) = J1·(¬Q1(n)) + (¬K1)·Q1(n)
mentre la funzione di transizione è:
Q1(n+1) = ¬Q1(n)
Dal loro confronto si ricava:
J1 = 1
(¬K1) = 0 → K1 = 1
Per il Flip Flop 0, l'equazione caratteristica è:
Q0(n+1) = J0·(¬Q0(n)) + (¬K0)·Q0(n)
mentre la funzione di transizione è:
Q0(n+1) = (¬Q0(n))·Q1(n) + Q0(n)·(¬Q1(n))
dal loro confronto si ricava:
J0 = Q1(n)
(¬K0) = (¬Q1(n)) → Q1(n)
I collegamenti circuitali per realizzare la successione di stati prevista sono indicati nello schema seguente:
In cui si vede che J1 e K1 sono collegati a livello 1 come determinato dal confronto tra l'equazione caratteristicha e la funzione di transizione del flip flop 1, e J0 e K0 sono collegati a Q1 come determinato dal confronto tra l'equazione caratteristicha e la funzione di transizione del flip flop 0
Resta da utilizzare gli stati per costruire la rete combinatoria che accenda i LED.
Le funzioni di uscita vengono dedotte associando la tabella di codifica degli stati con la tabella dell'uscita.
Q0 | Q1 | Led A | Led B | Led C | |
X0 | 0 | 0 | Acceso | Spento | Spento |
X1 | 0 | 1 | Acceso | Acceso | Spento |
X2 | 1 | 0 | Spento | Acceso | Acceso |
X3 | 1 | 1 | Spento | Spento | Acceso |
Si determina:
LED C collegato a Q0, LED A collegato a (¬Q0), LED B collegato all'OR esclusivo di Q0 e Q1.
Prima di costruire il circuito si procede con un'analisi del suo funzionamento costruendo il diagramma temporale.
Si supponga di iniziare dallo stato X0: Q0=0 e Q1=0.
Prima che venga applicato il primo impulso di clock (intervallo di clock Nr. 0):
Quindi dopo l'impulso di clock (intervallo di clock Nr. 1), il Flip Flop 1 commuta di stato:
e il Flip Flop 0 resta nello stesso stato:
che corrisponde allo stato X1.
In questo stesso intervallo di clock Nr. 1:
Quindi dopo l'impulso di clock (intervallo di clock Nr. 2), sia il Flip Flop 1 che il Flip Flop 0 commutano di stato:
che corrisponde allo stato X2.
Di conseguenza:
Quindi dopo il terzo impulso di clock (intervallo di clock Nr. 3), il Flip Flop 1 commuta di stato, mentre il Flip Flop 0 resta nello stesso stato: Q1(n+1) = 1 e Q0(n+1) = 1 (stato X3).
Gli ingressi del flip flop 0, collegati a Q1 si trovano a livello alto. Quindi dopo l'impulso di clock entrambi i flip flop commutano, tornando nello stato X0.
Il conteggio modulo 6 richiede la memorizzazione di 6 stati, numerati da 0 a 5, e quindi occorrono 3 flip flop per realizzare il contatore.
Le uscite sono ottenute codificando lo stato del circuito mediante le uscite Q dei flip flop.
Numero Stato | Codifica: | ||
Q2 | Q1 | Q0 | |
0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 |
2 | 0 | 1 | 0 |
3 | 0 | 1 | 1 |
4 | 1 | 0 | 0 |
5 | 1 | 0 | 1 |
La tabella di verità del contatore modulo 6 è la seguente:
Stato precedente | → | Stato successivo | ||||
Q2 | Q1 | Q0 | → | Q'2 | Q'1 | Q'0 |
0 | 0 | 0 | → | 0 | 0 | 1 |
0 | 0 | 1 | → | 0 | 1 | 0 |
0 | 1 | 0 | → | 0 | 1 | 1 |
0 | 1 | 1 | → | 1 | 0 | 0 |
1 | 0 | 0 | → | 1 | 0 | 1 |
1 | 0 | 1 | → | 0 | 0 | 0 |
Equazione di transizione del Flip Flop 0:
Q'0 = not(Q0)·[not(Q1) + not(Q2)]
Equazione di transizione del Flip Flop 1:
Q'1 = not(Q1)·[(Q0)·not(Q2)] + Q1·[not(Q0)·not(Q2)]
Equazione di transizione del Flip Flop 2:
Q'2 = Q2·[not(Q0)·not(Q1)] + not(Q2)·(Q0·Q1)
Equazioni di eccitazione del Flip Flop 0:
J0 = not(Q1) + not(Q2)
K0 = 1
Equazioni di eccitazione del Flip Flop 1:
J1 = Q0 · not(Q2)
K1 = Q0 + Q2
Equazioni di eccitazione del Flip Flop 2:
J2 = Q0 · Q1
K2 = Q0 + Q1
Il flip flop J-K possiede due ingressi che, indipendentemente dal clock, possono forzare lo stato del flip flop.
l'ingresso Preset posto a livello 1 porta il flip flop nello stato Set (Q=1). L'ingressoClear posto a livello 1 porta il flip flop nello stato Reset (Q=0).
Questa funzionalità permette di inizializzare un registro ad N bit con un dato.
![]() |
Per immagazzinare un bit Dn di valore '1' nel flip flop si utilizzata un segnale di abilitazione detto Load. la funzione Preset si scrive: |
Se l'uscita Qn viene collegata all'ingresso Jn-1 del flip flop successivo e l'uscita complementare Qn negata viene collegata all'ingresso Kn-1, si ottiene un registro a scorrimento perchè, essendo J la negazione di K, ad ogni impulso di clock, il flipo flop in posizione n-1 copia lo stato del flip flop in posizione n (precedente).
Si decide che il primo flip flop acquisisca un livello '0', quindi dopo n clock, tutti i flip flop del registro sono a '0'.
Modo di funzionamento:
Il dato viene preparato sulle linee D3, D2, D1 e D0.
Si porta a livello 1 la linea Load e poi la si riporta a 0. In questo modo il dato viene caricato nei Flip Flop
Si preme 4 volte il pulsante a rilascio clock. Ciascun bit del dato è diponibile sull'uscita Q del fli flop 0 e dopo 4 impulsi di clock il registro contiene 0.
Il registro SIPO ha un solo ingresso per il dato e una linea di clock.
Modalità di utilizzo:
Si collega l'uscita del registro PISO all'ingresso In del registro SIPO. I due registri devono avere lo stesso clock.
Nella figura che riporta il conteggio degli impulsi di input, si è imposto di ottenere una transizione sul fronte di discesa.
Quindi si scelgono flip-flop sensibili al fronte di discesa.
Per tutti i contatori si sceglie, come elemento di memoria, il flip flop J-K in configurazione Toggle.
Q0 cambia stato in corrispondenza del fronte di discesa dell'impulso da contare.
Ciascun flip-flop successivo compie una transizione di stato solo quando l'uscita del flip flop precedente cambia da 1 a 0.
Queste transizioni negative si propagano dal LSB al MSB.
Il conteggio procederà a decremento se il clock di un flip flop viene prelevato sull'uscita negata del flip flop precedente.
Il primo flip flop farà una transizione ad ogni gradino negativo.
Uno stesso contatore può funzionare sia come contatore incrementale sia come contatore a decremento, basta fornire ad ogni flip flop il clock dall'uscita Q o dall'uscita Q negata.
Tutti i flip flop ricevono il clock simultaneamente.
I flip flop sono di tipo J-K configurati nel modo Toggle.
Il primo flip flop Q0 è configurato per commutare ad ogni impulso: J0=K0=1.
Il secondo flip flop Q1 deve commutare solo quando Q0=1, cioè J1=K1=Q0.
Il terzo flip flop Q2 commuta solo quando Q0=Q1=1, cioè J2=K2=Q0·Q1
Il flip flop Q3 commuta solo quando Q0=Q1=Qs=1, cioè J3=K3=Q0·Q1·Q2