Reti sequenziali

Gating con porte NAND.

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:

EnableIngressoUscita
001
011
101
110

il flip flop

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


Flip Flop SR con Enable

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:

Rete Sequenziale

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

Rete Sequenziale Sincrona

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


treno di impulsi

Analisi del funzionamento del flip flop SR.

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:

Tabella di verità del flip flop SR

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.

EnableSR Qn+1
0XX Qn
100 Qn
101 0
110 1
111 ?

il flip flop JK

Simbolo circuitale:

Tabella di verità

JKQn+1
00 Qn
01 0
10 1
11 ¬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.


Equazione caratteristica del flip flop JK

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.


Esempio di progetto di una rete sequenziale

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 ALed BLed C
X0Acceso Spento Spento
X1Acceso Acceso Spento
X2Spento Acceso Acceso
X3Spento 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:

Q0Q1
X0 0 0
X1 0 1
X2 1 0
X3 1 1
tabella di codifica degli stati


Con riferimento alla tabella di codifica degli stati e al modello a grafo dell'automa, si deve costruire la

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))


Realizzazione della rete associata a un automa

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.

Q0Q1Led ALed BLed C
X00 0 Acceso Spento Spento
X10 1 Acceso Acceso Spento
X21 0 Spento Acceso Acceso
X31 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.


diagramma temporale

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

J1 = K1 = 1
J0 = K0 = 0

Quindi dopo l'impulso di clock (intervallo di clock Nr. 1), il Flip Flop 1 commuta di stato:

Q1(n+1) = 1

e il Flip Flop 0 resta nello stesso stato:

Q0(n+1) = 0

che corrisponde allo stato X1.

In questo stesso intervallo di clock Nr. 1:

J1 = K1 = 1
J0 = K0 = 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:

Q1(n+1) = 0
Q0(n+1) = 1

che corrisponde allo stato X2.

Di conseguenza:

J1 = K1 = 1
J0 = K0 = 0

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.


Contatore modulo 6

Tabella di transizione

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.

Codifica degli stati
Numero
Stato
Codifica:
Q2Q1Q0
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

Funzioni di transizione

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)


Segnali di Ingresso

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


Schema del circuito


Registro Parallel In Serial Out (PISO)

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:
Preset = Load And Dn.

Per immagazzinare un bit Dn di valore '0' nel flip flop la funzione deve essere:
Clear = Load And (not Dn).

Registro a scorrimento

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.

Registro Serial In Parallel Out

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.


Contatore Asincrono

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.

Contatore Asincrono

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.

Contatore a decremento

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.

Contatore Up-Down

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.

Contatore Sincrono

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