Salta al contenuto
Note per Studenti Catene di inverter e buffer CMOS

Catene di inverter e buffer CMOS

In questa pagina 6

Un inverter minimo ha una capacità di ingresso piccola (CgC_g di due transistor piccoli) ma una corrente piccola; se deve pilotare un carico grande (una linea lunga, un'uscita del chip, il decoder di una memoria) tp=0,69R CLt_p=0{,}69R\,C_L diventa enorme. Ingrandire direttamente l'inverter rende veloce l'uscita ma rende grande la capacità di ingresso, che carica la porta precedente: il ritardo si sposta a monte (Invertitore CMOS - ritardo di propagazioneIn commutazione l'inverter è un circuito RC del primo ordine: il tempo di propagazione al 50% vale t_p = ln2·τ = 0,69·R·C. Con R_n e R_p resistenze equivalenti e C_L = C_int + C_ext (intrinseca = capacità di drain di n-MOS e p-MOS; estrinseca = gate delle porte pilotate e interconnessioni): t_pHL = 0,69 R_n C_L, t_pLH = 0,69 R_p C_L. Con Z_p = βZ_n, R_p/R_n = r/β (r = R_p0/R_n0 ≈ 2,4): il bilanciamento dinamico (t_pHL = t_pLH) richiede β = r, mentre il minimo del ritardo medio con carico a gate si ha per β = √r. Moltiplicando Z_n e Z_p per S: t_p = t_p0 (1 + C_ext/(S C_int,ref)): a carico estrinseco dominante raddoppiare le larghezze dimezza il ritardo; con carico intrinseco dominante non cambia (autocaricamento).Invertitore CMOS - ritardo di propagazione →). La soluzione è un buffer: una catena di inverter di dimensioni gradualmente crescenti.

Domande: quanti stadi servono per minimizzare il ritardo, e come dimensionarli?

Ritardo di una catena

Siano NN inverter in cascata, con capacità di gate in ingresso Cgin,1,…,Cgin,NC_{gin,1},\dots,C_{gin,N} e carico finale Cgin,N+1=CLC_{gin,N+1}=C_L. Lo stadio jj è dimensionato come l'inverter di riferimento scalato di SjS_j, quindi Cgin,j=SjCg,refC_{gin,j}=S_jC_{g,ref} e Cint,j=SjCint,refC_{int,j}=S_jC_{int,ref}. Il suo carico è la capacità intrinseca più l'ingresso dello stadio seguente: CL,j=Cint,j+Cgin,j+1C_{L,j}=C_{int,j}+C_{gin,j+1}. Definito il fan-out fj=Cext,jCgin,j=Cgin,j+1Cgin,jf_j=\dfrac{C_{ext,j}}{C_{gin,j}}=\dfrac{C_{gin,j+1}}{C_{gin,j}} e γ=Cint,refCg,ref\gamma=\dfrac{C_{int,ref}}{C_{g,ref}} (rapporto tra capacità intrinseca e capacità di gate: tipicamente 11–22): tp,j=tp0(1+Cgin,j+1γ Cgin,j)=tp0(1+fjγ),tp=∑j=1Ntp,j.t_{p,j}=t_{p0}\Big(1+\frac{C_{gin,j+1}}{\gamma\,C_{gin,j}}\Big)=t_{p0}\Big(1+\frac{f_j}{\gamma}\Big),\qquad t_p=\sum_{j=1}^Nt_{p,j}.

Dimensionamento ottimo a NN fissato

