I CONTATORI Definizioni. I contatori sono dispositivi costituiti da uno o più flip-flop collegati fra loro in modo da effettuare il conteggio di impulsi applicati in ingresso. In pratica, i flip-flop, opportunamente connessi, realizzano un circuito sequenziale che, ad ogni ciclo di clock, passa da uno stato ad un altro secondo una sequenza di conteggio stabilita. 2. Poiché un flip-flop può assumere due stati logici, una serie di N flip-flop può assumere 2 N stati logici dove, per stato della serie, si intende una delle possibili combinazioni degli stati dei singoli flip-flop. Se, partendo da uno stato iniziale, il contatore ritorna allo stesso stato dopo k cicli del segnale di ingresso, si dice che il contatore ha modulo k o base k. Il numero k corrisponde al numero degli stati del contatore. 3. Ci sono due tipi di contatori definiti in base al modo in cui il clock determina l attivazione dei flip-flop. Si parla di contatori asincroni nel caso in cui il segnale di clock viene applicato solo al primo flipflop della serie il quale, a sua volta, genera il segnale di attivazione per il flip-flop successivo e così di seguito; si parla di contatori sincroni nel caso in cui il segnale di clock viene applicato direttamente e simultaneamente a tutti i flip-flop.
Flip-flop impiegati. Flip-flop JK edge-triggered. Consentono i quattro funzionamenti tipici: memoria, reset, set e toggle. Si riportano nel seguito: a) schema funzionale di un flip-flop JK comandato dal fronte positivo del clock, simbolo circuitale e tabella di verità. Fig. a) Schema funzionale di un flip-flop JK; b) simbolo circuitale ; c) tavola di verità.. Flip-flop di tipo D. Possono essere pensati come flip-flop di tipo JK (o SR edge-triggered) in cui gli ingressi assumono valori l uno il negato dell altro. In pratica, è sufficiente inserire una porta NOT tra l ingresso J e l ingresso K in modo da ottenere un flip-flop con un unico terminale D = J = K. Nel flip-flop di tipo D sono, quindi, consentite solo le funzioni di Set e Reset attivate sui fronti del clock (positivi o negativi) in corrispondenza rispettivamente degli ingressi D= e D=0. 2
2. Flip-flop di tipo T. Possono essere pensati come flip-flop di tipo JK in cui gli ingressi assumono entrambi il valore. Nel flip-flop di tipo T è, quindi, consentita solo la funzione di commutazione o toggle. In pratica, in concomitanza con i fronti (positivi o negativi) del clock, il flip-flop di tipo T inverte i valori delle sue uscite. 3. Comandi asincroni dei flip-flop. Sono costituiti dagli ingressi preset (o set) e clear (o reset) che determinano lo stato dei flipflop senza rispettare la sincronizzazione del clock. Questo si verifica, ad esempio, nella fase di inizializzazione di una sequenza operativa o semplicemente all accensione del sistema allorché si vuole che tutti i flip-flop siano azzerati. 4. Flip-flop in configurazione master-slave. Il loro modo di funzionare che si basa sull interruzione della connessione tra ingresso ed uscita li renderebbe particolarmente indicati nell uso dei circuiti sequenziali. Tuttavia sono particolarmente lenti in quanto lo slave è attivo solo dopo il fronte di discesa dell impulso di clock e, pertanto, l uscita risponde con ritardo all ingresso. Sono, quindi, da preferire i flip-flop edge-triggered. 3
Contatori asincroni. Contatori asincroni. Sono contatori in cui i flip-flop non commutano simultaneamente ma in successione nel tempo. L impulso di clock è applicato solo al primo flip-flop della serie mentre la sua uscita è connessa al terminale di clock del flip-flop successivo e così via di seguito. Sono impiegati flip-flop T (o JK con J=K=) attivi sul fronte positivo o sul fronte negativo. 2. Contatori asincroni binari con modulo 2 N. Si ottengono collegando in cascata N flip-flop in modo da realizzare sistemi sequenziali che, al susseguirsi degli impulsi di clock, passano attraverso 2 N stati. Ad ognuno di questi stati è associato un numero binario. Il conteggio può essere crescente o decrescente. Si riporta nel seguito (fig. 2) l esempio di un contatore asincrono con modulo 2 4 =6 (contatore binario a 4 stadi) costituito da 4 flipflop JK, connessi in modo toggle, attivi sul fronte negativo dell impulso di clock. Il segnale di ingresso di cui si vogliono contare gli impulsi, è applicato al terminale di ingresso del primo flip-flop FF0 ; i terminali di ingresso dei clock Ck i dei flip-flop FF,FF2 e FF3 sono collegati rispettivamente alle uscite Q i- dei flip-flop precedenti. La figura 2b riporta il diagramma temporale degli stati, a partire dallo stato iniziale Q 3 Q 2 Q Q 0 = 0000, in funzione della sequenza degli impulsi di clock. Il primo fronte di discesa del clock ha l effetto di far commutare FF0 portando la sua uscita a livello alto senza influenzare gli altri flip-flop (Q 3 Q 2 Q Q 0 = 000). 4
Il fronte di discesa del secondo impulso di clock fa commutare FF0 portando l uscita a livello basso e attivando, in questo modo, FF la cui uscita passa a livello alto (Q 3 Q 2 Q Q 0 = 000). La sequenza degli impulsi di clock fa passare il contatore attraverso tutti i sui possibili 2 4 =6 stati per cui, dopo il sedicesimo impulso, il contatore si ritrova nello stato iniziale. Fig.2 Contatore asincrono modulo 6 e relative forme d onda. 5
3. Contatori asincroni con modulo arbitrario. Si realizzano mediante l utilizzo degli ingressi asincroni dei flip-flop al fine di bloccare la sequenza di conteggio al valore richiesto riportando il contatore allo suo stato iniziale mediante un reset. Si riporta nel seguito (fig. 3), l esempio di un contatore decimale (o di modulo 0 o decadico). Si adoperano, come nel caso precedente, N=4 flip-flop di tipo JK in funzionamento toggle; il numero dei flip-flop adoperati risponde all esigenza che il numero del modulo M del contatore deve corrispondere al suo numero degli stati e quindi deve verificare la relazione: 2 N- <M<2 N. Al susseguirsi degli impulsi di clock, il contatore deve passare attraverso 0 stati a partire dallo stato Q 3 Q 2 Q Q 0 =0000 corrispondente al numero decimale 0 e fermarsi allo stato Q 3 Q 2 Q Q 0 =00 corrispondente al numero decimale 9. Il blocco del conteggio ed il successivo azzeramento del contatore, sono realizzati con l attivazione del comando di reset dei flip-flop dopo 0 cicli di clock. Questo è ottenuto mediante una porta NAND avente in ingresso le variabili: Q 3, Q 2, Q e Q 0. Pertanto, fino allo stato 00 del contatore, l uscita della porta NAND si mantiene alta (la funzione reset è attiva al livello basso) mentre, nel momento in cui le uscite vengono a trovarsi nello stato 00, l uscita della porta NAND passa al livello basso e rende attivo il reset dei flip-flop. 6
Contatori asincroni Fig. 3 a) Contatore asincrono modulo 0; b) diagramma temporale degli stati. 7
In realtà, come evidenziato nella figura 3b, il contatore, durante l undicesimo ciclo di clock, si porta per brevissimo tempo allo stato 00 prima di essere azzerato determinando, così, un breve impulso indesiderato (glitch). Di questo si deve tenere conto sincronizzando opportunamente i dispositivi di lettura o di visualizzazione con le commutazioni del contatore. Nell esempio riportato, la funzione di reset è stata realizzata, in maniera semplificata, con una porta NAND con i soli ingressi Q 3 e Q tenendo conto del fatto che vi sono alcuni stati nei quali il contatore non viene a trovarsi. Di questo è facile rendersi conto effettuando la sintesi della funzione reset mediante una mappa di Karnaugh (fig.4) e considerando gli stati non consentiti del contatore come condizioni non specificate. Fig.4 - Sintesi della funzione di reset del contatore. 8
Contatori asincroni 4. Contatori indietro asincroni. Sono contatori che iniziano la sequenza di conteggio a partire dallo stato costituito da tutti (es. Q 3 Q 2 Q Q 0 = nel caso di contatore a 4 stadi) e, quindi a decrementare il valore, al susseguirsi dei cicli di clock. La sequenza decrescente può essere facilmente ottenuta prelevando i dati di uscita sui terminali Q di ciascun flip-flop. In alternativa, è possibile adoperare flip-flop che commutino sul fronte positivo del clock. 5. Tempi di propagazione. Nei diagrammi temporali degli stati non si è, sin ora, tenuto conto del fatto che ogni flip-flop introduce un tempo di propagazione del comando. Si riportano nella figura 5, le forme d onda d uscita di un contatore modulo 8 prendendo in considerazione il tempo t pd di propagazione di ciascun flip-flop. Si nota subito che il primo flip-flop commuta con un ritardo t pd rispetto al clock; il secondo flip-flop commuta con un ritardo 2t pd rispetto al clock mentre il terzo flip-flop commuta con un ritardo 3t pd rispetto al clock. In definitiva, in un contatore ad N stadi, la commutazione dell ultimo stadio risulta ritardata di un tempo pari a Nt pd. Questo fatto limita la velocità di funzionamento dei contatori asincroni e richiede alcune precauzioni nella lettura dei valori di uscita. A questo proposito, è facile rendersi conto della necessità che il periodo del clock T Ck sia > Nt pd + T S dove T S è il tempo necessario per effettuare la lettura. Si può, quindi, affermare che la frequenza massima del segnale di clock possibile deve essere: f max = Nt pd + T S 9
6. Espansione dei Contatori asincroni. E possibile realizzare contatori asincroni di modulo elevato ponendo più contatori in cascata. In figura 6 è riportato lo schema a blocchi di un contatore modulo 64 realizzato mediante un contatore modulo 6, costituito da 4 flip-flop, e un contatore modulo 4 composto da due flip-flop. Partendo dalla condizione iniziale in cui tutte le uscite sono a 0, i primi 5 impulsi di clock portano il primo contatore dallo stato iniziale Q 3 Q 2 Q Q 0 =0000 allo stato finale Q 3 Q 2 Q Q 0 =; al successivo impulso di clock, Q 3 Q 2 Q Q 0 ritornano a 0 e la transizione da a 0 di Q 3 attiva il secondo contatore portandolo dallo stato Q 5 Q 4 =00 allo stato Q 5 Q 4 =0. Il secondo contatore incrementa il suo stato di una unità ogni 6 impulsi di clock sino al 64simo quando anch esso ritorna allo ritorna allo stato iniziale unitamente al primo contatore (Q 5 Q 4 Q 3 Q 2 Q Q 0 =000000). In generale si può dire che il modulo totale di più contatori in cascata è uguale al prodotto dei moduli dei singoli contatori. 7. Vantaggi e svantaggi dei contatori asincroni. I contatori asincroni hanno l unico vantaggio costituito dalla semplicità circuitale a fronte dei seguenti inconvenienti: - limiti in frequenza determinati dai notevoli tempi di propagazione (v. par. 5, sez 9); - glitch e impulsi indesiderati (dovuti ai diversi ritardi di propagazione dei segnali nei circuiti) che possono essere causa di errori. 0
Contatori asincroni Fig. 5 Forme d onda d uscita di un contatore modulo 8 ottenute considerando il t pd di ciascun flip-flop. Fig. 6 Contatori asincroni in cascata che realizzano sistemi di conteggio: a) modulo 64 e b) modulo 60.
Contatori sincroni. Generalità. I contatori sincroni, così come quelli asincroni, sono costituiti da una serie di flip-flop in cascata ma si differenziano dai primi per il fatto che il segnale di clock è applicato con sincronia ad ogni flip-flop. Pertanto, per ottenere una determinata sequenza di conteggio, è necessario definire le funzioni degli ingressi (dati) dei vari flip-flop in modo da consentire, ad ogni impulso di clock, il passaggio di questi allo stato desiderato. 2. Contatori sincroni di modulo 2 N. Si analizzano, nel seguito, le fasi di realizzazione di un contatore binario sincrono di modulo 6. - Scelta dei flip-flop. Come detto in precedenza, è possibile adoperare flip-flop di tipo JK, D o T. Si decide, in questo caso, di adoperare flip-flop del tipo JK in numero N=4, tenendo conto del fatto che il contatore deve avere 2 N =6 stati. Si definisce tabella di eccitazione del flip-flop JK, quella tabella che consente di esprimere gli ingressi del flip-flop in funzione di tutte le possibili transizioni di stato (v. fig. 7). I valori della tabella di eccitazione del flip-flop si possono ricavare facilmente dall esame della tavola di verità. 2
- Tabella di eccitazione del contatore. E la tabella che riporta sulle prime N colonne (Q N, Q N- Q 0 ), riga per riga, tutti gli stati possibili del contatore, su un secondo gruppo di 2N colonne (J N, K N, J N-, K N- J 0, K 0 ) i valori degli gli ingressi necessari a portare i flip-flop negli stati successivi e, su un terzo gruppo di N colonne (Q N, Q N-,, Q 0 ) gli stati successivi del contatore. In altre parole, la tabella di eccitazione riporta tutti gli stati del contatore e, per ognuno di essi, gli ingressi necessari al passaggio nello stato successivo (v. fig.8). - Sintesi delle funzioni di ingresso. In riferimento alla tabella di eccitazione del contatore, si procede alla sintesi delle funzioni di ingresso dei flip-flop in funzione delle uscite precedenti degli stessi: J i =f i (Q 3,Q 2,Q,Q 0 ) e K j =g j (Q 3,Q 2,Q,Q 0 ). La sintesi delle funzioni di ingresso può essere efficacemente effettuata mediante l uso delle mappe di Karnaugh, come riportato in figura 9. - Sintesi ed analisi del circuito. In base alle funzioni di ingresso, sopra ricavate, si realizzano i circuiti combinatori di ingresso dei vari flip-flop costituenti il contatore (v. fig.0). Nella figura 0 è anche riportato il diagramma temporale degli stati. Si può notare come il bit meno significativo commuti ad ogni impulso di clock. Il secondo bit, di peso binario 2, varia ogni due cicli di clock, quando Q 0 =. Il terzo bit, di peso binario 2 2, varia ogni quattro cicli di clock, quando Q 0 e Q sono ad. Il quarto bit, di peso binario 2 3, varia ogni otto cicli di clock, quando Q 0, Q e Q 2 sono ad. 3
Contatori sincroni J K Q n Q n+ Transizioni Ingressi 0 0 0 0 Q n -> Q n+ J K 0 0 0 0 0 X 0 0 0 0 X 0 0 0 X 0 0 X 0 0 0 0 (a) (b) Fig.7 (a) Tavola di verità di un flip-flop JK (b) Tabella di eccitazione di un flip-flop JK 4
Contatori sincroni Stato presente Eccitazione Stato futuro Q 3n Q 2n Q n Q 0n J 3 K 3 J 2 K 2 J K J 0 K 0 Q 3n+ Q 2n+ Q n+ Q 0n+ S 0 0 0 0 0 0 X 0 X 0 X X 0 0 0 S 0 0 0 0 X 0 X X X 0 0 0 S 2 0 0 0 0 X 0 X X 0 X 0 0 S 3 0 0 0 X X X X 0 0 0 S 4 0 0 0 0 X X 0 0 X X 0 0 S 5 0 0 0 X X 0 X X 0 0 S 6 0 0 0 X X 0 X 0 X 0 S 7 0 X X X X 0 0 0 S 8 0 0 0 X 0 0 X 0 X X 0 0 S 9 0 0 X 0 0 X X X 0 0 S 0 0 0 X 0 0 X X 0 X 0 S 0 X 0 X X X 0 0 S 2 0 0 X 0 X 0 0 X X 0 S 3 0 X 0 X 0 X X 0 S 4 0 X 0 X 0 X 0 X S 5 X X X X 0 0 0 0 Fig.8 Tabella di eccitazione di un contatore binario di modulo 6. 5
Contatori sincroni Q Q 0 Q Q 0 Q 3 Q 2 00 0 0 Q 3 Q 2 00 0 0 00 00 X X X X 0 0 X X X X X X X X 0 X X X X 0 J 3 = Q 2 Q Q 0 K 3 = Q 2 Q Q 0 Q Q 0 Q Q 0 Q 3 Q 2 00 0 0 Q 3 Q 2 00 0 0 00 00 X X X X 0 X X X X 0 X X X X 0 0 X X X X J 2 = Q Q 0 K 2 = Q Q 0 Q Q 0 Q Q 0 Q 3 Q 2 00 0 0 Q 3 Q 2 00 0 0 00 X X 00 X X 0 X X 0 X X X X X X 0 X X 0 X X J = Q 0 K = Q 0 6
J 0 = k 0 = (nelle colonne relative a J 0 e k 0 della tabella di eccitazione del contatore non compaiono 0) Fig. 9 Sintesi delle funzioni di ingresso dei flip-flop del contatore mod.6. Contatori sincroni Fig.0 Contatore binario sincrono modulo 6 e relativo diagramma degli stati. 7
3. Contatori sincroni con modulo arbitrario. La tecnica di comando sincrona si presta molto bene alla realizzazione di contatori con modulo arbitrario e con sequenze di conteggio prefissate. Per realizzare un contatore sincrono di modulo k arbitrario, occorre passare attraverso le fasi seguenti: - Scelta del numero e del tipo dei flip-flop. Il numero N di flip-flop è il numero minimo per cui vale la relazione: k<2 N. Un contatore ad N flip-flop, può avere un numero massimo 2 N stati ma di questi se ne utilizzano soltanto i k richiesti. Di solito, si utilizzano i flip-flop JK (o in certi casi anche D o T). Nelle figure, 2 e 3 sono riportate le fasi di realizzazione di un contatore di modulo k=6 (e quindi N=3) in cui si impiegano flip-flop JK. - Tabella di eccitazione del contatore. Consiste, come visto nel caso precedente, nel compilare una tabella che riporti sulle prime N colonne (Q N, Q N- Q 0 ), riga per riga, tutti i k stati richiesti del contatore, su un secondo gruppo di 2N colonne (J N, K N, J N-, K N- J 0, K 0 ) i valori degli gli ingressi necessari a portare i flip-flop negli stati successivi e, su un terzo gruppo di N colonne (Q N, Q N-,, Q 0 ) gli stati successivi del contatore. In figura è riportata la tabella di eccitazione di un contatore binario con N=3 flipflop di tipo JK e k=6 stati. 8
Contatori sincroni - Sintesi delle funzioni di ingresso. Facendo riferimento alla tabella di eccitazione del contatore, si possono ricavare le funzioni di ingresso dei flip-flop in funzione delle loro uscite : J i =f i (Q N-,, Q 0 ) e K j =g j (Q N-,, Q 0 ). La sintesi delle funzioni di ingresso può essere efficacemente effettuata mediante l uso delle mappe di Karnaugh. Come riportato in figura 2 nel caso di un contatore con K=6 si ottiene: J 2 = Q Q 0 J = Q 2 Q 0 J 0 = K 2 = Q 0 K = Q 0 K 0 = Occorre osservare che, nella sintesi delle funzioni di ingresso, si sono considerati i termini X (condizioni indifferenti) e * (stati indesiderati), come se assumessero il valore. In ogni caso, una volta definite le funzioni e quindi la rete logica, occorre verificare che gli stati eliminati o indesiderati non possano presentarsi. Se, comunque, per un motivo qualsiasi, il contatore si venisse trovare in uno stato indesiderato, occorre far in modo che esso non si blocchi e che, dopo alcuni cicli di clock, ritorni in uno stato predefinito. Nel nostro caso, qualora il contatore (di modulo 6) venga a trovarsi nello stato S 6 con Q 2 Q Q 0 =0, le funzioni di ingresso dei flip-flop assumono i seguenti valori: J 2 = K 2 = J = K = 0 e J 0 = K 0 = e, al successivo impulso di clock, portano il contatore nello stato S 7 (Q 2 Q Q 0 =) anch esso indesiderato. In questo stato, le funzioni di ingresso dei flip-flop, assumendo i valori: J 2 = K 2 = ; J = 0 ; K = ; J 0 = K 0 = riportano il contatore nello stato S 0 (Q 2 Q Q 0 =000). 9
Contatori sincroni Stato Eccitazione Stato futuro presente Q 2n Q n Q 0n J 2 K 2 J K J 0 K 0 Q 2n+ Q n+ Q 0n+ S 0 0 0 0 0 X 0 X X 0 0 S 0 0 0 X X X 0 0 S 2 0 0 0 X X 0 X 0 S 3 0 X X X 0 0 S 4 0 0 X 0 0 X X 0 S 5 0 X 0 X X 0 0 0 Fig. Tabella di eccitazione di un contatore binario di modulo 6. 20
Contatori sincroni Q Q 0 Q Q 0 Q 2 00 0 0 Q 2 00 0 0 0 0 X X X X X X * * * * J 2 = Q Q 0 K 2 = Q 0 Q Q 0 Q Q 0 Q 2 00 0 0 Q 2 00 0 0 0 X X 0 X X 0 * * X X * * J =Q 2 Q 0 K = Q 0 Q Q 0 Q Q 0 Q 2 00 0 0 Q 2 00 0 0 0 X X 0 X X X * * X * * J = K = Il segno " * " sta ad indicare gli stati del contatore non utilizzati. Fig. 2 Sintesi delle funzioni di ingresso dei flip-flop del contatore mod.6. 2
Contatori sincroni Fig.3 Contatore binario sincrono modulo 6 e relativo diagramma degli stati. 22
Contatori sincroni - Conclusioni. La procedura illustrata deriva dal metodo generale di progettazione dei sistemi sequenziali intesi come macchine a stati finiti o automi. Infatti, il contatore sincrono costituisce un applicazione di macchina a stati finiti semplificata. 3. Tempi di propagazione. Nei diagrammi temporali degli stati occorrerebbe tener conto dei tempi di propagazione nei flip-flop (t pd(ff) ) e nelle porte (t pd(g) ). A questo proposito, si osserva che i tempi di propagazione nei flip-flop (t pd(ff) ) non sono uguali per tutti i flip-flop, aumentano con il numero delle porte di carico e variano a seconda che la transizione sia verso il livello alto o basso. Discorso simile si può fare per i tempi di propagazione (t pd(ff) ) delle porte logiche che costituiscono la rete combinatoria degli ingressi. In definitiva, assumendo degli opportuni valori massimi per t pd(ff) e t pd(g), possiamo definire la frequenza massima del clock con la seguente relazione: f max = t pd(ff) + t pd(g) +T S 23