Registri dinamici, C2MOS, TSPC e registri a scorrimento
In questa pagina 7
Un registro statico (Latch, registri e parametri temporaliUn circuito sequenziale ha uno stato memorizzato in due modi: retroazione positiva (due inverter in anello, bistabile, i latch statici) o immagazzinamento di carica (circuiti dinamici). Un latch è sensibile al livello del clock (trasparente quando il clock è attivo, memorizza quando non lo è), un registro (flip-flop) è sensibile al fronte e si realizza con due latch sulle fasi opposte (master-slave). Il latch SR a porte NOR/NAND non ammette la combinazione S = R = 1 perché passando da lì alla memoria lo stato finale è imprevedibile. Parametri temporali del registro: ritardo clock-uscita t_c-q, tempo di setup t_su (dato stabile prima del fronte), tempo di hold t_hold (dato stabile dopo il fronte). Periodo minimo: T_min = t_c-q + t_p,logic(max) + t_su; vincolo di hold: t_cd,reg + t_cd,logic > t_hold. La pipeline spezza la logica con registri per aumentare la frequenza (a spese della latenza).Latch, registri e parametri temporali →) conserva il bit con una retroazione positiva: sempre un cammino verso o massa. Un registro dinamico usa invece l'immagazzinamento di carica: il bit è la tensione su un nodo capacitivo in alta impedenza, che mantiene il valore finché la carica non si disperde (come nelle logiche dinamiche: Logiche dinamiche - precarica e valutazioneNelle logiche dinamiche l'uscita non è sempre collegata a V_DD o a massa: il valore è conservato come carica su un nodo capacitivo in alta impedenza. Una porta dinamica ha un p-MOS di precarica e un n-MOS di valutazione pilotati dal clock e una sola rete di pull-down (N + 2 transistor): con Clk = 0 l'uscita è precaricata a V_DD, con Clk = 1 la PDN la scarica se conduce. Vantaggi: escursione piena (V_OL = 0), nessun consumo statico, nessun contrasto, capacità di ingresso ridotta, commutazioni più veloci; svantaggi: gli ingressi devono essere stabili in valutazione, la carica si perde per perdite (serve un refresh minimo di clock), la condivisione di carica con i nodi interni può abbassare l'uscita, e le porte non sono direttamente cascabili (si risolve con la logica domino, inverter in uscita, solo funzioni non invertenti).Logiche dinamiche - precarica e valutazione →).
Circuiti dinamici: caratteristiche
- La memorizzazione è temporanea: per perdite delle giunzioni il nodo perde carica in tempi dell'ordine del millisecondo, quindi esiste un clock minimo (il registro deve essere riscritto in tempo).
- Ci sono istanti (oltre alle transizioni) in cui l'uscita non è collegata né a massa né a attraverso un cammino a bassa resistenza.
- Escursione logica piena (, ), meno transistor e commutazioni più veloci rispetto ai registri statici.
Sovrapposizione dei clock
Un registro master-slave dinamico si ottiene con gate di trasmissione comandate da due fasi e . Se i due segnali non sono perfettamente complementari ( ritarda per un inverter o per lo skew), c'è un intervallo di sovrapposizione:
- (1-1): : master e slave sono entrambi aperti (in un registro con gate di trasmissione, n-MOS e p-MOS di fasi diverse): il dato attraversa il registro e si ha una corsa critica (race): arriva a senza il campionamento previsto;
- (0-0): l'analogo con i due stadi attivi sul livello opposto. Le soluzioni sono clock non sovrapposti (generazione con cura, a spese di area e frequenza) o strutture che tollerano la sovrapposizione.
Registro C²MOS
Nel C²MOS (clocked CMOS) lo stadio master è un inverter con transistor di clock in serie: un p-MOS comandato dall'ingresso in serie a un p-MOS comandato da verso , e un n-MOS comandato da in serie a un n-MOS comandato da verso massa; lo slave ha la stessa struttura con le fasi scambiate. Quando il transistor di clock è acceso la cella è un inverter normale (, con il nodo intermedio che inverte ); quando è spento il nodo è in alta impedenza e conserva il valore. Master + slave danno un registro a doppia inversione ( campionato sul fronte).
Sovrapposizione: il C²MOS è insensibile alla sovrapposizione dei clock purché i tempi di salita e discesa dei fronti siano sufficientemente brevi: nel caso (0-0) () il master agisce solo come pull-up e lo slave solo come pull-up: può quindi solo portare in alto un nodo e non esiste cammino che propaghi fino a (ci vorrebbe un pull-down dello slave, spento); analogamente nel caso (1-1) i due stadi sono solo pull-down. La nota "è sensibile alla sovrapposizione nel caso " vale invece per il registro dinamico con gate di trasmissione. Il C²MOS è a doppia fase ( e ), quindi non è un registro a singola fase di clock.
TSPC
Il TSPC (true single-phase clocked) usa una sola fase di clock (nessun segnale invertito: elimina il problema dello skew tra e ): esistono un latch negativo (trasparente per ) e uno positivo (trasparente per ) realizzati con pochi transistor. Un registro positivo (sul fronte di salita) si ottiene collegando i due latch in cascata, per un totale di nove transistor. Si può aggiungere logica dentro il latch (per esempio una PUN e una PDN al posto del primo stadio inverter: un latch AND, più logica tra due latch) risparmiando uno stadio. Il TSPC è molto veloce e compatto ma più delicato (nodi interni dinamici, soggetti a perdita di carica e a glitch).
Registri a scorrimento
Un registro a scorrimento (shift register) è una cascata di registri D con lo stesso clock: l'uscita di ciascuno è l'ingresso del successivo e a ogni fronte il dato avanza di una posizione. Il primo registro riceve l'ingresso seriale; l'ultimo dà l'uscita seriale. Applicazioni:
- conversione serie-parallelo: dopo fronti i bit entrati uno alla volta sono disponibili contemporaneamente sulle uscite;
- conversione parallelo-serie: con un multiplexer in ingresso a ciascun registro che sceglie tra il dato parallelo (caricamento, load) e l'uscita del registro precedente (scorrimento);
- linee di ritardo (un dato esce periodi dopo essere entrato), code FIFO, generatori di sequenze (LFSR). Esempio. Registro a bit, inizialmente , ingresso seriale (un bit per fronte, scorrimento verso destra): .
Vincolo di hold. In un registro a scorrimento due registri sono collegati direttamente: e il vincolo (Latch, registri e parametri temporaliUn circuito sequenziale ha uno stato memorizzato in due modi: retroazione positiva (due inverter in anello, bistabile, i latch statici) o immagazzinamento di carica (circuiti dinamici). Un latch è sensibile al livello del clock (trasparente quando il clock è attivo, memorizza quando non lo è), un registro (flip-flop) è sensibile al fronte e si realizza con due latch sulle fasi opposte (master-slave). Il latch SR a porte NOR/NAND non ammette la combinazione S = R = 1 perché passando da lì alla memoria lo stato finale è imprevedibile. Parametri temporali del registro: ritardo clock-uscita t_c-q, tempo di setup t_su (dato stabile prima del fronte), tempo di hold t_hold (dato stabile dopo il fronte). Periodo minimo: T_min = t_c-q + t_p,logic(max) + t_su; vincolo di hold: t_cd,reg + t_cd,logic > t_hold. La pipeline spezza la logica con registri per aumentare la frequenza (a spese della latenza).Latch, registri e parametri temporali →) è critico (anche per lo skew di clock tra i registri): per questo i registri hanno per costruzione, o si inseriscono ritardi. Nelle FPGA i registri a scorrimento fino a 32 bit si realizzano direttamente nelle LUT (FPGA - LUT, slice e risorse della famiglia 7Una FPGA è una matrice di blocchi logici configurabili (CLB) immersi in una griglia di interconnessioni programmabili, con risorse dedicate: block RAM, blocchi DSP, gestione del clock (MMCM, PLL), blocchi di I/O e transceiver. La memoria di configurazione è SRAM. L'elemento base è la LUT: una memoria SRAM con 2^k celle che realizza una qualsiasi funzione di k ingressi (i segnali di selezione del multiplexer sono gli ingressi della funzione). Nella famiglia 7 di Xilinx un CLB ha 2 slice; uno slice ha 4 LUT a 6 ingressi (ciascuna divisibile in due LUT a 5), multiplexer larghi F7/F8 (funzioni a 7-8 ingressi), una catena di riporto veloce, 4 flip-flop/latch più 4 flip-flop. Nei SLICEM la LUT può essere usata come RAM distribuita o registro a scorrimento (SRL32), nei SLICEL solo come logica.FPGA - LUT, slice e risorse della famiglia 7 →); la descrizione in VHDL è in 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 →.
Confronto
| registro | memoria | clock | note |
|---|---|---|---|
| statico (retroazione) | indefinita | , | più transistor, robusto |
| dinamico a gate di trasmissione | carica ( ms) | , | sensibile alla sovrapposizione |
| C²MOS | carica | , | insensibile alla sovrapposizione |
| TSPC | carica | solo | veloce, logica nel latch |
Errori comuni
- Dire che il C²MOS è a singola fase: usa e (la singola fase è il TSPC).
- Dire che i registri dinamici conservano il dato per sempre: servono un clock minimo e il refresh implicito.
- Confondere la sensibilità alla sovrapposizione del registro con gate di trasmissione (sensibile) e del C²MOS (insensibile).
- Dimenticare che in uno shift register il dato avanza di una sola posizione per fronte.
Versione ripasso
- Dinamici: bit = carica su nodo in alta impedenza; perdite clock minimo; escursione piena, più veloci e compatti dei registri statici.
- Sovrapposizione: e non complementari: (1-1)/(0-0) race nel master-slave a gate di trasmissione.
- C²MOS: inverter con transistor di clock in serie (master + slave); insensibile alla sovrapposizione (con fronti ripidi: in (0-0) solo pull-up, in (1-1) solo pull-down, nessun cammino ); doppia fase.
- TSPC: una sola fase; latch positivo/negativo con pochi transistor; si può inglobare logica (latch AND).
- Shift register: registri D in cascata, il dato avanza di una posizione per fronte (); serie-parallelo, parallelo-serie (mux + load), ritardi, FIFO. Hold critico: .
- Errori: C²MOS a singola fase; dato conservato per sempre; sensibilità scambiata; più di una posizione per fronte.