Flip-Flop SR Pilotato da Orologio: Funzionamento, Tabella della Verità e Progettazione Sincrona
Cos'è un Flip-Flop SR Pilotato da Orologio?
Un flip-flop SR pilotato da orologio (chiamato anche latch SR pilotato) aggiunge un ingresso di orologio (enable) a un latch SR base, consentendo cambiamenti di stato solo quando l'orologio è attivo. Questa sincronizzazione è fondamentale per costruire logica sequenziale affidabile—contatori, registri, macchine a stati—dove tutte le transizioni si allineano a un comune fronte di orologio.
Struttura Interna
- Latch centrale: Due porte NOR incrociate (attive-alto) o NAND (attive-basso).
- Gating dell'orologio: Due porte aggiuntive (AND per latch NOR, OR per latch NAND) che passano S e R al latch centrale solo quando CLK = 1 (o fronte di salita per versioni edge-triggered).
- Ingressi: S (Set), R (Reset), CLK (Orologio/Enable).
- Uscite: Q (stato), Q̅ (complemento).
Funzionamento Sensibile al Livello (Latch Pilotato)
| CLK | S | R | Qnext | Q̅next | Azione |
|---|---|---|---|---|---|
| 0 | X | X | Qprev | Q̅prev | Hold (bloccato) |
| 1 | 0 | 0 | Qprev | Q̅prev | Hold |
| 1 | 1 | 0 | 1 | 0 | Set |
| 1 | 0 | 1 | 0 | 1 | Reset |
| 1 | 1 | 1 | ? | ? | Proibito (metastabile/indefinito) |
X = non importante. Lo stato proibito (S=R=1) deve essere prevenuto dalla progettazione.
Varianti Edge-Triggered
Le versioni master-slave o true edge-triggered (derivate da D-type) campionano S/R solo sul fronte di salita (o discesa) dell'orologio, eliminando la finestra di trasparenza e le condizioni di gara. Queste sono preferite nei sistemi sincroni ad alta velocità.
Perché Usare un Flip-Flop SR Pilotato da Orologio?
- Sincronizzazione: Tutti gli aggiornamenti di stato avvengono a tempi di orologio noti, consentendo analisi dei tempi e gestione della metastabilità.
- Ritenzione dello stato: Le uscite rimangono indefinite mentre CLK=0, indipendentemente dal rumore su S/R.
- Blocco di costruzione: Base per flip-flop JK, T, D; registri a scorrimento; contatori binari.
Note di Progettazione Pratiche
- Non permettere mai S=R=1 simultaneamente—aggiungi logica di steering se necessario.
- Rispetta i tempi di setup/hold rispetto al fronte dell'orologio (per edge-triggered).
- Per ASIC/FPGA: deduce da RTL (always_ff @(posedge clk) ...) invece di instantiamento a livello di porte.
- Debounce interruttori meccanici che guidano gli ingressi S/R.
Esempio: Un contatore sincrono ascendente a 4 bit usa quattro flip-flop SR (o D) pilotati da orologio con logica combinazionale dello stato successivo. Ogni flip-flop inverte quando tutti i bit inferiori sono 1—conteggio pulito, senza glitch.