Progettazione di un Contatore a Rinculo Modulo-12 con Flip-Flop JK
Costruzione di un contatore asincrono divide-per-12
Un contatore modulo-12 (mod-12) sequenzia attraverso 12 stati (0–11) prima di resettarsi. Poiché 24 = 16 > 12, sono richiesti quattro flip-flop JK. L'architettura asincrona (a rinculo) è semplice ma mostra accumulo di ritardo di propagazione—adatta per basse-medie velocità di orologio.
Passi di progettazione
- Numero di stati: 12 stati → 4 flip-flop (Q3 Q2 Q1 Q0, Q0 = LSB).
- Sequenza binaria naturale: 0000 (0) → 1011 (11) → Reset a 0000.
- Condizione di reset: Stato 12 (1100) deve attivare il clear asincrono. Rileva Q3·Q2 (poiché 1100 = Q3=1, Q2=1, Q1=0, Q0=0). Meglio: rileva 1100 (12) o 1101 (13) per garantire un reset senza glitch. Pratica standard: Rileva 1100 (Q3Q2) tramite porta AND → Clear tutti i FF.
Logica ingressi JK per conteggio binario crescente
Per un contatore a rinculo crescente, ogni stadio commuta quando tutti gli stadi inferiori sono ALTO.
- FF0 (Q0): J=1, K=1 (commuta a ogni orologio)
- FF1 (Q1): J=Q0, K=Q0 (commuta quando Q0=1)
- FF2 (Q2): J=Q0·Q1, K=Q0·Q1
- FF3 (Q3): J=Q0·Q1·Q2, K=Q0·Q1·Q2
Connessione semplificata (usando la caratteristica di toggle dei FF)
Poiché J=K=T per modalità toggle, collega ogni J/K all'AND di tutte le uscite Q inferiori. Per un contatore 4-bit:
CLK ───►|FF0|──► Q0 J=1, K=1 Q0 ────►|FF1|──► Q1 J=Q0, K=Q0 Q0·Q1 ──►|FF2|──► Q2 J=Q0·Q1, K=Q0·Q1 Q0·Q1·Q2►|FF3|──► Q3 J=Q0·Q1·Q2, K=Q0·Q1·Q2 RESET: Q3·Q2 ──► AND ──► CLR (tutti i FF)
Implementazione logica di reset
Una porta AND che monitora Q3 e Q2 attiva il CLEAR asincrono quando il conteggio raggiunge 12 (1100). Il contatore visita brevemente lo stato 12 prima di cancellare—larghezza glitch = ritardo di propagazione attraverso FF3 + porta AND (~10–20 ns per 74LS/HC). Per output senza glitch, usa un reset sincrono (decodifica stato 11 → carica 0 al prossimo orologio) o un contatore sincrono (es. 74LS161/163).
Considerazioni di temporizzazione
- Frequenza orologio massima: fmax ≈ 1 / (n × tpd). Per 4× 74HC74 (tpd≈15ns): fmax ~ 16 MHz. Per 74LS: ~25 MHz.
- Sfasamento di propagazione: Q3 cambia ~3×tpd dopo Q0. Output non simultaneamente valido — evita di usare come bus indirizzo senza sincronizzazione.
- Reset all'accensione: Aggiungi rete RC sui pin CLR per avvio deterministico.
Opzioni di implementazione IC
- Discreto: 4× 74HC76 / 74HC112 (doppio JK) + 74HC08 (AND).
- Chip singolo sincrono: 74HC161 (4-bit sync binary, async clear) + porta AND esterna su Q3Q2 per mod-12. Preferito per affidabilità.
- Programmabile: 74HC163 (sync clear) o GAL/PLD/FPGA.
Applicazioni
- Partitori di orologio (12 MHz → 1 MHz).
- Contatore decade BCD (mod-10) + mod-12 → orologio 12 ore.
- Sintetizzatori di frequenza, generatori di baud rate.