Un contatore è un circuito sequenziale in grado di contare degli impulsi in binario.
Il modulo di un contatore è il numero di combinazioni possibili in uscita; ad esempio un contatore modulo 4 conta da 00 a 11 - da zero a tre - producendo quattro combinazioni binarie.
I contatori esistono anche in forma integrata ma si possono realizzare usando i flip-flop; in questo caso si distingue tra:
I contatori sincroni hanno prestazioni migliori.
La figura 2 mostra un contatore asincrono in avanti modulo 8. E' realizzato con tre flip-flop JK collegati come flip-flop toggle con l'ingresso T sempre alto. Il segnale `bar(RESET)` permette di azzerare il contatore applicando un livello basso di tensione agli ingressi asincroni clear (`bar(CL)` attivo basso) dei tre TFF. Osservando il diagramma temporale si comprende il funzionamento del contatore:
Nel caso in figura, con tre FF, si ottiene un contatore modulo 8; generalizzando con un numero n di flip-flop si può realizzare un contatore di modulo `2^n` (cioè che conta da 0 a `2^n -1`). Osserviamo inoltre che:
La figura 2 mostra come ottenere un contatore binario modulo 10. Il circuito deriva un contatore modulo 16, realizzato con quattro JKFF, che viene resettato quando il conteggio arriva a 10 con una porta NAND. Osservando il diagramma temporale si vede infatti che quando si raggiunge la combinazione 1010 l'uscita della porta NAND diventa bassa impostando a 0 tutti i FF tramite gli ingressi asincroni CL attivi bassi.
Generalizzando, per realizzare un contatore asincrono di modulo qualsiasi, si deve:
Come esempio di contatore integrato il testo propone il 74293. L'integrato contiene un contatore modulo due (divisore per due) e uno modulo otto che possono essere usati separatamente o collegati insieme per realizzare un contatore modulo 16. Due ingressi di reset, che pilotano una porta NAND interna, permettono di realizzare contatori di modulo inferiore (si veda il circuito nel datasheet).
Per realizzare un contatore all'indietro modulo 8 si può utilizzare il circuito di figura 8. In funzionamento è il seguente:
In sintesi anche nei contatori a decremento le combinazioni si ottengono dalle uscite non complementate ma il clock dei FF successivi al primo vengono vengono pilotati da quelle complementate. Generalizzando è possibile realizzare dei contatori avanti/indietro (up/down) cambiando il collegamento di CK da Q a `barQ` a seconda del verso desiderato.
Il difetto principale dei contatori asincroni è il fatto che i vari FF non commutano contemporaneamente a causa del tempo di propagazione dei FF stessi2). Questo fenomeno, in particolare se il modulo è elevato, limita la frequenza massima a cui può operare un contatore.
I contatori sincroni sono realizzati con flip-flop comandati tutti dallo stesso segnale di clock. Hanno prestazioni migliori di quelli asincroni, in particolare:
Per comprendere il funzionamento di un contatore sincrono conviene partire dalla tavola della verità (in figura 10 quella di un generico contatore modulo 16). Si nota che:
Per ottenere questo comportamento con un circuito logico si possono utilizzare dei flip-flop T (dei JK con gli ingressi J e K collegati insieme) attivati da un unico segnale di clock e pilotati con l'ingresso T:
Il circuito risultante è quello mostrato in figura 10. Per realizzare contatori sincroni di modulo diverso si procede in maniera simile, utilizzando FF T e porte AND3).
Le figure 12 e 13 mostrano come le prestazioni dei contatori sincroni sono superiori a quelle degli asincroni:
Torna all'indice.