Il contatore Johnson: Architettura anello-torto e applicazioni
Logica sequenziale sincrona: L'anello camminante
Il contatore Johnson (anche twisted-ring counter, walking-ring counter, Möbius counter) è un registro a scorrimento dove l'uscita complementata dell'ultimo stadio si riporta all'ingresso del primo. Questa singola inversione trasforma un contatore binario 2n in un generatore di sequenza 2n-stati con proprietà uniche.
Definizione strutturale
- n flip-flop D (o JK) in cascata: Qi → Di+1.
- Feedback: Q̅n-1 → D0 (feedback invertito).
- Orologio: Orologio sincrono comune a tutti gli stadi.
- Reset: Cancellazione asincrona o sincrona a "00…0" (preferito per avvio deterministico).
Sequenza di stati (Esempio n=4)
Orologio | Q3 Q2 Q1 Q0 | Decimale | Note ------|-------------|---------|------ 0 | 0 0 0 0 | 0 | Stato di reset 1 | 1 0 0 0 | 8 | Lo 0 invertito riportato indietro 2 | 1 1 0 0 | 12 3 | 1 1 1 0 | 14 4 | 1 1 1 1 | 15 5 | 0 1 1 1 | 7 | Lo 1 invertito riportato indietro 6 | 0 0 1 1 | 3 7 | 0 0 0 1 | 1 8 | 0 0 0 0 | 0 | Il ciclo si ripete (8 stati = 2n)
Osservazione chiave: Solo un bit cambia per orologio (stati adiacenti Gray-code). Questo elimina i glitch di decodifica.
Caratteristiche definitorie
- Modulo = 2n: 4 FF → Mod-8; 8 FF → Mod-16.
- Auto-avviante (con riserve): Da qualsiasi dei 2n stati, il contatore entra nel ciclo principale 2n entro ≤ n orologi. Tuttavia, può bloccarsi in cicli "morti" (es. 1010… per n=4) se non resettato. Includi sempre un reset di accensione.
- Decodifica semplice: Ogni stato è un pattern one-hot unico su bit adiacenti (es. 0001, 0011, 0111…). Una porta AND a 2 ingressi per stato decodifica pulitamente senza glitch.
- Ciclo di lavoro: L'uscita di qualsiasi stadio è un'onda quadra a fCLK / 2n con ciclo di lavoro 50%.
Confronto: Johnson vs Anello vs Binario
| Tipo di contatore | FF (n) | Stati | Decodifica | Max Freq | Auto-start |
|---|---|---|---|---|---|
| Binario (Ripple) | n | 2n | Complessa (porte n-input) | Bassa (ritardo propagazione) | Sì |
| Binario (Sincrono) | n | 2n | Complessa | Alta | Sì |
| Anello (Dritto) | n | n | Triviale (1 FF per stato) | Massima | No (richiede preset) |
| Johnson (Torto) | n | 2n | Semplice (AND 2 ingressi) | Alta | Sì (con reset) |
Applicazioni classiche
- Divisione di frequenza: Dividi-per-2n con ciclo di lavoro 50% (es. stadio 4 → ÷8 orologio).
- Sequenziatori macchine a stati: Guida motore passo-passo (4 fasi), inseguitori LED, controller semafori.
- Decodifica senza glitch: Generazione fasi orologio non sovrapposte (φ1, φ2, φ3, φ4) per pompe di carica o logica dinamica.
- Generatore pattern pseudo-casuale: Con feedback XOR su tap selezionati, diventa simile a LFSR ma con sequenze più lunghe.
- Tempistica ADC: Sequenziamento controllo registro approssimazione successiva (SAR).
Nota implementazione (74HC4017 / CD4017)
L'ubiquo CD4017 / 74HC4017 è un contatore Johnson a 5 stadi (10 uscite decodificate). Include carry-out (Q5̅) per cascata. Per Mod-8, usa uno stadio 4 (74HC164 + inverter feedback) o comanda il Q8 del 4017 a Reset.