Strumenti Utente

Strumenti Sito


sezione_5b

5B - Contatori

1 Generalità

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:

  • contatori asincroni, dove il clock è applicato solo al primo flip-flop
  • contatori sincroni, dove lo stesso segnale di clock è applicato a tutti i flip-flop

I contatori sincroni hanno prestazioni migliori.

2 Contatori asincroni

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:

  • il clock è applicato solo al primo FF che commuta ad ogni impulso (fronte di discesa)
  • l'uscita Q0 del primo contatore è usata come clock del secondo FF e così via per i FF successivi
  • il secondo contatore commuta con frequenza dimezzata rispetto al primo; ogni contatore successivo fa lo stesso e si comporta da divisore di frequenza per due
  • osservando le tre uscite - con Q0 come bit meno significativo - si vede come la sequenza di combinazioni prodotta corrisponde al conteggio in binario da 000 a 111

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:

  • tutte le uscite hanno un duty-cycle del 50%
  • è possibile ottenere un contatore anche con FF attivi sul fronte di salita collegando il clock alle uscite complementate (`bar Q`) dei FF precedenti

Contatori di modulo qualunque

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:

  • realizzare un contatore binario di modulo maggiore
  • individuare la combinazione delle uscite corrispondente al modulo desiderato
  • collegare a una porta NAND le uscite che in quella combinazione valgono 1
  • pilotare gli ingressi CL attivi bassi con l'uscita della NAND1)

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

Contatori a decremento

Per realizzare un contatore all'indietro modulo 8 si può utilizzare il circuito di figura 8. In funzionamento è il seguente:

  • l'ingresso preset (`PR` attivo basso) permette di impostare il contatore al valore massimo, con tutti i FF a 1
  • ad ogni fronte di discesa del clock l'uscita Q0 del primo FF commuta
  • ad ogni fronte di salita di Q0 corrisponde un fronte di discesa dell'uscita complementata `bar(Q_0)`, lo stesso avviene per i FF successivi
  • l'uscita complementata `bar(Q_0)` viene usata per pilotare il clock del FF successivo
  • osservando il diagramma temporale delle uscite Q2, Q1 e Q0 si osserva che le combinazioni prodotte corrispondono al conteggio in binario da 111 a 000, cioè da 7 a 0 in decimale

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.

Limiti in frequenza dei contatori asincroni

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.

Extra

  • lezione multimediale 5B.1 e 5B.2: contatori asincroni in avanti e all'indietro
  • scheda di laboratorio 5B.1: analisi sperimentale di contatori elementari asincroni
  • esercizi svolti: 1 (contatore in avanti con flip-flop D), 2 e 3 (contatore avanti e indietro modulo 12), 6 (reset all'accensione con gruppo RC), 7 (contatore modulo 10 con ingressi preset invece che clear)

3 Contatori sincroni

I contatori sincroni sono realizzati con flip-flop comandati tutti dallo stesso segnale di clock. Hanno prestazioni migliori di quelli asincroni, in particolare:

  • possono lavorare a frequenze più elevate
  • non producono combinazioni errate dovute ai tempi di propagazione (come avviene per i contatori asincroni dove ogni FF viene attivato dall'uscita del precedente)

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:

  • il FF con `Q_0`, che contiene il LSB, commuta ad ogni fronte del clock
  • il FF successivo, con `Q_1`, commuta quando `Q_0` vale 1
  • quello successivo ancora, con `Q_2`, quando `Q_0` e `Q_1` valgono 1
  • … e così via

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:

  • sempre alto per il FF con uscita `Q_0`
  • collegato a `Q_0` per il FF con uscita `Q_1`
  • pilotato da una AND con `Q_0` e `Q_1` in ingresso, per il FF con uscita `Q_2`
  • … e così via

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:

  • nella prima figura si vede come un contatore asincrono che funziona correttamente a 1 kHz produce risultati errati a 10 MHz a causa del tempo di propagazione dei FF (il segnale in alto è il clock, gli altri i quattro bit da `Q_0` a `Q_3`)
  • alla stessa frequenza di 10 MHz un contatore sincrono continua a funzionare correttamente

Torna all'indice.

1)
con ingressi clear attivi alti si usa una porta AND invce di una NAND
2)
il caso peggiore si ha quando si passa da tutti 1 a tutti 0
3)
per realizzare contatori all'indietro si utilizzerà l'uscita `bar Q` al posto di `Q`; qui un'immagine che mostra un contatore in avanti modulo 10
Questo sito Web utilizza i cookie. Utilizzando il sito Web, l'utente accetta la memorizzazione dei cookie sul proprio computer. Inoltre riconosci di aver letto e compreso la nostra Informativa sulla privacy. Se non sei d'accordo, lascia il sito.Maggiori informazioni sui cookie
sezione_5b.txt · Ultima modifica: 2021/04/20 15:57 da admin