Le incognite sono Cgin,2,…,Cgin,NC_{gin,2},\dots,C_{gin,N} (N−1N-1 valori). Annullando le derivate parziali di tpt_p si ottiene Cgin,j+1Cgin,j=Cgin,jCgin,j−1,\frac{C_{gin,j+1}}{C_{gin,j}}=\frac{C_{gin,j}}{C_{gin,j-1}}, cioè tutti gli stadi hanno lo stesso fan-out ff (la dimensione di ciascuno è la media geometrica di quelle dei vicini, Cgin,j=Cgin,j−1Cgin,j+1C_{gin,j}=\sqrt{C_{gin,j-1}C_{gin,j+1}}) e quindi lo stesso ritardo. Posto F=CL/Cgin,1F=C_L/C_{gin,1}, si ha fN=Ff^N=F: f=FN,tp=N tp0(1+FNγ).f=\sqrt[N]{F},\qquad t_p=N\,t_{p0}\Big(1+\frac{\sqrt[N]F}{\gamma}\Big). Gli stadi successivi al primo hanno fattori di scala f,f2,…,fN−1f,f^2,\dots,f^{N-1} rispetto al primo.

Numero ottimo di stadi

Con FF fissato, N=ln⁡F/ln⁡fN=\ln F/\ln f e il ritardo come funzione di ff è tp=tp0ln⁡Fln⁡f(1+fγ)t_p=t_{p0}\dfrac{\ln F}{\ln f}\Big(1+\dfrac f\gamma\Big). Annullando la derivata: ln⁡f=1+γf.\ln f=1+\frac\gamma f. Per γ=0\gamma=0 (autocaricamento trascurabile) f=e≈2,72f=e\approx2{,}72 e N=ln⁡FN=\ln F; per γ=1\gamma=1, f≈3,6f\approx3{,}6; per γ=1,6\gamma=1{,}6, f≈4,0f\approx4{,}0. La soluzione è piatta: scegliere ff tra 33 e 55 è quasi equivalente.

Esempio (con γ=1\gamma=1, in unità di tp0t_{p0}) per F=CL/Cin=64F=C_L/C_{in}=64:

NN f=641/Nf=64^{1/N} tp/tp0=N(1+f)t_p/t_{p0}=N(1+f)
1 64 65
2 8 18
3 4 15
4 2,83 15,3

Il minimo è a N=3N=3 (f=4f=4); con 44 stadi si peggiora di poco (15,315{,}3) e si spreca area; con un solo inverter si è oltre quattro volte più lenti.

Esempio numerico con i dati del corso. L'inverter di riferimento ha Zn=1Z_n=1, Zp=2,42Z_p=2{,}42, Cg=CoxL(Wn+Wp)=5⋅0,25⋅(0,25+0,606)=1,07 fFC_g=C_{ox}L(W_n+W_p)=5\cdot0{,}25\cdot(0{,}25+0{,}606)=1{,}07\ \mathrm{fF}, Cint,ref=1,71 fFC_{int,ref}=1{,}71\ \mathrm{fF}, γ=1,6\gamma=1{,}6, tp0=15,4 pst_{p0}=15{,}4\ \mathrm{ps}. Per un carico CL=68,5 fFC_L=68{,}5\ \mathrm{fF} (F=64F=64): N=1N=1: 630 ps630\ \mathrm{ps}; N=2N=2 (f=8f=8): 184 ps184\ \mathrm{ps}; N=3N=3 (f=4f=4): 161 ps161\ \mathrm{ps}; N=4N=4 (f=2,83f=2{,}83): 170 ps170\ \mathrm{ps}; N=5N=5: 187 ps187\ \mathrm{ps}. Il minimo è a N=3N=3, con f=4f=4, e il dimensionamento è Zn=1,4,16Z_n=1,4,16 (e Zp=2,42, 9,7, 38,8Z_p=2{,}42,\,9{,}7,\,38{,}8): ogni inverter è quattro volte il precedente.

Parità degli stadi. Un numero pari di inverter non inverte il segnale, un numero dispari lo inverte: se serve la stessa polarità e l'ottimo è un numero dispari si sceglie NN pari vicino (di solito N=4N=4 nell'esempio).

Altri vincoli

