Salta al contenuto
Note per Studenti Invertitore CMOS - ritardo di propagazione

Invertitore CMOS - ritardo di propagazione

In questa pagina 6

Dopo la caratteristica statica (Invertitore CMOS - caratteristica di trasferimento staticaL'inverter CMOS ha un p-MOS verso V_DD e un n-MOS verso massa con gli ingressi collegati: V_OH = V_DD, V_OL = 0, nessun cammino diretto in continua (consumo statico nullo). La VTC ha cinque regioni (n-MOS off; n sat/p lin; entrambi sat in V_M; n lin/p sat; p off). Con entrambi in saturazione e λ = 0: V_M = (V_Tn + r(V_DD + V_Tp))/(1 + r) con r = √(|k'_p|Z_p/(k'_n Z_n)). Bilanciamento statico (V_M = V_DD/2 con V_Tn = |V_Tp|): Z_p/Z_n = k'_n/|k'_p| (circa 3,8). Scalare Z_n e Z_p dello stesso fattore lascia V_M invariata e moltiplica la corrente di picco; aumentare Z_p/Z_n alza V_M, V_IL e V_IH; V_M segue V_DD. Margini NM_L = V_IL, NM_H = V_DD − V_IH (circa 1 V a 2,5 V).Invertitore CMOS - caratteristica di trasferimento statica →) si studia il comportamento dinamico: quanto tempo impiega l'uscita a seguire un ingresso che commuta (istantaneamente, per ipotesi). Gli strumenti sono la resistenza equivalente e le capacità del transistor (Il transistor MOS come interruttore - soglia, caratteristiche e capacitàIl MOS ha quattro terminali (gate, source, drain, bulk); il bulk dell'n-MOS va a massa, quello del p-MOS a V_DD. Il canale esiste (inversione) per V_GS > V_T nell'n-MOS (V_T > 0) e per V_GS < V_T nel p-MOS (V_T < 0). La soglia cresce in modulo con la tensione di source rispetto al bulk (effetto body): V_T = V_T0 + γ(√|−2Φ_F+V_SB| − √|2Φ_F|). Corrente: lineare per V_DS < V_GS − V_T, I_D = k'(W/L)[(V_GS−V_T)V_DS − V_DS²/2]; saturazione per V_DS > V_GS − V_T, I_D = (k'/2)(W/L)(V_GS−V_T)²(1+λV_DS). In digitale il transistor è un interruttore con resistenza equivalente R_eq ∝ 1/Z (Z = W/L) e capacità di gate C_g = C_ox W L, di drain e source ∝ W. Raddoppiando Z la resistenza dimezza e le capacità raddoppiano.Il transistor MOS come interruttore - soglia, caratteristiche e capacità →).

Il circuito RC del primo ordine

Quando VinV_{in} passa da 00 a VDDV_{DD} il p-MOS si spegne e l'n-MOS si accende: la capacità di carico CLC_L (carica a VDDV_{DD}) si scarica attraverso RnR_n (transizione alto →\to basso, HL). Quando VinV_{in} passa da VDDV_{DD} a 00 il p-MOS carica CLC_L attraverso RpR_p (transizione basso →\to alto, LH). Entrambi sono circuiti RC con costante di tempo τ=RCL\tau=RC_L; la tensione di uscita in una carica da 00 è Vout(t)=VDD (1−e−t/τ)V_{out}(t)=V_{DD}\,(1-e^{-t/\tau}) e raggiunge il 50%50\% di VDDV_{DD} quando e−t/τ=12e^{-t/\tau}=\tfrac12: tp=ln⁡2  τ=0,69 R C.t_p=\ln2\;\tau=0{,}69\,R\,C. Quindi tpHL=0,69 Rn CL,tpLH=0,69 Rp CL\boxed{t_{pHL}=0{,}69\,R_n\,C_L,\qquad t_{pLH}=0{,}69\,R_p\,C_L} (per una commutazione di ingresso istantanea; con ingresso lento il ritardo aumenta). Il tempo di propagazione medio è tp=12(tpHL+tpLH)t_p=\tfrac12(t_{pHL}+t_{pLH}). Il tempo di salita (10–90%) di un RC vale 2,2 τ2{,}2\,\tau.

La capacità di carico

CLC_L è la somma di due contributi:

  • capacità intrinseca CintC_{int}: dovuta ai transistor che pilotano il nodo di uscita, cioè le capacità di drain di n-MOS e p-MOS, Cint=Cdn+CdpC_{int}=C_{dn}+C_{dp} (più, in modelli accurati, l'accoppiamento gate-drain);
  • capacità estrinseca CextC_{ext}: i gate delle porte pilotate (Cg3+Cg4C_{g3}+C_{g4} se il carico è un altro inverter) più la capacità dell'interconnessione CwC_w.

Quindi CL=Cd1+Cd2+Cg3+Cg4+Cw=Cint+CextC_L=C_{d1}+C_{d2}+C_{g3}+C_{g4}+C_w=C_{int}+C_{ext}.

Esempio numerico (dati d'esame a 0,25 μm0{,}25\ \mu\mathrm m: Rn0=13 kΩR_{n0}=13\ \mathrm{k\Omega}, Rp0=31,5 kΩR_{p0}=31{,}5\ \mathrm{k\Omega}, Cd0=2 fF/μmC_{d0}=2\ \mathrm{fF}/\mu\mathrm m, L=0,25 μmL=0{,}25\ \mu\mathrm m). Inverter con Zn=2Z_n=2 (Wn=0,5 μmW_n=0{,}5\ \mu\mathrm m) e Zp=Zn Rp0/Rn0=4,85Z_p=Z_n\,R_{p0}/R_{n0}=4{,}85 (Wp=1,21 μmW_p=1{,}21\ \mu\mathrm m):

  • Rn=13/2=6,5 kΩR_n=13/2=6{,}5\ \mathrm{k\Omega}, Rp=31,5/4,85=6,5 kΩR_p=31{,}5/4{,}85=6{,}5\ \mathrm{k\Omega} (uguali: bilanciato dinamicamente);
  • Cdn=2⋅0,5=1,0 fFC_{dn}=2\cdot0{,}5=1{,}0\ \mathrm{fF}, Cdp=2⋅1,21=2,42 fFC_{dp}=2\cdot1{,}21=2{,}42\ \mathrm{fF}, Cint=3,42 fFC_{int}=3{,}42\ \mathrm{fF};
  • senza carico esterno: tp=0,69⋅6,5 kΩ⋅3,42 fF=15,4 pst_p=0{,}69\cdot6{,}5\ \mathrm{k\Omega}\cdot3{,}42\ \mathrm{fF}=15{,}4\ \mathrm{ps}; con Cext=20 fFC_{ext}=20\ \mathrm{fF}: tpHL=tpLH=0,69⋅6,5⋅23,42=105 pst_{pHL}=t_{pLH}=0{,}69\cdot6{,}5\cdot23{,}42=105\ \mathrm{ps}.

Con Zn=Zp=2Z_n=Z_p=2 (p-MOS non maggiorato) le due resistenze non coincidono: Rp=15,75 kΩR_p=15{,}75\ \mathrm{k\Omega} contro Rn=6,5 kΩR_n=6{,}5\ \mathrm{k\Omega} e, con lo stesso carico (Cdp=1 fFC_{dp}=1\ \mathrm{fF}, CL=22 fFC_L=22\ \mathrm{fF}), tpHL=99 pst_{pHL}=99\ \mathrm{ps} e tpLH=239 pst_{pLH}=239\ \mathrm{ps}: in un inverter con n-MOS e p-MOS di dimensioni uguali tpLH>tpHLt_{pLH}>t_{pHL}, perché il p-MOS è meno conduttivo. Per portare tpLHt_{pLH} al livello di tpHLt_{pHL} serve Zp=2,4 ZnZ_p=2{,}4\,Z_n (rapporto delle resistenze).

Rapporto Zp/ZnZ_p/Z_n e bilanciamento dinamico

Posto Zp=βZnZ_p=\beta Z_n e Rp0=r Rn0R_{p0}=r\,R_{n0} (con r=Rp0/Rn0r=R_{p0}/R_{n0}; qui r=2,42r=2{,}42): Cdp=βCdn,Rp=rβRn,C_{dp}=\beta C_{dn},\qquad R_p=\frac{r}{\beta}R_n, tpHL=0,69 RnCdn(1+β),tpLH=0,69 RnCdn rβ(1+β)(solo carico intrinseco).t_{pHL}=0{,}69\,R_nC_{dn}(1+\beta),\qquad t_{pLH}=0{,}69\,R_nC_{dn}\,\frac{r}{\beta}(1+\beta)\quad(\text{solo carico intrinseco}).

  • Il bilanciamento dinamico è la condizione tpHL=tpLHt_{pHL}=t_{pLH}, cioè Rp=RnR_p=R_n, cioè β=r\beta=r. Diverso dal bilanciamento statico (β=kn′/∣kp′∣=3,83\beta=k'_n/\lvert k'_p\rvert=3{,}83 per i dati del corso): il primo uguaglia le resistenze, il secondo le soglie.
  • Con un carico a gate (inverter che ne pilota un altro, CgC_{g} del p-MOS ∝β\propto\beta): CL=Cd1n(1+β)+Cg3n(1+β)+CwC_L=C_{d1n}(1+\beta)+C_{g3n}(1+\beta)+C_w e tp=0,692Rn[(Cd1n+Cg3n)(1+β)+Cw](1+rβ).t_p=\frac{0{,}69}{2}R_n\Big[(C_{d1n}+C_{g3n})(1+\beta)+C_w\Big]\Big(1+\frac r\beta\Big). Se CwC_w è trascurabile, tp∝(1+β)(1+r/β)=1+r+β+r/βt_p\propto(1+\beta)(1+r/\beta)=1+r+\beta+r/\beta, e annullando la derivata (1−r/β2=01-r/\beta^2=0) si trova il minimo per βopt=r\beta_{opt}=\sqrt r (con interconnessioni, βopt=r (1+Cw/(Cd1n+Cg3n))\beta_{opt}=\sqrt{r\,(1+C_w/(C_{d1n}+C_{g3n}))}): il rapporto che minimizza il ritardo medio è più piccolo di quello del bilanciamento (qui 1,561{,}56 contro 2,422{,}42), perché un p-MOS più largo carica di più anche il gate dello stadio precedente. Il guadagno è modesto: con Rn0=13 kΩR_{n0}=13\ \mathrm{k\Omega}, Cd1n=0,5 fFC_{d1n}=0{,}5\ \mathrm{fF}, Cg3n=0,31 fFC_{g3n}=0{,}31\ \mathrm{fF} per Zn=1Z_n=1: tp=23,8 pst_p=23{,}8\ \mathrm{ps} per β=1,56\beta=1{,}56, 24,9 ps24{,}9\ \mathrm{ps} per β=2,42\beta=2{,}42 e per β=1\beta=1, 29,3 ps29{,}3\ \mathrm{ps} per β=4\beta=4 (la curva è simmetrica in β↔r/β\beta\leftrightarrow r/\beta).

Grafico interattivo: Ritardo medio t_p (ps) di un inverter con carico a gate in funzione di β = Z_p/Z_n (r = 2,42, C_w = 0): minimo per β = √r = 1,56 (23,8 ps); β = 2,42 (bilanciamento dinamico) dà 24,9 ps

Nella pratica si sceglie spesso β=r\beta=r (uguale ritardo di salita e di discesa, utile per il caso peggiore) oppure un valore intermedio.

Ritardo e dimensionamento

Sia Zp=rZnZ_p=rZ_n (bilanciato dinamicamente), Rn=Rp=RrefR_n=R_p=R_{ref} e Cint,ref=Cdn+CdpC_{int,ref}=C_{dn}+C_{dp} la capacità intrinseca dell'inverter di riferimento (quello minimo). Allora tp=0,69 Rref (Cint,ref+Cext)=tp0(1+CextCint,ref),tp0=0,69 RrefCint,ref.t_p=0{,}69\,R_{ref}\,(C_{int,ref}+C_{ext})=t_{p0}\Big(1+\frac{C_{ext}}{C_{int,ref}}\Big),\qquad t_{p0}=0{,}69\,R_{ref}C_{int,ref}. Moltiplicando ZnZ_n e ZpZ_p per un fattore SS: R→Rref/SR\to R_{ref}/S e Cint→S Cint,refC_{int}\to S\,C_{int,ref}, quindi tp=0,69RrefS(S Cint,ref+Cext)=tp0(1+CextS Cint,ref).t_p=0{,}69\frac{R_{ref}}{S}\big(S\,C_{int,ref}+C_{ext}\big)=t_{p0}\Big(1+\frac{C_{ext}}{S\,C_{int,ref}}\Big).

  • tp0t_{p0} non dipende da SS (il ritardo "a vuoto": la resistenza diminuisce quanto aumenta la capacità propria): effetto di autocaricamento. Aumentare SS riduce il ritardo solo se il carico estrinseco conta; per S→∞S\to\infty, tp→tp0t_p\to t_{p0} (il carico estrinseco diventa trascurabile) e non si va oltre.
  • Se Cext≫CintC_{ext}\gg C_{int} (CextC_{ext} dominante), tp≈0,69RrefCext/St_p\approx0{,}69R_{ref}C_{ext}/S: raddoppiando ZnZ_n e ZpZ_p il ritardo si dimezza (e, se invece il carico è quello intrinseco, resta invariato: la crocetta "se ZZ raddoppia, i tempi di propagazione ... possono diminuire se la capacità esterna è dominante").
  • Se CextC_{ext} è piccola si guadagna poco ingrandendo e si spreca area e consumo.

Esempio. Inverter di riferimento Zn=1Z_n=1, Zp=2,42Z_p=2{,}42 (Rref=13 kΩR_{ref}=13\ \mathrm{k\Omega}, Cint,ref=0,5+1,21=1,71 fFC_{int,ref}=0{,}5+1{,}21=1{,}71\ \mathrm{fF}): tp0=0,69⋅13 kΩ⋅1,71 fF=15,4 pst_{p0}=0{,}69\cdot13\ \mathrm{k\Omega}\cdot1{,}71\ \mathrm{fF}=15{,}4\ \mathrm{ps}. Con Cext=50 fFC_{ext}=50\ \mathrm{fF}: S=1S=1: 464 ps464\ \mathrm{ps}; S=2S=2: 240 ps240\ \mathrm{ps}; S=5S=5: 105 ps105\ \mathrm{ps}; S=10S=10: 60 ps60\ \mathrm{ps}; S=100S=100: 19,8 ps19{,}8\ \mathrm{ps}; limite 15,4 ps15{,}4\ \mathrm{ps}. Da S=10S=10 in poi il guadagno marginale è piccolo mentre area e capacità di ingresso (che carica lo stadio precedente) crescono: è l'idea del buffer (Catene di inverter e buffer CMOSPer pilotare un carico grande C_L partendo da un ingresso piccolo C_in si usa una catena di N inverter di dimensioni crescenti (buffer). Il ritardo totale è t_p = t_p0 Σ (1 + f_j/γ), con f_j = C_gin,j+1/C_gin,j il fan-out dello stadio j e γ = C_int/C_g (circa 1-2). Il minimo, a N fissato, si ha con lo stesso fan-out in tutti gli stadi, f = F^(1/N) con F = C_L/C_in (ogni stadio è la media geometrica dei vicini e ha lo stesso ritardo): t_p = N t_p0 (1 + F^(1/N)/γ). Il numero ottimo di stadi si trova da ln f = 1 + γ/f (f = e per γ = 0, f ≈ 3,6 per γ = 1, N = ln F / ln f). Un anello di N inverter (N dispari, N ≥ 3) oscilla con periodo 2N t_p.Catene di inverter e buffer CMOS →).

Altri fattori

Errori comuni

  • Usare CL=CdnC_L=C_{dn} o CL=CdpC_L=C_{dp} invece della somma dei due drain più il carico a gate.
  • Scrivere tpLH=0,69RnCLt_{pLH}=0{,}69R_nC_L (è RpR_p per la salita, RnR_n per la discesa).
  • Contare CgC_g delle porte pilotate come intrinseca: è estrinseca.
  • Credere che ingrandire sempre riduca il ritardo: a carico intrinseco dominante non serve (autocaricamento).
  • Confondere βopt=r\beta_{opt}=\sqrt r (ritardo minimo) con β=r\beta=r (bilanciamento).

Versione ripasso

  • RC del primo ordine: tp=ln⁡2 τ=0,69RCt_p=\ln2\,\tau=0{,}69RC; tpHL=0,69RnCLt_{pHL}=0{,}69R_nC_L (scarica), tpLH=0,69RpCLt_{pLH}=0{,}69R_pC_L (carica); tp=12(tpHL+tpLH)t_p=\frac12(t_{pHL}+t_{pLH}); (tr≈2,2τt_r\approx2{,}2\tau).
  • Carico: CL=Cint+CextC_L=C_{int}+C_{ext}; Cint=Cdn+CdpC_{int}=C_{dn}+C_{dp}, CextC_{ext} = gate pilotati + interconnessione. Esempio: Zn=2Z_n=2, Zp=4,85Z_p=4{,}85, R=6,5R=6{,}5 k, Cint=3,42C_{int}=3{,}42 fF: 15,415{,}4 ps a vuoto, 105105 ps con 2020 fF.
  • Dimensioni uguali: tpLH>tpHLt_{pLH}>t_{pHL} (239239 contro 9999 ps) perché Rp>RnR_p>R_n (rapporto 2,42{,}4).
  • Rapporto β=Zp/Zn\beta=Z_p/Z_n: Rp/Rn=r/βR_p/R_n=r/\beta, Cdp=βCdnC_{dp}=\beta C_{dn}; bilanciamento dinamico β=r=Rp0/Rn0\beta=r=R_{p0}/R_{n0} (2,422{,}42) ≠\ne statico (kn′/∣kp′∣k'_n/\lvert k'_p\rvert); ritardo medio minimo a βopt=r\beta_{opt}=\sqrt r (1,561{,}56: 23,823{,}8 ps contro 24,924{,}9).
  • Scalatura SS: tp=tp0(1+Cext/(S Cint,ref))t_p=t_{p0}(1+C_{ext}/(S\,C_{int,ref})), tp0=0,69RrefCint,reft_{p0}=0{,}69R_{ref}C_{int,ref} (15,415{,}4 ps): Cext=50C_{ext}=50 fF: 464→240→105→60→19,8464\to240\to105\to60\to19{,}8 ps per S=1,2,5,10,100S=1,2,5,10,100; autocaricamento; carico estrinseco dominante ⇒\Rightarrow ritardo ∝1/S\propto1/S.
  • Altri fattori: VDD↑⇒tp↓V_{DD}\uparrow\Rightarrow t_p\downarrow (e potenza ↑\uparrow); ingresso lento ⇒\Rightarrow ritardo maggiore.
  • Errori: CLC_L senza i due drain, RnR_n/RpR_p scambiati, CgC_g come intrinseca, ingrandire sempre, r\sqrt r vs rr.

Esercizi su questo argomento

Teoria collegata