Contatori sincroni: implementazione ed integrati commerciali

In questo video, continuo a parlare dei contatori sincroni, concentrandomi in particolare sulla progettazione di un contatore sincrono generico modulo-K, con un esempio dettagliato di un contatore modulo-6 [00:00]. Inizio ribadendo che i contatori sincroni superano quelli asincroni, nonostante la loro maggiore complessità [00:28].

Successivamente, presento i passaggi chiave per la progettazione di un contatore sincrono modulo-K arbitrario, che includono [00:46]:

  • Determinare il numero di flip-flop necessari.
  • Definire gli stati indesiderati.
  • Progettare una funzione combinatoria per la transizione tra gli stati.
  • Definire la sequenza degli stati del contatore.
  • Assicurare i valori di input corretti per la commutazione di ogni stadio.

Un aspetto cruciale che affronto è il blocco (lockout), che si riferisce alla capacità del contatore di tornare a uno stato desiderato dopo averne incontrato uno indesiderato a causa di disturbi [01:24]. Sottolineo che un contatore sincrono è un tipo specifico di macchina di Moore [01:43].

Per l’esempio del contatore modulo-6, spiego che sono necessari tre flip-flop JK per ottenere sei stati possibili (S0-S5) [02:03]. Illustro le transizioni di stato utilizzando tabelle, mostrando come i valori di output cambiano ad ogni impulso di clock, tornando a zero dopo aver raggiunto il cinque [03:09]. Introduco anche la tabella della verità di un flip-flop JK e una versione compatta che mostra gli input J e K richiesti per le transizioni di stato desiderate [03:42].

Spiego il processo di progettazione delle funzioni combinatorie per gli input di ogni flip-flop (J0, K0, J1, K1, J2, K2) utilizzando le mappe di Karnaugh, spiegando come le condizioni “don’t care” (X e XX) semplificano la logica [08:18]. Ad esempio, mostro come J0 e K0 per il bit meno significativo (Q0) siano sempre uno, indicando un toggle costante [10:04].

Successivamente, dimostro come verificare gli stati indesiderati (110 e 111 per un contatore modulo-6) per assicurarsi che il sistema non rimanga bloccato in un lockout [15:26]. Calcolo gli stati successivi per queste configurazioni indesiderate, confermando che il contatore alla fine ritorna a uno stato desiderato entro due impulsi di clock [16:10]. Questo è rappresentato visivamente tramite un diagramma di stato [17:39].

Passo quindi all’implementazione pratica del contatore modulo-6 utilizzando Logisim Evolution [18:38]. Mostro come i flip-flop JK siano costruiti utilizzando stadi master-slave set-reset e come funziona il circuito complessivo del contatore [18:45]. Dimostro che l’attivazione del reset riporta il contatore a zero, permettendogli di riprendere il conteggio [19:37].

Approfondisco il concetto discutendo come creare contatori sincroni up/down aggiungendo input di controllo alla logica combinatoria, progettando efficacemente macchine a stati più complesse [19:54].

Infine, fornisco una panoramica dei circuiti integrati commerciali per i contatori, evidenziandone le caratteristiche come essere solo up o up/down, presettabili e avere reset asincroni o sincroni [21:14]. Utilizzo il contatore decimale BCD 74LS160 come esempio pratico, mostrando le sue capacità di cascata e come ottenere la divisione di frequenza (ad esempio, dividendo per 10 o 100) utilizzando la sua uscita di conteggio terminale [22:03]. Dimostro questa configurazione su una breadboard con un oscilloscopio, verificando la divisione di frequenza [24:00].

Concludo menzionando brevemente i contatori ad anello e i contatori Johnson, spiegando come i registri a scorrimento possano essere utilizzati per creare sequenze di conteggio specifiche. Mentre i contatori ad anello richiedono più flip-flop e un’inizializzazione precisa, i contatori Johnson sono più efficienti in termini di utilizzo dei flip-flop e sono meno suscettibili al blocco [28:48].

Avatar Paolo Godino