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
Definizione (registro 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
- Registri dinamici: il bit è una carica su un nodo in alta impedenza, quindi serve un clock minimo perché le perdite scaricano il nodo in circa un millisecondo. Escursione piena, meno transistor e commutazioni più rapide dei registri statici (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 →).
- Sovrapposizione dei clock: se e non sono complementari compare un intervallo in cui entrambi valgono (o entrambi ). Nel master-slave a gate di trasmissione il dato attraversa il registro: corsa critica (race).
- C²MOS: ogni stadio è un inverter con transistor di clock in serie; il master campiona con , lo slave con . Con fronti ripidi è insensibile alla sovrapposizione: nel caso (0-0) ogni stadio può solo portare in alto il nodo, nel caso (1-1) solo abbassarlo, e non esiste un cammino . È a doppia fase.
- TSPC: una sola fase di clock, senza segnale invertito, quindi niente skew tra e . Un registro positivo sul fronte di salita usa due latch in cascata per un totale di nove transistor. Si può inglobare logica nel latch (per esempio un latch AND) risparmiando uno stadio. Veloce e compatto, ma i nodi interni sono dinamici e delicati.
- Registro a scorrimento: registri D in cascata con lo stesso clock; a ogni fronte il dato avanza di una posizione. Esempio: a bit, ingresso seriale , partenza da : . Usi: conversione serie-parallelo, parallelo-serie (un mux con il caricamento in parallelo), linee di ritardo, FIFO, generatori di sequenze.
- Vincolo di hold: i registri sono collegati direttamente (), quindi serve , anche con lo skew di clock tra i registri. Nelle FPGA i registri a scorrimento fino a bit si realizzano 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 →).
- Errori: C²MOS descritto come a singola fase (la singola fase è il TSPC); dire che i registri dinamici conservano il dato per sempre; scambiare la sensibilità alla sovrapposizione tra gate di trasmissione (sensibile) e C²MOS (insensibile); far avanzare il dato di più posizioni per fronte.