Salta al contenuto
Note per Studenti Registri dinamici, C2MOS, TSPC e registri a scorrimento

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 VDDV_{DD} 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 VDDV_{DD} attraverso un cammino a bassa resistenza.
  • Escursione logica piena (VOL=0V_{OL}=0, VOH=VDDV_{OH}=V_{DD}), 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 CLKCLK e CLK‾\overline{CLK}. Se i due segnali non sono perfettamente complementari (CLK‾\overline{CLK} ritarda per un inverter o per lo skew), c'è un intervallo di sovrapposizione:

  • (1-1): CLK=CLK‾=1CLK=\overline{CLK}=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): DD arriva a QQ 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 DD in serie a un p-MOS comandato da CLKCLK verso VDDV_{DD}, e un n-MOS comandato da CLKCLK in serie a un n-MOS comandato da DD verso massa; lo slave ha la stessa struttura con le fasi scambiate. Quando il transistor di clock è acceso la cella è un inverter normale (Q=D‾Q=\overline D, con il nodo intermedio XX che inverte DD); quando è spento il nodo XX è in alta impedenza e conserva il valore. Master + slave danno un registro a doppia inversione (Q=DQ=D 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) (CLK=CLK‾=0CLK=\overline{CLK}=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 DD fino a QQ (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 CLK=CLK‾=0CLK=\overline{CLK}=0" vale invece per il registro dinamico con gate di trasmissione. Il C²MOS è a doppia fase (CLKCLK e CLK‾\overline{CLK}), 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 CLKCLK e CLK‾\overline{CLK}): esistono un latch negativo (trasparente per CLK=0CLK=0) e uno positivo (trasparente per CLK=1CLK=1) 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 NN 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 NN fronti i bit entrati uno alla volta sono disponibili contemporaneamente sulle NN 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 NN periodi dopo essere entrato), code FIFO, generatori di sequenze (LFSR). Esempio. Registro a 44 bit, inizialmente 00000000, ingresso seriale 1,0,1,11,0,1,1 (un bit per fronte, scorrimento verso destra): 0000→1000→0100→1010→11010000\to1000\to0100\to1010\to1101.

Vincolo di hold. In un registro a scorrimento due registri sono collegati direttamente: tcd,logic=0t_{cd,logic}=0 e il vincolo tc-q>tholdt_{c\text{-}q}>t_{hold} (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 tc-q>tholdt_{c\text{-}q}>t_{hold} 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 CLKCLK, CLK‾\overline{CLK} più transistor, robusto
dinamico a gate di trasmissione carica (∼\sim ms) CLKCLK, CLK‾\overline{CLK} sensibile alla sovrapposizione
C²MOS carica CLKCLK, CLK‾\overline{CLK} insensibile alla sovrapposizione
TSPC carica solo CLKCLK veloce, logica nel latch

Errori comuni

  • Dire che il C²MOS è a singola fase: usa CLKCLK e CLK‾\overline{CLK} (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 ⇒\Rightarrow clock minimo; escursione piena, più veloci e compatti dei registri statici.
  • Sovrapposizione: CLKCLK e CLK‾\overline{CLK} non complementari: (1-1)/(0-0) ⇒\Rightarrow 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 D→QD\to Q); doppia fase.
  • TSPC: una sola fase; latch positivo/negativo con pochi transistor; si può inglobare logica (latch AND).
  • Shift register: NN registri D in cascata, il dato avanza di una posizione per fronte (0000→1000→0100→1010→11010000\to1000\to0100\to1010\to1101); serie-parallelo, parallelo-serie (mux + load), ritardi, FIFO. Hold critico: tc-q>tholdt_{c\text{-}q}>t_{hold}.
  • Errori: C²MOS a singola fase; dato conservato per sempre; sensibilità scambiata; più di una posizione per fronte.

Esercizi su questo argomento

Teoria collegata