Latch D gated
Circuiti Sequenziali e Programmabili - Appunti Questa nota consolidata sintetizza i concetti chiave presentati nel testo fornito, con spiegazioni estese, esempi e riferimenti alle formule fondamentali. Contiene definizioni, tavole logiche e تقدم di funzionamento per latch, flip-flop, registri, contatori, generatori di clock e relativa temporizzazione. Le espressioni matematiche sono riportate tra in LaTeX. ### Panoramica generale I circuiti sequenziali sono caratterizzati dalla dipendenza non solo dai livelli logici presenti agli ingressi in un dato istante, ma anche dallo stato precedente delle uscite. L’elemento chiave è la memoria: il nuovo stato delle uscite al tempo dipende dallo stato degli ingressi al tempo e dallo stato delle uscite al tempo . Nei dispositivi sequenziali si usano elementi di memoria quali latch e flip-flop, spesso integrati in registri, contatori e memorie. Il clock (un treno di impulsi periodici) fornisce la temporizzazione cui fa riferimento l’intero sistema. I segnali di abilitazione, controllo e sincronismo (clock) determinano quando le informazioni possono essere memorizzate o trasferite tra le diverse fasi del sistema. ### Latch e memorie elementari #### Latch SR a porte NOR e a porte NAND Un latch SR è bistabile: può memorizzare un bit definito da due ingressi S (set) e R (reset). Inlogica positiva (S e R attivi alti) le situazioni fondamentali sono:
- S = R = 0: mantenga lo stato precedente (memoria).
- S = 0, R = 1: reset (Q = 0, Q̄ = 1).
- S = 1, R = 0: set (Q = 1, Q̄ = 0).
- S = R = 1: stato non usato/indeterminato per latch SR a porte NOR (o equivalente non utilizzato per latch NOR). In latch SR a porte NAND, gli ingressi sono attivi bassi e S = R = 0 è la condizione di memoria. Nel diagramma SR a porte NOR si ha: Q+1 e Q̄+1 dipendono dalle combinazioni degli ingressi. La tavola di verità riassume la relazione tra ingressi e uscite: quando S=R=0, Q+1=Q e Q̄+1=Q̄. Esempi pratici includono l’eliminazione dei rimbalzi di pulsanti (debounce) usando latch statici o latch con abilitazione. #### Latch con abilitazione (gated latch) Un latch SR gated aggiunge un ingresso EN che controlla l’abilitazione del latch. Quando EN = 0, le porte di controllo sono disabilitate e le uscite restano in memoria nonostante i cambiamenti su S e R. Quando EN = 1, gli ingressi S e R diventano attivi e determinano Qn+1. La tavola di verità mostra che l’input S’ e R’ (dove S’ = S e R’ = R) diventano gli ingressi attivi alti al variare di EN; in pratica EN funge da gating o da strobe. Esempio pratico: un latch SR gated permette memoria temporanea finché EN è attivo, consentendo di catturare dati solo quando gli ingressi si sono stabilizzati. L’uso di latch con abilitazione riduce le ALEE (accidentali) dovute ai differenti tempi di propagazione e rende possibili memorie affidabili quando i dati provengono da altri dispositivi. #### Latch tipo D gated Il latch di tipo D gated è una variante in cui l’ingresso D viene memorizzato solo se EN è attivo; altrimenti il latch conserva lo stato precedente. Il latch D è spesso ritrascritto in forma SR tramite una porta NOT fra S e R, offrendo due soli stati di input contemporanei. La tavola di verità, in Fig. 7b, descrive le configurazioni: quando EN = 0, Qn+1 = Qn. Se EN = 1 e D = 0, si ottiene Reset, se D = 1, Set. L’uso di latch D è utile per creare memorie register. Il latch D elimina lo stato indeterminabile del latch SR, fornendo un comportamento più controllato e prevedibile, ideale per la memorizzazione di singoli bit di dato in sistemi sincroni o asincroni controllati da un segnale di abilitazione. ### Flip-Flop (FF) A differenza dei latch, che sono sensibili al livello del segnale di abilitazione (level-triggered), i flip-flop sono elementi di memoria sincronizzati con il fronte del segnale di clock (edge-triggered). Questo significa che il loro stato cambia solo in corrispondenza del fronte di salita (positive edge-triggered) o di discesa (negative edge-triggered) del clock, rendendoli fondamentali per la progettazione di circuiti sincroni complessi. Questa caratteristica previene problemi di temporizzazione come le race conditions. #### Flip-Flop di tipo D Il flip-flop D è il tipo più comune e versatile, largamente utilizzato per la memorizzazione di dati e la costruzione di registri a scorrimento, contatori e memorie.
- Funzionamento: Il dato presente sull'ingresso D viene trasferito all'uscita Q solo in corrispondenza del fronte attivo del segnale di clock (CLK). Tra due fronti attivi, lo stato dell'uscita Q rimane invariato, indipendentemente dalle variazioni sull'ingresso D.
- Tavola di Verità:
| CLK | D | Q(t+1) |
|---|---|---|
| Front | 0 | 0 |
| Front | 1 | 1 |
| No Front | X | Q(t) |
- Parametri Temporali: Per un funzionamento affidabile, è necessario rispettare alcuni timing cruciali:
- Tempo di setup (): Il periodo minimo durante il quale il dato sull'ingresso D deve essere stabile prima del fronte attivo del clock.
- Tempo di hold (): Il periodo minimo durante il quale il dato sull'ingresso D deve rimanere stabile dopo il fronte attivo del clock.
- Tempo di propagazione (): Il tempo impiegato dal segnale per propagarsi dall'ingresso (D o CLK) all'uscita Q del flip-flop.
Flip-Flop JK
Il flip-flop JK è più versatile del flip-flop D e del vecchio flip-flop SR, poiché il suo stato "indeterminato" è stato risolto. Fornisce quattro modalità operative basate sugli ingressi J, K e il segnale di clock.
- Funzionamento: Gli ingressi J (Set) e K (Reset) controllano il comportamento del FF.
- J = 0, K = 0: Mantiene lo stato precedente (Memoria).
- J = 0, K = 1: Reset (Q = 0).
- J = 1, K = 0: Set (Q = 1).
- J = 1, K = 1: Toggle (l'uscita Q commuta, cioè se era 0 diventa 1, se era 1 diventa 0). Questa è la caratteristica che risolve l'indeterminazione dell'SR.
- Tavola di Verità:
| CLK | J | K | Q(t+1) |
|---|---|---|---|
| Front | 0 | 0 | Q(t) |
| Front | 0 | 1 | 0 |
| Front | 1 | 0 | 1 |
| Front | 1 | 1 | Q̄(t) |
| No Front | X | X | Q(t) |
Il flip-flop JK è spesso utilizzato per la sua capacità di toggling, che lo rende utile nella costruzione di contatori e divisori di frequenza.
Flip-Flop T (Toggle)
Il flip-flop T (Toggle) è una versione semplificata del JK, dove gli ingressi J e K sono collegati insieme a un singolo ingresso T. È ideale per la divisione di frequenza e la costruzione di contatori.
- Funzionamento:
- T = 0: Mantiene lo stato precedente (Memoria).
- T = 1: L'uscita Q commuta (toggle) ad ogni fronte attivo del clock.
- Tavola di Verità:
| CLK | T | Q(t+1) |
|---|---|---|
| Front | 0 | Q(t) |
| Front | 1 | Q̄(t) |
| No Front | X | Q(t) |
Il flip-flop T è fondamentale per realizzare contatori binari, dove ogni FF divide per due la frequenza di clock.
Registri
I registri sono insiemi di flip-flop interconnessi, usati per memorizzare e manipolare gruppi di bit (parole di dati). Essi sono componenti essenziali delle CPU e di altri sistemi digitali.
Registro a Scorrimento (Shift Register)
Un registro a scorrimento è una catena di flip-flop collegati in modo che il dato possa essere spostato da un flip-flop all'altro ad ogni impulso di clock. Sono usati per convertire dati seriali in paralleli o viceversa, o per semplici ritardi.
- Tipi Comuni:
- SISO (Serial-In, Serial-Out): I dati vengono caricati e scaricati in serie.
- SIPO (Serial-In, Parallel-Out): I dati vengono caricati in serie e letti in parallelo. Utile per la conversione seriale-parallelo.
- PISO (Parallel-In, Serial-Out): I dati vengono caricati in parallelo e scaricati in serie. Utile per la conversione parallelo-seriale.
- PIPO (Parallel-In, Parallel-Out): I dati vengono caricati e letti in parallelo.
Contatori
I contatori sono circuiti sequenziali che generano una sequenza specifica di stati in risposta agli impulsi di clock. Sono usati in timing, controllo di sequenze e divisione di frequenza.
Contatori Asincroni (Ripple Counters)
Ogni flip-flop in un contatore asincrono è pilotato dall'uscita del flip-flop precedente. Ciò causa un ritardo di propagazione cumulativo (ripple effect) che limita la frequenza operativa.
- Funzionamento: Tipicamente, un flip-flop T è configurato per toggling (T=1). L'uscita di un FF (es. Q) pilota l'input di clock del FF successivo.
- Vantaggi: Semplici da implementare con pochi componenti.
- Svantaggi: Rischio di glitches dovuti ai tempi di propagazione diversi tra i FF, che limitano l'affidabilità ad alte frequenze.
Contatori Sincroni
In un contatore sincrono, tutti i flip-flop sono pilotati dallo stesso segnale di clock. Ciò elimina il problema del ritardo di propagazione cumulativo dei contatori asincroni, permettendo operazioni a frequenze molto più elevate. La logica di controllo per ogni flip-flop è più complessa, dipendendo dallo stato corrente degli altri flip-flop per determinare il proprio stato successivo.
- Vantaggi: Alta velocità operativa, riduzione di glitches.
- Svantaggi: Maggiore complessità di progettazione e numero di porte logiche.
Generatori di Clock e Temporizzazione
Il clock è il cuore di ogni sistema sequenziale sincrono, fornendo il segnale che sincronizza tutte le operazioni.
Oscillatori
Gli oscillatori sono circuiti che producono un segnale periodico (onda quadra, sinusoidale, etc.) senza input esterno. Nei sistemi digitali, si usano oscillatori a cristallo (Crystal Oscillators) per la loro elevata stabilità e precisione della frequenza, o multivibratori (es. 555 timer) per applicazioni meno critiche.
Distribuzione del Clock
La distribuzione efficace del segnale di clock è cruciale per prevenire problemi di clock skew (differenze nei tempi di arrivo del clock a diversi flip-flop) e clock jitter (variazioni irregolari della periodicità del clock). Si usano reti di clock dedicate (clock trees) per minimizzare queste variazioni e garantire che tutti i flip-flop ricevano il fronte di clock il più contemporaneamente possibile.