Contatore
Johnson ad autocorrezione
Il
contatore Johnson è una particolare applicazione dei registri a scorrimento,
realizzabile con i normali flip flop, in cui l’uscita negata dell’ultimo
flip-flop è collegata all’ingresso dati del primo flip-flop. I bit, ad ogni
impulso di clock, scorrono da un flip-flop a quello successivo. Nel caso di 4
bit, supponendo i flip-flop inizialmente azzerati, si ottiene la seguente
tabella della verità che evidenzia alcune curiose caratteristiche di
funzionamento.
CK |
Q1 |
Q2 |
Q3 |
Q4 |
Q4N |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
2 |
1 |
1 |
0 |
0 |
1 |
3 |
1 |
1 |
1 |
0 |
1 |
4 |
1 |
1 |
1 |
1 |
0 |
5 |
0 |
1 |
1 |
1 |
0 |
6 |
0 |
0 |
1 |
1 |
0 |
7 |
0 |
0 |
0 |
1 |
0 |
8 |
0 |
0 |
0 |
0 |
1 |
Con
Q4N si è indicata l’uscita negata, quella, cioè, che pilota l’ingresso D
del primo F-F.
Si
osservi che l’uscita Q4 per 4 impulsi di clock è a livello 0 e per quattro
impulsi di clock è al livello 1. Poi si ripete la stessa situazione. La forma
d’onda su Q4 (ed anche sulle altre linee) è quadra con periodo 8 volte (2 x 4
ove 4 è il numero di flip-flop impiegati) quello di clock. In generale, detto n
il numero di flip-flop, su ciascuna uscita si preleva una forma d’onda
rigorosamente quadra con periodo 2n rispetto a quello del clock.
Si
mostra in fig.1 lo schema elettrico del contatore Johnson ad autocorrezione.
Fig.1
Contatore Johnson ad autocorrezione.
Ciò
è reso possibile dalla funzione NAND tra Q1
e Q2 negato. Tale funzione si applica agli ingressi di reset dei flip flop 3 e
4. L’uscita della porta NAND si porta a zero solo quando si ha: Q1=1 e Q2=0.
Dalla
tabella di funzionamento ciò si ottiene solo se Q3 e Q4 sono uguali a 0. Se ciò
non si verifica ci “pensa” la porta NAND ad azzerare Q3 e Q4 e, quindi, a
ristabilire il corretto funzionamento. Se ci si ferma a riflettere su altre
possibili situazioni anomale si giunge alla conclusione che la soluzione è
proprio quella di azzerare Q3 e Q4 quando Q1 Q2 = 10.
Fig.2
Forme d’onda del contatore Johnson ad autocorrezione.
Il
generatore di clock DSTM1, attivabile con la voce DigClock, ha periodo 1us:
0.5us per il livello logico basso e 0.5us per il livello logico alto.
In
questo modo, nei 10us assegnati alla voce final time in Analysis/Setup/Transient,
tale forma d’onda presenta un livello basso iniziale di 0.3us seguito dal
livello logico alto. Inizialmente, quindi, si è simulato l’errore imponendo
uno stato iniziale pari a 1101 (configurazione non prevista dal ciclo Johnson).
Dopo due impulsi di clock si rientra nel ciclo Johnson corretto.