Latch, registri e parametri temporali
In questa pagina 9
I circuiti combinatori (Porte logiche CMOS - struttura statica complementare e dimensionamentoUna porta CMOS statica complementare ha una rete di pull-down (PDN, n-MOS) verso massa e una di pull-up (PUN, p-MOS) verso V_DD, duali tra loro: serie ↔ parallelo. La PDN conduce quando la funzione f degli ingressi vale 1 e porta l'uscita a 0, quindi F = NOT f (le porte a uno stadio sono invertenti). Serie di n-MOS = AND, parallelo = OR; i p-MOS (chiusi con ingresso basso) fanno l'opposto. Escursione completa, nessun consumo statico, ritardo da R e C di uscita. Dimensionamento: si parte dall'inverter di riferimento (Z_n = 1, Z_p = r ≈ 2,4) e si scala ogni transistor del numero di transistor della serie peggiore a cui appartiene, così che la resistenza nel caso peggiore uguagli quella dell'inverter (NAND2: Z_n = 2, Z_p = r; NOR2: Z_n = 1, Z_p = 2r). Per un obiettivo R_pd = R*: Z_n = m R_n0/R* con m transistor in serie nel cammino peggiore. Per minimizzare la capacità di uscita si collegano all'uscita meno drain possibile.Porte logiche CMOS - struttura statica complementare e dimensionamento →) non ricordano nulla. Un circuito sequenziale ha uscite che dipendono dagli ingressi e dallo stato attuale, memorizzato in un registro che si aggiorna a ogni periodo di clock (stato presente stato prossimo). Esistono due meccanismi di memorizzazione:
- retroazione positiva (circuiti statici): due inverter in anello hanno due stati stabili (Segnali digitali, livelli logici e margini di rumoreUn segnale digitale assume un insieme finito di valori (di solito due: bit, tipicamente 0 V e V_DD); con N bit si distinguono 2^N livelli. Il valore logico di un'uscita è garantito sopra V_OH (uno) e sotto V_OL (zero); un ingresso è letto come uno sopra V_IH e come zero sotto V_IL, con intervalli di ingresso più larghi di quelli di uscita. I margini di rumore sono NM_H = V_OH − V_IH e NM_L = V_IL − V_OL. La caratteristica di trasferimento statica (VTC) ha la soglia logica V_M (V_out = V_in); V_IL e V_IH sono i punti a pendenza −1. La proprietà rigenerativa (pendenza alta nella zona di transizione, guadagno maggiore di 1) ripulisce il segnale a ogni stadio ed è legata alla bistabilità della coppia di inverter in retroazione. Altre figure di merito: fan-in, fan-out, tempi di propagazione, potenza, costo.Segnali digitali, livelli logici e margini di rumore →, bistabilità);
- immagazzinamento di carica (circuiti dinamici): il bit è la tensione su un nodo capacitivo (Registri dinamici, C2MOS, TSPC e registri a scorrimentoI registri dinamici memorizzano il bit come carica su un nodo capacitivo in alta impedenza: meno transistor e commutazioni più rapide dei registri statici, ma il dato si perde (serve un clock minimo) e il master-slave con gate di trasmissione è sensibile alla sovrapposizione dei clock (race). Il registro C2MOS (clocked CMOS) usa inverter con transistor di clock in serie: è insensibile alla sovrapposizione dei clock (0-0 e 1-1) se i fronti sono ripidi, perché durante la sovrapposizione ciascuno stadio può solo caricare o solo scaricare il nodo, mai propagare. Il TSPC usa una sola fase di clock (nessun clock invertito) e permette di inglobare logica nei latch. Un registro a scorrimento è una cascata di registri D: a ogni fronte il dato avanza di una posizione (conversione serie-parallelo, ritardi, FIFO); il collegamento diretto richiede t_c-q > t_hold.Registri dinamici, C2MOS, TSPC e registri a scorrimento →).
Nomenclatura
Nel libro adottato un latch è sensibile al livello del clock, un registro è edge-triggered (sensibile al fronte). Molti testi chiamano flip-flop i dispositivi edge-triggered. Le due famiglie:
- latch trasparente a clock alto (positivo): se l'uscita segue l'ingresso (), se l'uscita mantiene il valore. Equazione: (un multiplexer con uscita retroazionata). Il latch negativo è il duale (trasparente per ).
- registro: campiona sul fronte del clock (di salita, per convenzione) e mantiene per tutto il periodo.
Bistabilità, scrittura e latch a multiplexer
Due inverter in anello hanno tre punti di equilibrio: due stabili (guadagno minore di ) e uno instabile in (guadagno maggiore di ): la metastabilità. Per scrivere un nuovo valore bisogna spezzare l'anello: durante la scrittura un ingresso forza lo stato (sovrastando l'inverter in retroazione), poi l'anello viene richiuso. Il clock fa da segnale di disaccoppiamento tra lo stato trasparente e lo stato di memoria. Con un multiplexer ( seleziona oppure la retroazione ) si ottiene il latch a multiplexer; versioni a soli n-MOS richiedono clock non sovrapposti.
Registro master-slave
Due latch con fasi di clock opposte in cascata: il master (trasparente con ) campiona mentre lo slave è in memoria; quando il clock sale il master memorizza e lo slave diventa trasparente e passa il valore del master a . Ne risulta un registro edge-triggered sul fronte di salita: l'uscita cambia solo in quell'istante. Il valore su è quello che aveva poco prima del fronte.
Latch SR
La coppia incrociata di porte NOR dà il latch SR (set-reset): , .
| 0 | 0 | memoria ( invariato) |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | non ammesso: entrambe le uscite a (non complementari) |
La combinazione è proibita non perché le uscite siano indeterminate durante (valgono entrambe ), ma perché se da quella configurazione si passa alla condizione di memoria () lo stato delle uscite non è più prevedibile: le due porte rilasciano insieme e vince quella casualmente più veloce (gara critica, eventualmente metastabilità). Nei latch SR sincroni (a otto transistor: la coppia incrociata più due rami in serie, uno per e uno per ) le uscite si scrivono solo se : , (la porta equivalente è un NOR con clock); è lo schema fondamentale delle celle di memoria SRAM (SRAM e DRAMSRAM e DRAM sono memorie volatili ad accesso casuale. La cella SRAM a 6 transistor è un latch di due inverter (M1-M4) con due n-MOS di accesso (M5, M6) pilotati dalla word line: uscita differenziale, veloce, grande. Lettura: BL e BL̄ precaricate, l'n-MOS driver abbassa leggermente il lato che memorizza 0 (il transistor driver deve essere più forte di quello di accesso, così il nodo non supera la soglia degli inverter); scrittura: una BL forzata a 0 porta il nodo sotto la soglia logica degli inverter in retroazione positiva, che poi si ribaltano. La DRAM a 1 transistor ha un n-MOS di accesso e una capacità di storage C_S: scrittura caricando C_S dalla BL (si perde V_T: bootstrap della WL), lettura per ridistribuzione di carica con la BL precaricata, ΔV = C_S/(C_BL + C_S)(V_X − V_PRE) ≈ 100-250 mV, distruttiva: servono sense amplifier per ogni BL e refresh periodico. Celle DRAM a 3 transistor: lettura non distruttiva.SRAM e DRAM →), ma non più usato nelle unità di elaborazione.
Parametri temporali del registro
Per un registro D (campionamento sul fronte di clock):
- tempo di propagazione clock-uscita : ritardo tra il fronte di clock e la commutazione dell'uscita (non tra e );
- tempo di setup : tempo per cui il dato deve rimanere stabile prima del fronte;
- tempo di hold : tempo per cui deve rimanere stabile dopo il fronte. Se cambia dentro la finestra attorno al fronte, il registro può non campionare correttamente o entrare in metastabilità (uscita a un livello intermedio per un tempo imprevedibile, che si ripercuote sugli stadi successivi).
Frequenza massima di clock
Tra due registri c'è una logica combinatoria con ritardo di propagazione massimo e minimo (di contaminazione) . Il dato lanciato dal primo registro deve arrivare al secondo prima che il fronte successivo cominci la sua finestra di setup: Per l'hold: il nuovo dato non deve arrivare al secondo registro troppo presto, cioè prima che sia scaduto il tempo di hold del fronte appena passato: (con ritardo di contaminazione del registro, ). Il vincolo di hold non dipende dalla frequenza: se è violato non si risolve rallentando il clock. Si ripara aumentando il ritardo minimo (inserendo, per esempio, inverter in cascata tra i due registri).
Esempio. , , logica massima : , . Hold: con e logica minima : : rispettato. Se i due registri fossero collegati direttamente () con la condizione sarebbe violata e il dato sbagliato si propagherebbe: la soluzione è inserire logica o ritardi (due inverter aggiungerebbero circa ciascuno).
Pipeline
Per una funzione complessa si possono inserire registri nel mezzo della logica: ogni stadio ha meno logica, quindi il periodo minimo si riduce ( sul massimo tra gli stadi) e la frequenza massima aumenta; costa registri in più e una latenza maggiore (il primo risultato esce dopo più cicli), mentre il throughput è di un risultato per ciclo. Esempio: una logica di con : (); divisa in tre stadi da : (), latenza invece di . La pipeline è vantaggiosa perché permette di massimizzare la frequenza di clock.
Latch e registri nella pratica
In FPGA e in VHDL i registri (D flip-flop) sono i soli elementi di memoria che si usano nei progetti sincroni; i latch compaiono per errore quando un processo combinatorio non assegna l'uscita in tutti i casi (VHDL - logica sequenziale e registriIn VHDL la logica sequenziale si descrive con processi sensibili al clock. Un registro D (flip-flop sul fronte) si scrive process(clk) con if rising_edge(clk); un latch è un processo sensibile al livello (if clk='1' then q<=d) senza altri rami. Il reset è sincrono se testato dentro rising_edge(clk) (la lista di sensibilità contiene solo clk), asincrono se testato prima, con RST nella lista di sensibilità (if rst='1' then ... elsif rising_edge(clk)). Registri a n bit con generic, registri a scorrimento (con load), contatori (up/down, con enable) si ottengono con la stessa struttura. In un progetto sincrono tutti i registri usano lo stesso clock (nessun clock generato da logica: si usano abilitazioni), i segnali esterni asincroni come i pulsanti si campionano con uno o più flip-flop (debouncing) e le cifre di un display si multiplexano con un contatore.VHDL - logica sequenziale e registri →). I vincoli di setup e hold si controllano nell'analisi di temporizzazione (Simulazione, testbench, vincoli di temporizzazione e flusso su FPGAUn progetto VHDL si verifica per simulazione con un testbench: una entity senza porte che istanzia il circuito sotto test (UUT), genera il clock (process con wait for e inversione), applica gli stimoli e controlla le uscite con assert/report/severity (note, warning, error, failure) o leggendo vettori da file (textio). Il flusso su FPGA è: descrizione VHDL, simulazione funzionale, sintesi (rete di LUT e flip-flop), implementazione (piazzamento e instradamento), analisi di temporizzazione, generazione del bitstream e programmazione della scheda. I vincoli (file XDC) assegnano i pin e definiscono il clock (periodo); l'analisi di temporizzazione verifica per ogni cammino registro-registro lo slack di setup, T − (t_c-q + t_logica + t_routing + t_su), e di hold; con slack negativo la frequenza è troppo alta: f_max = 1/(T − WNS).Simulazione, testbench, vincoli di temporizzazione e flusso su FPGA →).
Errori comuni
- Dire che è il ritardo tra e : è tra il clock e .
- Scambiare setup (prima del fronte) e hold (dopo il fronte).
- Pensare che una violazione di hold si risolva abbassando la frequenza: non dipende da .
- Dire che la combinazione proibita del latch SR rende le uscite indeterminate durante : è il passaggio alla memoria a essere imprevedibile.
- Dimenticare e nel calcolo del periodo minimo.
Versione ripasso
- Memoria: retroazione positiva (statici) o carica (dinamici); stato presente prossimo.
- Latch (sensibile al livello): positivo: (trasparente a ); registro (fronte) = due latch opposti (master-slave); scrittura: si spezza l'anello (clock = disaccoppiamento).
- Latch SR (NOR): : memoria, , , proibito (uscite entrambe ): da a stato imprevedibile.
- Parametri: (clock ), (stabile prima), (stabile dopo); finestra violata metastabilità.
- Frequenza: ( ns, MHz); hold: (indipendente da ; rimedio: inverter in cascata).
- Pipeline: più registri frequenza maggiore, latenza maggiore ( ns per ciclo con stadi).
- Errori: tra e ; setup/hold scambiati; hold e frequenza; SR proibito; dimenticato.
Esercizi su questo argomento
Teoria collegata
- Blocchi logici di un microprocessore - ALU, bus e logica tri-state
- Catene di inverter e buffer CMOS
- Macchine a stati finiti in VHDL
- Memorie a semiconduttore - struttura a matrice, decoder e ROM
- Porte logiche CMOS - struttura statica complementare e dimensionamento
- Registri dinamici, C2MOS, TSPC e registri a scorrimento
- Segnali digitali, livelli logici e margini di rumore
- Simulazione, testbench, vincoli di temporizzazione e flusso su FPGA
- SRAM e DRAM
- VHDL - logica sequenziale e registri