Contatore asincrono modulo 10 in avanti


Analisi delle forme d'onda ed anomalia di funzionamento nel passaggio da una configurazione dispari ad una pari.
Software di simulazione: PSpice 9.1 - Versione di valutazione.
A cura del prof. Giuseppe Spalierno docente di Elettronica presso I.T.I. "Modesto PANETTI" di BARI.
Ultima versione: Dicembre 2003


Il contatore asincrono modulo 10 in avanti, come è noto, è costituito da 4 flip-flop di tipo J-K con CLEAR collegati in modo che l'uscita Q di un flip-flop comandi l'ingresso di clock CK del flip-flop successivo.

Una porta NAND a due ingressi, pilotato dalle uscite Q4 e Q2, comanda gli ingresso asincroni CLR di azzeramento dei 4 flip-flop. In questo modo, il contatore, quando si trova nello stato 9, cioè: Q4 Q3 Q2 Q1 = 1 0 0 1,  passa nello stato 10 al successivo impulso di clock, cioè: Q4 Q3 Q2 Q1 = 1 0 1 0.

Per la prima volta si ha: Q4 Q2 = 1 1 e quindi l'uscita del NAND passa da 1 a 0: CL = 0 e ciò porta tutti i flip-flop nello stato 0, indipendentemente dalla presenza di impulsi di clock.

Lo stato 10 del contatore dura, pertanto, sono qualche decina di nanosecondi poiché decade spontaneamente nello stato 0 per l'effetto di CL=0. Si è così alterata la sequenza numerica da 0 a 15 che un contatore binario a 4 bit genera spontaneamente quando sollecitato dagli impulsi di clock.

Tale contatore si dice a modulo 10, o contatore BCD (Binary Coded Decimal) perché la sequenza va da 0 a 9 per poi riprendere nuovamente da zero.  In figura 1 si mostra lo schema logico realizzato in ambiente PSpice 9.1.

Fig.1. -  Schema logico del contatore asincrono BCD realizzato con flip-flop J-K.

I simboli HI forniscono, ai relativi ingressi, il livello logico alto per cui i flip-flop funzionano a commutazione, cioè sulla quarta combinazione della loro tabella della verità.

Il clock è stato fornito dal generatore digitale DigClock con impulsi di periodo 1µs. Facendo doppio click sul simbolo DSTM1 è possibile impostare le durate del livello alto e basso del clock desiderato.  In fig.2 si mostra tale finestra.

Fig.2. -  I campi ONTIME e OFFTIME sono impostati a 0,5µs per cui il periodo del clock sarà di 1µs.

Per verificare il corretto funzionamento del circuito occorre impostate il tipo di analisi da eseguire.
Dal menù Analysis si sceglie la voce Setup. Si ottiene una finestra come quella della fig.3.

Fig.3. -  Setup del menù Analysis. Si deve abilitare l'analisi ai transienti.

Innanzitutto, poiché il circuito presenta elementi di memoria (i flip-flop), si deve fare click sul pulsante Digital setup ed indicare  lo stato iniziale dei flip-flop. Imporremo tutti a 0. Facendo click sul pulsante Transient si stabilisce il tempo massimo visualizzato sull'asse orizzontale del monitor. Volendo visualizzare tutta la sequenza del contatore mod.10 devo imporre un tempo non inferiore a 10µs. Si sceglie 15µs come in fig.4.

 

 

 

Fig.4. -  Scheda Transient.
Nel campo final time si è inserito il valore 15µs.
Il campo print step deve contenere il passo di campionamento.
Più piccolo è il valore inserito migliore è la rappresentazione grafica delle onde ottenute ma il file di elaborazione dei dati risulterà molto grande.

Per realizzare la simulazione, finalmente, si attiva il comando Analysis/Simulate (o F11). Viene invocato il programma PSpice che elabora i dati e li visualizza attraverso il programma  Probe. Si ottiene il riquadro di un analizzatore temporale di stati logici vuoto. Dal menù Add scegliamo il comando Trace. Si ottiene una schermata come in fig.5.

Fig.5. -  Elenco delle grandezze, a sinistra, che si possono aggiungere sullo schermo.

Dopo aver selezionato le funzioni DSTM1:1, Q1, Q2, Q3, Q4 e CL si ottiene la visualizzazione delle forme d'onda selezionate di una porzione di schermo, di diverso colore, come si mostra in fig.6.

Fig.6. -  Andamento temporale delle linee logiche selezionate.

La forma d'onda indicata con {Q4 Q3 Q2 Q1} visualizza il codice esadecimale corrispondente ai quattro bit. Si osservi il corretto funzionamento da contatore mod.10. Infatti applicando un clock dopo lo stato 9 si genera un breve impulso negativo sulla linea CL che resetta i flip-flop e il contatore ritorna a zero. Si notano brevi transizioni illeggibili nel passaggio da un numero dispari ad un numero pari, specie dal sette all'otto.

Se si esegue una "zoomata" intorno all'istante 10µs, come in fig.7, è possibile vedere in dettaglio gli effetti del tempo di ritardo di propagazione dei flip-flop e della porta logica NAND.

Fig.7. - Analisi temporale delle forme d'onda nell'intorno dell'istante 10µs.

Nell'istante esatto 10µs, il fronte di discesa del clock (DSTM1:1)  fa commutare a zero il flip-flop Q1 dopo un tempo di ritardo di 25ns circa. Il contatore si porta, pertanto, seppur per pochissimo tempo, nello stato 8. Il  fronte di discesa di Q1 fa commutare Q2 dopo ulteriori 25ns. Dopo tale intervallo di tempo Q2=1 e il contatore è nello stato 10 (A in esadecimale).

Poiché ora si ha: Q4=1 e Q2=1, l'uscita CL della porta NAND va al livello basso, cosa che produce l'azzeramento di tutti i flip-flop.
I passaggi di stato indesiderati, 9 - 8 - A - 0 anziché semplicemente 9 - 0, hanno durata infinitesima e quindi non sono percepibili all'occhio umano se tali configurazioni sono inviate su display. Se, invece, tali linee sono inviate a particolari circuiti elettronici, si potrebbe verificare che la lettura dei quattro bit in un istante a cavallo tra 10.03µ e 10.07µs dia un responso che non corrisponde a 9 e neanche a 0.    In fig.8, infine, si mostra l'effetto della commutazione sequenziale e non contemporanea dei vari flip-flop quando il contatore passa dallo stato 7 allo stato 8.

   

Fig.8. -  Forme d'onda del contatore durante il passaggio dallo stato 7 allo stato 8.

Si nota che, a causa del ritardo di propagazione dei flip-flop, la successione degli stati, dopo l'impulso di clock giunto nell'istante 8µs, è la seguente: 7 - 6 - 4 - 0 ed infine 8.