Altri requisiti possono alterare l'ottimo: la capacità di ingresso massima concessa alla porta che pilota il buffer, la minima potenza o area, il numero di stadi imposto dalla polarità. Il metodo è lo stesso: si fissa NN e si ripartisce il fan-out totale in parti uguali.

Ring oscillator

Collegando l'uscita di una catena di NN inverter al suo ingresso si ottiene un oscillatore ad anello. Perché oscilli servono un numero dispari di stadi (inversione totale: con un numero pari l'anello ha due stati stabili e memorizza un bit, come i due inverter di un latch: 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 →) e almeno tre stadi: ogni stadio è un sistema del primo ordine, che sfasa al massimo di 90∘90^\circ, e per ottenere 180∘180^\circ di sfasamento complessivo con guadagno maggiore di 11 servono almeno tre stadi (60∘60^\circ ciascuno); con un solo inverter in retroazione l'uscita si ferma in VMV_M (il punto instabile della VTC) senza oscillare. Il periodo è T=2N tpT=2N\,t_p (il segnale deve attraversare l'anello due volte, una per la salita e una per la discesa di ogni nodo): con N=3N=3 e tp=100 pst_p=100\ \mathrm{ps}, T=600 psT=600\ \mathrm{ps} e f=1,67 GHzf=1{,}67\ \mathrm{GHz}. L'anello è usato per misurare tpt_p di una tecnologia.

Errori comuni

  • Usare N=2N=2 come minimo per l'oscillazione: serve NN dispari, quindi N=3N=3.
  • Sbagliare ff: fN=Ff^N=F (F=CL/CinF=C_L/C_{in}, rapporto totale), non f=F/Nf=F/N.
  • Dimensionare gli stadi in progressione aritmetica: devono essere in progressione geometrica.
  • Dimenticare di verificare la parità: un buffer deve avere NN pari se non si vuole invertire il segnale.

Versione ripasso

  • Perché: un solo inverter grande sposta il ritardo a monte (la sua CinC_{in} è grande); si usa una catena con dimensioni crescenti.
  • Ritardo: tp,j=tp0(1+fj/γ)t_{p,j}=t_{p0}(1+f_j/\gamma), fj=Cgin,j+1/Cgin,jf_j=C_{gin,j+1}/C_{gin,j}, γ=Cint/Cg\gamma=C_{int}/C_g (11–22); tp=∑tp,jt_p=\sum t_{p,j}.
  • Ottimo a NN fisso: stesso fan-out f=F1/Nf=F^{1/N} (F=CL/CinF=C_L/C_{in}), dimensioni in media geometrica, stesso ritardo per stadio; tp=Ntp0(1+F1/N/γ)t_p=Nt_{p0}(1+F^{1/N}/\gamma); scale 1,f,f2,…1,f,f^2,\dots
  • NN ottimo: ln⁡f=1+γ/f\ln f=1+\gamma/f (f=ef=e per γ=0\gamma=0; 3,63{,}6 per γ=1\gamma=1; 4,04{,}0 per 1,61{,}6), N=ln⁡F/ln⁡fN=\ln F/\ln f; minimo piatto.
  • Esempio F=64F=64, γ=1\gamma=1: N=1,2,3,4→65,18,15,15,3 tp0N=1,2,3,4\to65,18,15,15{,}3\ t_{p0} (minimo a N=3N=3, f=4f=4); con i dati del corso 630,184,161,170630,184,161,170 ps per N=1…4N=1\ldots4.
  • Parità: NN pari non inverte, dispari inverte.
  • Ring oscillator: NN dispari e N≥3N\ge3; T=2NtpT=2Nt_p (N=3N=3, tp=100t_p=100 ps: 600600 ps, 1,671{,}67 GHz); con N=1N=1 l'uscita resta in VMV_M.
  • Errori: N=2N=2 per l'oscillazione; f=F/Nf=F/N; progressione aritmetica; parità trascurata.

Esercizi su questo argomento

Teoria collegata