Reti sequenziali
In un circuito combinatorio i valori delle uscite dipendono in ogni istante
esclusivamente dai valori delle variabili di ingresso. Un circuito digitale
è di tipo sequenziale se le sue uscite dipendono non solo dai valori correnti
degli ingressi, ma anche da quelli passati.
Un circuito digitale sequenziale (o rete sequenziale) è pertanto dotato,
in ogni istante di tempo, di uno stato che, insieme ai valori degli ingressi,
ne determina il comportamento futuro.
Lo stato di un circuito sequenziale rappresenta, in un certo senso, una forma di memoria: esso contiene una sorta di descrizione della storia passata del circuito stesso. L'elemento funzionale elementare per la realizzazione di circuiti sequenziali è pertanto un dispositivo bistabile, che è in grado di memorizzare un bit di informazione.
I circuiti sequenziali sono formati da:
● Bistabili (di vario tipo) funzione: memorizzare
informazione, ovvero dei bit.
● Reti combinatorie, funzione: elaborare
informazione.
Il circuito sequenziale ha, in ogni dato istante, uno stato che è determinato dai bit memorizzati nei bistabili.
Esistono due famiglie di circuiti digitali sequenziali:
● asincroni, che non fanno uso di clock,
● sincroni, che necessitano di clock.
Un esempio di circuito sequenziale asincrono è il flip-flop bistabile SR (non sincronizzato) a.k.a. SR-latch. I circuiti sequenziali asincroni sono impiegati raramente, sono difficili da usare e da controllare; i circuiti sequenziali sincroni sono invece universalmente diffusi.
Un esempio di circuito sequenziale sincrono è il flip-flop bistabile di tipo D, che è il componente base dei circuiti sequenziali di tipo sincrono.
Un circuito sequenziale (sincrono) è dunque costituito da Flip-Flop (bistabili di tipo D o T sincroni) + reti combinatorie.
Come per le reti combinatorie, esistono delle procedure di sintesi anche per i circuiti sequenziali sincroni.
Contatori
I contatori sono dispositivi realizzati con flip-flop e porte logiche,
in grado di cambiare stato in una ben definita sequenza dopo la ricezione
di appropriati segnali di ingresso.
L'uscita, o le uscite del contatore, indicano il numero degli impulsi che
sono stati applicati all'ingresso . Viene definito binario un contatore
in grado di contare 2n impulsi con n il numero di flip-flop utilizzati,
la cui uscita indica in valore binario il numero degli impulsi entrati.
Si definisce contatore a decade o decimale un analogo dispositivo capace
di contare in sequenza binaria da zero fino a nove per poi ricominciare
da capo.
Per modulo di un contatore infine, si intende il numero degli stati diversi
che esso assume prima di ripetersi. Ad esempio un contatore binario a tre
bit ha un modulo pari a otto,mentre uno a decade ha un modulo dieci etc.
Contatori asincroni e sincroni
Un contatore è detto asincrono quando l'impulso di clock è applicato solo
al primo flip flop della serie, mentre l'uscita di ogni flip flop comanda l'ingresso
di clock del successivo.Le commutazioni dei flip flop avvengono quindi sequenzialmente.
Si definisce invece sincrono un contatore in cui l'impulso di conteggio
è applicato simultaneamente a tutti gli ingressi di clock dei flip flop
che quindi commutano simultaneamente.
Contatore binario asincrono
Il contatore binario asincrono è il contatore di più facile da realizzare;
in genere è formato dalla connessione di più flip flop, ad un solo ingresso,
di solito JK usati come T, disposti in modo tale da poter effettuare il
conteggio cambiando di stato ogni qualvolta giunge al suo ingresso un impulso.
Lo stato logico delle uscite dei bistabili istante per istante fornisce
sotto forma binaria il numero degli impulsi entrati nel contatore.
Il numero dei flip flop necessari per per realizzare il contatore dipende
dalla quantità degli impulsi da contare prima che esso ritorni allo stato
iniziale, essendo il funzionamento ciclico. Se si volesse ad esempio realizzare
un contatore modulo trentadue capace cioè di contare 31 impulsi per poi
ritornare allo stato iniziale con il trentaduesimo, debbono essere utilizzati
cinque flip flop in grado di fornire 25 =32 diverse configurazioni
di uscita (ogni flip flop può assumere due stati diversi) ciascuno dei quali
può essere associata ad uno stato logico del contatore.
In definitiva se K sono gli impulsi da contare, compreso quello di riporto
allo stato iniziale, si ha che.
2n=K
con n numero dei flip flop necessari per poter effettuare il conteggio.
Supponiamo di voler costruire un contatore binario a modulo 4; si avrebbe
2n=4 ⟶ n=2 ci vogliono due flip-flop.
I due flip flop usati, sono sufficienti per ottenere le quattro combinazioni diverse che rappresentano i quattro stati del contatore. Poiché le quattro combinazioni 00 01 10 11 sono la rappresentazione dei primi quattro numeri del sistema binario le uscite dei flip flop sono anche le uscite del contatore .
Per il funzionamento del dispositivo gli ingressi J e K debbono essere collegati allo stato logico 1, infatti soltanto in questo stato le uscite dei bistabili commutano ad ogni impulso inviato all'ingresso di clock (J=K=1=toggle).
Il contatore grazie agli ingressi asincroni di clear può essere forzato a partire dalla condizione Q1=Q2=0 (azzeramento del contatore).
Esaminando il disegno si nota che l'uscita Q1 del primo flip flop si comporta da clock per il secondo. Qui sotto riportiamo la sequenza di conteggio.
Dai disegni è possibile verificare che le uscite del contatore soddisfano
la sequenza degli stati illustrata precedentemente e che inoltre, alle uscite
Q1 e Q2 sono presenti rispettivamente un segnale a
frequenza ½ e ¼ rispetto a quello di ingresso.
Si può quindi dire che un contatore binario è allo stesso tempo un divisore
di frequenza in quanto se n è il numero dei flip flop collegati in cascata
inviando all'ingresso di clock del primo un segnale binario a frequenza
f all'uscita dell'ultimo flip flop sarà disponibile un segnale a frequenza
pari a .
Ogni flip flop divide quindi per due la frequenza di ingresso.
Contatore binario asincrono modulo 16
Lo schema di questo contatore è del tutto simile a quello modulo 4; differisce da quest'ultimo solo per il maggior numero di flip flop usati: 4 anziché 2.
Osservando l'evoluzione delle uscite Q, rappresentando in forma tabellare la sequenza, considerando Q0 il bit meno significativo (LSB: least significant bit) e Q3 il bit più significativo (MSB:most significant bit):
Contatore asincrono modulo 10
In questo contatore alle cifre decimali che vanno da 0 a 9 sono fatti corrispondere valori binari assunti dalle uscite dei quattro flip flop; mentre le sei combinazioni in eccesso 1010, 1011, 1100, 1101, 1110, 1111 non vengono usate.
Si utilizza un contatore a modulo 16 modificato, in modo da poter ritornare a 0 al decimo impulso di conteggio. Ciò può essere ottenuto collegando una porta logica NAND al contatore in modo che quando agli ingressi della porta sono presenti simultaneamente gli stati logici alti prelevati dalle uscite Q4 e Q2 dei flip flop (ciò accade solo per la combinazione 1010) la sua uscita va ad attivare la linea di clear azzerando il contatore.
Contatore binario asincrono all'indietro
Decrementa la quantità immagazzinata di una unità per ogni impulso di clock applicato. Può essere ottenuto con FF-T a logica negativa dove ogni FF successivo riceve il clock dal FF precedente proveniente dall'uscita Q di quest'ultimo; oppure con FF-T a logica positiva dove ogni FF successivo riceve il clock dal FF precedente proveniente dall'uscita diretta Q di quest'ultimo.
sfruttando questo principio è possibile implementare contatori di tipo up-down; ad esempio qui sotto è riportato un contatore up-down a modulo 4.
Ad FF1 viene applicato un impulso di clock pari a Ck=X·Q0+X·Q0 quindi se X=1 il contatore conta in avanti, altrimenti conta all'indietro.
Contatori sincroni
Negli esempi precedenti, abbiamo supposto, per semplicità, nullo il tempo di commutazione dei flip flop. In realtà, questo tempo anche se piccolo, è diverso da 0, così nel caso di un contatore binario asincrono realizzato con n flip flop, se il tempo di propagazione di ritardo tpd diventa maggior della durata del periodo di clock, lo stato del contatore non rispecchia più istante per istante il numero degli impulsi entrati. Infatti può accadere che all'ingresso del contatore giunga un impulso, successivo a quello appena entrato, che commuta il primo flip flop, mentre l'ultimo della serie a causa del ritardo di propagazione accumulato lungo gli stadi, deve effettuare ancora la propria commutazione. Affinché ciò non si verifichi deve valer la seguente relazione.
Con f frequenza del segnale di clock e tpd tempo di propagazione
del flip flop.
Per cercare di ridurre l'inconveniente del ritardo di propagazione sono
state approntate diverse soluzioni. Quella più usata consiste nell'agire
simultaneamente su tutti gli ingressi Ck dei vari FF in modo che la commutazione
degli stessi avvenga contemporaneamente e non più sequenzialmente. Questi
dispositivi sono detti contatori sincroni.
Il progetto di un contatore sincrono viene ricondotto all'esecuzione dei
seguenti punti
1 scelta del tipo di FF da usare come memoria,
2 definizione del diagramma di flusso che individua
il numero degli stati e determina il numero di FF usati,
3 costruzione della tabella degli stati e recupero
dalla stessa della rete combinatoria necessaria.
Esempio: usando dei FF T a logica negativa realizzare un contatore che realizzi la seguente sequenza di stati.
Ricordando il comportamento del flip-flop T:
In questo caso, definito il tipo di flip flop da usare e il diagramma degli stati, passiamo alla costruzione della tabella degli stati, da cui risulta che FF0 deve avere l'ingresso costantemente T0=1.
Per desumere a che valore deve essere posto l'ingresso T1 , lo stesso deve essere considerato come funzione delle variabili Q0 e Q1; dalla tabella dello stato attuale:
Utilizzando il metodo delle mappe K avremo T1=Q0 ; il circuito risultante sarà pertanto:
Non bisogna pensare che l'utilizzo dei flip-flop di tipo T sia vincolante, gli stessi problemi possono essere risolti usando dei flip flop di tipo D, come si vede nella pagina degli esercizi.