Sei sulla pagina 1di 64

I – PARTITORE RESISTIVO E LO SWITCH

“Tu, elemento capacitivo, vuoi andare a 1 volt?


Allora prima mi dai il coulomb…”

Enrico Sangiorgi, 18 gennaio 2007

L’elettronica è una disciplina che fonde una particolare tecnologia con una metodologia
utile ad elaborare delle informazioni: in particolare, il nome di questa scienza deriva
dall’uso di grandezze legate all’elettromagnetismo.
Il principio che sta alla base dell’elettronica è quello della valvola, dispositivo che
funge da “rubinetto”, perché ha la proprietà di permettere o di bloccare l’afflusso di
una certa grandezza (nel nostro caso: della corrente elettrica).
Una valvola può avere due modalità di funzionamento:
- analogica, se ad ogni posizione parziale della valvola corrisponde un’uscita
parziale. Posso quindi avere un numero infinito e continuo di valori in uscita,
con una conseguentemente elevata mole di informazioni;
- digitale, se esistono solo lo stato di (totalmente) aperto e (totalmente) chiuso. Le
informazioni che posso ricavare sono quindi molte di meno rispetto al caso
analogico.
Combinando insieme questi due tipi di valvole si possono creare due tipi di circuiti:
- circuito analogico: semplice, con pochi componenti di qualità molto elevata,
molto sensibile ai disturbi (rumori), molto costoso;
- circuito digitale: complesso, con moltissimi componenti di qualità più modesta e
di maggiore semplicità, più veloce e meno costoso.

Alcuni componenti logici appartenenti ai circuiti digitali sono:


- l’invertitore (funzione caratteristica: OUT = IN );
- il nor (funzione caratteristica: OUT = IN A + IN B + INC );
- il nand (funzione caratteristica: OUT = IN A ⋅ IN B ⋅ INC ).

Studieremo in maniera molto approfondita il primo di questi, cioè l’invertitore, dato


che con esso è facile implementare qualsiasi funzione logica, come si vedrà in futuro.
L’invertitore è realizzabile mediante un dispositivo chiamato partitore resistivo; esso è
formato dai seguenti componenti:
- un generatore in grado di fornire una tensione VDD ;
- una resistenza “superiore”, che chiameremo
RL , e che è anche detta resistenza di pull-
up in quanto è in grado di “portare su”
l’uscita se adeguatamente dimensionata
(vedi in seguito);
- una resistenza “inferiore”, che chiameremo
RD , e che viene anche chiamata resistenza
di pull-down in quanto è in grado di
“portare giù” l’uscita se adeguatamente
dimensionata (vedi in seguito).
Tra le due resistenze si trova il nodo di OUT, che è a tensione VOUT . Per come è
strutturato l’invertitore (vedi figura) è facile capire che VOUT sarà sicuramente
inferiore a VDD , perché parte di quest’ultima tensione viene dissipata sulla resistenza
RL . Quello che conta per quantificare l’entità del passaggio di corrente nel circuito è il
valore che assume la serie delle due resistenze. Si può infatti applicare la legge di Ohm
per ottenere:
VDD = I ( RL + RD )
Sempre sfruttando la legge di Ohm, possiamo calcolare la caduta di tensione sulla
seconda resistenza, quella di pull-down, per capire a quanto sarà pari VOUT .
RD
VOUT = VDD
RD + RL
Ne risulta, ad esempio, che se le due resistenze sono uguali, allora la VOUT sarà pari a
VDD
(perché metà della tensione cade sulla resistenza di pull-up e, dunque, al nodo
2
resterà l’altra metà).
Il nostro scopo è quello di ottenere un’uscita “alta” o “bassa” che corrisponda ad uno
dei due stati logici dell’elettronica digitale. Tenendo presente che il circuito in
questione è un invertitore dobbiamo dunque fare sì che, se la tensione di ingresso è
pari ad 1 [a 0], si abbia in uscita una tensione quanto più simile a uno 0 [ad un 1]: una
tensione in uscita di 0,5 non ci servirebbe a nulla perché non individuerebbe in
maniera univoca uno stato logico. Per realizzare questa situazione, la resistenza di
pull-down dev’essere o enorme (se vogliamo che confluisca tutta verso il nodo di OUT
per avere un bell’1 fuori dal circuito) oppure praticamente inesistente (se vogliamo
invece che tutta la corrente si scarichi verso massa senza lasciare nulla all’uscita).
Vogliamo inoltre che questa resistenza sia in grado di passare velocemente dal valore
che abbiamo definito come enorme a quello di praticamente nullo. Come fare? Il modo
migliore per risolvere il problema è quello di sostituire la RD con uno switch, cioè con
un interruttore: quando l’interruttore è “chiuso” allora vorrà dire che la parte inferiore
del nostro partitore si comporterà come un cortocircuito (e quindi si ha resistenza
bassissima); quando invece è “aperto”, la sua resistenza di pull-down sarà dell’ordine
del giga-Ohm e la corrente che scorrerà su di esso sarà trascurabile.
Nascono quindi diverse problematiche:
- anzitutto la resistenza di pull-up non potrà essere molto grande, altrimenti
entrerà in “concorrenza” con quella di switch aperto;
- bisogna tenere conto della quantità di corrente (corrente di leakage) che viene
comunque persa perché riesce a scorrere anche in condizione di altissima
resistenza: essa è molto piccola, dell’ordine dei 10−9 ∼ 10−12 Ampére).
Tenendo conto di queste due ultime osservazioni possiamo dire che la tensione
massima ottenibile in uscita (cioè quella che verrà identificata come un “1”) non potrà
essere certamente VDD , ma sarà leggermente inferiore a causa del leakage:
VOH = VDD − Rswitch ⋅ I leakage
Possiamo dunque definire la grandezza chiamata potenza dissipata, sempre dovuta a
questa (indesiderata) corrente parassita:
Pdissipata = VDD ⋅ I leakage
Immaginiamo ora di avere un volere una tensione di uscita alta, cioè VOUT ∼ VDD .
L’ideale sarebbe quello di avere una resistenza di pull-up veramente bassa,
praticamente nulla, per poter “tirare su” adeguatamente l’uscita. Tuttavia anche
questo dimensionamento nasconde un’insidia: una resistenza di pull-up troppo bassa
consuma infatti moltissima energia, perché lascia scorrere tanta corrente. La potenza
dissipata sarebbe infatti
V V2
Pdissipata = VDD ⋅ I L = VDD ⋅ DD e dunque si ha che Pdissipata ↑= DD (1)
RL RL ↓
Si potrebbe pensare di risolvere questo problema aumentando adeguatamente la RL ,
ma anche qui ho alcuni problemi: anzitutto avrò una logica lenta e poi, come già detto,
rischio di avere un’uscita meno “limpida” vista la concorrenza con la seconda
resistenza. Tutto questo per dire che il corretto dimensionamento delle resistenze deve
tenere conto di:
- potenze dissipate;
- velocità della logica;
- correnti parassite.

Vediamo ora come implementare lo switch (“interruttore”), cioè il componente che


abbiamo messo nella parte inferiore del nostro circuito (detta “di pull-down”).

Questo è il simbolo dello switch chiamato MOSFET.


- VG è la cosiddetta tensione di gate;
- VSW è la tensione tra i due elettrodi fra i quali scorre corrente;
- I SW è la corrente che lascia passare lo switch.
Per capire se lo switch lascia o meno passare corrente fra i due elettrodi in questione,
bisogna guardare la tensione di gate: esiste infatti una tensione di soglia VT sopra alla
quale il MOSFET si comporta come un cortocircuito e sotto alla quale non lascia
passare corrente. Questo valore di soglia si riferisce proprio alla VG e diventa
“discriminante” dello stato dello switch, nel senso che si ha per

VG > VT  cortocircuito  mosfet acceso


VG ≤ VT  aperto  mosfet spento

Il grafico y( x ) = I SW (VSW ) per uno switch come questo (che è ideale), è molto semplice
da visualizzare: se la tensione di gate è inferiore a quella di soglia, allora il grafico
coinciderà con l’asse della tensione (cioè con l’asse x), visto che la corrente è zero e
quindi la y = 0 . Se invece il MOSFET è “acceso”, e si è quindi verificato che VG > VT ,
allora il grafico coinciderà con l’asse y (se non vi è resistenza, la legge di Ohm prevede

1 Potenza dissipata per effetto Joule


che non vi sia tensione qualsiasi sia il valore della corrente, che nel nostro caso è
=R
associata proprio all’asse y. La relazione è sempre verificata  V  I ).
=0 =0
Se disegniamo invece il grafico delle tensioni di ingresso/uscita y( x ) = VOUT (VIN )
avremo due linee parallele all’asse x (e che prevedono quindi y costante): si ha infatti
in uscita il valore +VDD da 0 a VT (se il lo switch è aperto, tutta la tensione va in
uscita), mentre si ha il valore di tensione 0 da VT fino all’infinito (se lo switch si
comporta da cortocircuito, tutta la tensione va a massa e all’uscita non rimane nulla).
Nel grafico vi è tale discontinuità proprio perché, essendo lo switch ideale, i segnali di
ingresso commutano in maniera istantanea.

Ora siamo in grado di capire come sia possibile implementare moltissime funzioni solo
tramite switch. Prendiamo ad esempio l’apparato nella figura seguente.

 Questo circuito implementa un NAND: si verifica infatti che, con


entrambi i due switch accesi, tutta la corrente fluisce giù verso
massa, mentre basta che soltanto uno dei due sia spento per creare
un aperto e far alzare la tensione di VOUT . La tabella della verità è
dunque la seguente:

Primo switch (G1) Secondo switch (G2) Tensione d’uscita


1 = acceso 1 = acceso 1 = alta
0 = spento 0 = spento 0 = bassa
0 0 1
0 1 1
1 0 1
1 1 0

Come si può facilmente verificare, con gli interruttori è facile anche realizzare un
NOR, come in questa seconda figura 
Questa volta è necessario che entrambi i circuiti siano spenti per
interrompere il collegamento con massa e permettere alla
tensione d’uscita di essere alta.

Primo switch (G1) Secondo switch (G2) Tensione d’uscita


1 = acceso 1 = acceso 1 = alta
0 = spento 0 = spento 0 = bassa
0 0 1
0 1 0
1 0 0
1 1 0

Esaminiamo ora un altro problema dei nostri circuitini: in essi possiamo tralasciare gli
effetti induttivi, ma non quelli capacitivi, perché la VOUT potrebbe (ad esempio) essere
la VIN di un altro switch, o comunque potrebbe essere collegata ad altri componenti
che, in prima approssimazione, sono come dei condensatori se visti dal nostro piccolo
circuitino.
Come si è già detto, il dimensionamento delle resistenze è importante perché con una
cattiva progettazione possono nascere problemi di lentezza (resistenza di pull-up
troppo grande) o di potenza (resistenza di pull-up troppo piccola). Un modo brillante di
risolvere questo problema è quello di inventare un MOSFET complementare a quello
studiato fin’ora e che dunque verifichi ciò che è illustrato questa tabellina.

Tensione di gate VG N-MOSFET P-MOSFET


(studiato fin’ora) (quello duale che cerchiamo)
> soglia VT chiuso aperto
< soglia VT aperto chiuso

Se ora prendiamo il nostro circuitino e lo modifichiamo affinché sia


fatto  in questo modo, avremo allora ottenuto un circuito che non
ha mai un percorso conduttivo da VDD verso massa (o il P-MOS,
sopra, o l’N-MOS, sotto, risulta aperto perché i due MOSFET sono
duali ma hanno lo stesso ingresso!), che dissipa pochissima
potenza2 e che ha una VOH (cioè la VOUT che consideriamo “alta”)
molto buona e quindi molto vicina a VDD ; infine, con questo
escamotage abbiamo evitato anche i problemi di dinamica.
Insomma, è la soluzione ottimale!

2 Nominalmente dovrebbe consumare potenza statica nulla (non dovrebbe mai esistere un percorso
conduttivo da VDD a massa). In realtà ciò non avviene: sia per via del leakage, che qui ha la forma di
corrente di sotto-soglia ed è la causa di uno spegnimento non ideale degli switch, sia per via del fatto che
la commutazione dell’N-MOS e quella del P-MOS non avvengono in modo istantaneo e, dunque, esiste
un lasso di tempo in cui sono entrambi accesi ed è presente un pericoloso percorso conduttivo. Vedremo
inoltre nei prossimi capitoli che la corrente di sotto-soglia si genera a causa della tensione drain-source,
che è pari a VDD nel caso di uscita alta e se ci riferiamo al transistor N-MOS inferiore, e a causa della
tensione drain-bulk.
II – FUNZIONAMENTO DELL’INVERTITORE, CONSIDERAZIONI SULLA POTENZA

Dopo aver esaminato la struttura del nostro invertitore, facciamo qualche


considerazione sul suo funzionamento. Prendiamo in considerazione un piccolo
circuitino in retroazione formato da due invertitori:

Il primo ha in ingresso VIN1 e dà in uscita VOUT 1 = VIN1 = VIN 2 ; il secondo invertitore


riceve in input VIN 2 e dà in uscita VOUT 2 = VIN 2 = VIN1 .
Abbiamo quindi:
- una prima funzione f1 che descrive il primo invertitore e i segnali VIN1 e
VOUT 1 : VOUT 1 = f1 (VIN 1 ) ;

Soglia logica VT

- una seconda funzione f2 che descrive il secondo invertitore e i segnali VIN 2 e


VOUT 2 : VOUT 2 = f2 (VIN 2 ) .

Grazie tuttavia alle relazioni che abbiamo scritto poco sopra, possiamo dire che
VOUT 2 = f2 (VIN 2 )  VIN1 = f2 (VOUT 1 )
Abbiamo quindi ottenuto una funzione inversa a VOUT 1 = f1 (VIN 1 ) . Si ha infatti che
f1 = f2−1
Andando a graficare queste due funzioni, otterremmo due curve simmetriche rispetto
alla bisettrice:
Come si nota, queste due curve si intersecano in tre punti: uno di questi (precisamente
quello centrale, in cui VIN = VOUT ) è a noi indifferente perché il valore in questione
non rappresenta né un 1, né uno 0. In quel punto, anzi, il circuito è molto instabile
perché la curva di f ha una elevata pendenza ed è sufficiente quindi un piccolo rumore
per allontanare dinamicamente l’equilibrio da quel punto lì (un piccolo spostamento
nelle x genera un grande spostamento nelle y). Rimangono quindi solo due punti
notevoli, perché tutti gli altri punti – che appartengono ad una sola delle due curve -
non rappresentano tensioni comuni e quindi non ci interessano. I due punti
“sopravvissuti”, tuttavia, sono molto buoni:
- alle coordinate cui si trovano, f ha una pendenza piccola in modulo e, dunque, i
rumori difficilmente intaccheranno la bontà del valore;
- le situazioni di 1 e di 0 sono molto nette;
- proprio perché sono punti comuni, abbiamo soddisfatto le equazioni:
VOL = f (VOH ) ⇒ VOH = f −1 (VOL )
VOH = uscita alta
VOH = f (VOL ) ⇒ VOL = f −1
(VOH ) VOL = uscita bassa

e dunque f = f −1
L’intersezione fra le due curve e la bisettrice del relativo quadrante diventa quindi la
soglia logica dell’invertitore (VLT ) , da non confondere con la tensione di soglia del
transistor. Si definisce invece swing logico la quantità Vswing = VOH − VOL .
Ora dobbiamo in qualche modo definire quale sia il “limite” fino al quale consideriamo
il dato d’uscita come un 1 e quello che invece ci delimita in maniera chiara uno 0; per
convenzione si scelgono come “spartiacque” i due punti in cui la curva assume
pendenza pari a –1 (cioè di meno 45°).
Tra i due punti a pendenza –1, il “più in alto” è quello minimo per il quale si ha un 1
( VOH min ); l’altro è quello massimo per il quale si ha uno 0 ( VOL max ). Questi due punti
(sono punti d’uscita, quindi stanno sull’asse y) non sono in comune fra la f e la f −1 ,
quindi non possono essere fra loro scambiati come si può fare con la VOL e la VOH : per
questo è necessario cambiare simbologia per denotare i corrispettivi punti sull’asse x
(quello degli ingressi).
- Alla VOH min corrisponderà, sull’asse x, una VIL max , cioè la massima tensione
che assume l’ingresso considerato come uno 0;
- Alla VOL max corrisponderà, sull’asse x, una VIH min ; cioè la massima tensione
che assume l’ingresso considerato come un 1.

Ora abbiamo tutte le informazioni per delimitare i due punti (a tangente ad angolo -
45°) sul piano cartesiano:
P1 (VOH min ,VIL max )
P2 (VOL max ,VIH min )

Facciamo ora un’osservazione sul grafico: risulta facile accorgersi che abbiamo molta
più “tolleranza” (ovvero molto più margine di errore possibile) sugli ingressi che sulle
uscite. Prendiamo infatti le zone “sicure”, ovvero quelle a pendenza minore in modulo
a –1: dal grafico si vede che diventano quasi dei plateaux, molto lunghi e poco
pendenti, più ci inoltriamo nella zona in cui siamo certi del nostro 1 (o del nostro 0).
Questa loro “lunghezza” si traduce nella copertura di un gran numero di valori “buoni”
sull’asse x (cioè quello degli ingressi!), mentre la “bassa pendenza” include meno valori
“buoni” sull’asse y (che è quello delle uscite).
Comunque sia, a volte i disturbi si fanno talmente intensi che le tensioni “escono”
dalla zona sicura. Siamo allora spacciati? Dipende: vediamo perché.
Abbiamo poco fa definito il punto di soglia logica, ovvero l’intersezione fra il punto
centrale comune alle due curve e la bisettrice del relativo quadrante. A tale punto di
soglia, vista la sua locazione sulla bisettrice y = x, corrisponde un’egual valore di
tensione d’entrata x e di tensione d’uscita y. Questo punto è importante perché
delimita un altro confine fondamentale; come si è detto, può infatti capitare che il
rumore sia talmente consistente da farci evadere dalle zone di certa interpretazione, e
proprio la nostra soglia logica ci “salva” nel 50% dei casi1:
- caso favorevole  siamo a sinistra della soglia logica, quindi verso i valori alti:
grazie alla maggiore tolleranza sugli ingressi, il circuito, in un numero finito di
transizioni, allontana il punto dalla zona proibita facendolo tornare verso quella
di sicura interpretazione. Alla fine avremo un segnale certo e pari ad 1 (error
recovery);
- caso sfavorevole  ci troviamo a destra della soglia logica, verso i valori bassi:
non c’è speranza di rigenerazione della nostra informazione e la nostra uscita è
confusa.
Questa proprietà di recuperare gli errori nelle interconnessioni a cascata è chiamata
capacità rigenerativa del circuito.
Si noti che, se avessimo avuto un invertitore descritto dalla funzione f −1 prima
definita, avremmo ottenuto un risultato opposto: i nostri valori, vista l’alta pendenza

1 Ci stiamo riferendo alla trasmissione, in uscita, di un 1.


delle zone di chiara interpretazione, si sarebbero piano piano accumulati a ridosso
della soglia logica, con conseguenze imbarazzanti.

Passiamo ora ai parametri prestazionali del nostro invertitore:


- direttività: capacità del circuito di essere unidirezionale, nel senso che l’ingresso
governa l’uscita, mentre le commutazioni o anche i disturbi al nodo d’uscita
hanno un effetto molto modesto sull’ingresso;
- fan-out: numero massimo di gate in uscita per il quale si preservano le
prestazioni del componente;
- fan-in: come il fan-out, ma i gate sono in entrata.
Sono parametri molto importanti, perché influenzano sia le performance statiche che
quelle dinamiche del componente.
Iniziamo col fan-out: per visualizzare gli effetti sulle prestazioni del nostro invertitore,
possiamo fare finta che - per il caso statico - un maggior numero di porte in uscita
equivalga a un maggior numero di resistenze collegate (in parallelo) all’uscita VOUT ,
ed equivalga – per il caso dinamico - ad un condensatore di capacità C tanto più
elevata quanto elevato è il fan-out.
Le resistenze si comportano infatti alla stregua di componenti che potremmo
eventualmente attaccare alle uscite del nostro invertitore, e devono essere resistenze
elevate per impedire che venga dissipata molta corrente (gli switch sono stati
introdotti proprio perché, se aperti, garantiscono una minimizzazione del leakage e
l’assenza di un percorso conduttivo verso massa) e per far sì che l’uscita dell’invertitore
sia quanto più simile a VDD . Tuttavia, per le proprietà del collegamento in parallelo di
resistenze, maggiore è il numero di queste ultime e minore sarà la resistenza
equivalente, con la conseguenza che otteniamo effetti indesiderati (uscita sporca,
dissipazione di potenza).
Esaminando il caso dinamico ci accorgiamo invece che un condensatore di elevata
capacità collegabile a VDD , e assimilabile ai vari componenti che potremmo avere in
uscita, rallenterebbe di molto la nostra logica.
Passiamo ora al fan-in: il problema sulla statica è ora dovuto al fatto che tanti switch
di pull-down (ovvero tanti ingressi) non hanno resistenza nulla, ma resistenza quasi
nulla. Se iniziano a diventare parecchi, la corrente di leakage diventa notevole e la
resistenza del ramo più elevata, con la conseguente rottura di quel dimensionamento
ideale delle resistenze di cui si è tanto parlato in precedenza.
Il problema in dinamica nasce dal fatto che l’elevata resistenza di pull-down, di cui
sopra, con la quale scarichiamo la capacità C collegata al circuito (e carica nella
commutazione 1  0) è troppo grande e il tempo di scarica diventa troppo lungo.

Esaminiamo quindi le caratteristiche dinamiche concentrandoci su:


- tempi di commutazione;
- potenza dissipata.

Il seguente schema mostra le tempistiche dell’invertitore: il grafico superiore


rappresenta l’andamento dell’ingresso (0  1  0), quello inferiore l’andamento
dell’uscita (1  0  1). Si noti anzitutto che i due grafici sono leggermente sfasati,
perché ovviamente – in un caso reale - la commutazione non può essere istantanea. Si
individuano dunque i seguenti tempi:
• trise = tempo in cui l’uscita, sulla rampa ascendente, passa dal 10% al 90% del
suo valore;
• tfall = tempo in cui l’uscita, sulla rampa discendente, passa dal 90% al 10% del
suo valore;
• t pHL = il tempo che intercorre fra il momento in cui l’ingresso raggiunge
(crescendo) il 50% della dinamica e quello in cui l’uscita (calando) raggiunge lo
stesso valore;
• t pLH = il tempo che intercorre fra il momento in cui l’ingresso raggiunge
(calando) il 50% della dinamica e quello in cui l’uscita (crescendo) raggiunge lo
stesso valore;
t pHL + t pLH
• tp = , detto anche propagation delay. È un parametro importante per
2
la progettazione di una logica: se abbiamo infatti un clock che scandisce il tempo
con frequenza 1 , dobbiamo fare in modo che il segnale sia in grado di salire e
T
scendere (completamente) all’interno di quella frequenza di clock per essere
riconosciuto in tempo.

Come facciamo a calcolare in maniera molto rapida il ritardo di un’intera rete di


invertitori?
Il metodo più furbo è quello di costruire un ring oscillator, ovvero un circuito fatto da
un numero dispari di invertitori collegati in serie e quindi in retroazione (il numero
dispari si deve al fatto che, con un numero pari di essi, esisterebbero soltanto due stati
stabili). Così facendo otteniamo un circuito (senza nessuno stato stabile) nel quale, ad
ogni nodo, è presente una forma d’onda oscillante. Per calcolare il ritardo si fa quindi
così:
T = 2 ⋅ N ⋅ tp
- il t p è il propagation delay;
- l’N è il numero (dispari) di invertitori del nostro ring;
- il 2 si deve al fatto che si tiene in considerazione sia la commutazione in salita
che la commutazione in discesa.

Passiamo ora al problema della potenza, parametro molto importante.

La potenza statica è la potenza che la logica dissipa per il solo fatto di mantenere
l’informazione. Prendiamo il nostro invertitore con un carico sulla rete di pull-up e uno
switch sulla rete di pull-down:
- a switch aperto si ha che non c’è corrente nel ramo verso massa e che la potenza
dissipata è nominalmente nulla;
- a switch chiuso vi è un percorso conduttivo verso massa: la pila (a VDD ) dissipa
quindi dell’energia per mantenere lo stato. Tale energia dissipata è pari a
VDD 2
Pstatica = VDD I st =
Rpull −up + Rpull −down
La potenza dinamica si deve al concetto stesso di commutazione e, quindi, di
elaborazione di informazioni. Il passaggio fra valori di 0  1 e 1  0 costa infatti
dell’energia sotto forma del lavoro necessario a far commutare i valori, cioè a
caricare/scaricare il condensatore (che simula la presenza di altri componenti)
collegato a VOUT .

Qual è la potenza dinamica dissipata in un ciclo?

Prendiamo il nostro invertitore e consideriamo, ad esempio, il transitorio [uscita = 0 


1]: lo switch inferiore si aprirà per fare sì che la tensione della pila venga convogliata
verso l’uscita VOUT che verrà, conseguentemente, portata a 1. Se conosciamo
l’andamento della corrente che scorre lungo la linea di pull-up rispetto al tempo,
possiamo fare l’integrale della potenza dissipata per trovare l’energia:
+∞ +∞
dVOUT
E= ∫ I pull −up (t ) ⋅ VDD dt = VDD ∫C dt = VDDC (VOH − VOL )
0 0
dt
In molte situazioni, quello che accade è che metà di questa potenza viene dissipata sul
 CVDD 2 
condensatore  =  , mentre l’altra metà viene fatta fuori nella resistenza di pull-
 2
 
up. La parte rimasta sul condensatore viene quindi tranquillamente scaricata nella
commutazione [uscita = 1  0] (senza che però la pila a VDD debba intervenire).

Il transitorio opposto (di scarica) è governato da dinamiche simili, con l’ipotesi che
nella rete di pull-up sia presente uno switch, altrimenti verso massa andrebbero a
finire sia la carica depositata sul condensatore (in OUT) che scarichiamo, sia l’apporto
della pila che sta a VDD . Fatta questa ipotesi, considerando cioè nullo l’apporto della
pila nel transitorio 1  0, non dobbiamo metterci “del nostro” per provocare la scarica:
come abbiamo detto poco fa, la carica sul condensatore (abbiamo speso energia nel
transitorio di carica per depositarla lì) fluirà naturalmente verso massa attraverso il
relativo percorso conduttivo senza l’apporto di altra energia.
Quindi la relazione
logica
ben
costruita
E = VDDC (VOH − VOL ) ≈ VDDCVDD = VD2DC
(in una logica “fatta bene”, cioè provvista di switch e tenente conto di tutte le
considerazioni fatte fin’ora, la differenza [uscita alta – uscita bassa], che prende il
nome di swing logico, è molto vicina a VDD )
è valida per un ciclo completo (nel nostro es. basso  alto  basso).

Facciamo allora qualche considerazione “complessiva”: poniamo che il nostro circuitino


abbia una frequenza di commutazione f. La potenza2 dinamica dissipata nel tempo
diventerà
Pdin = VDD
2
Cf (3)
Quali prospettive per una minimizzazione di questa energia dissipata?

L’ipotesi più verosimile è che, in futuro, f possa crescere (o rimanere costante): è


necessario dunque giocare sugli altri due parametri.

Fra tutti, VDD sembrerebbe il parametro sul quale una modifica al ribasso potrebbe
incidere nella maniera più positiva: una sua diminuzione sarebbe infatti quadratica (il
termine è elevato a una potenza di 2). Tuttavia, tale diminuzione è molto problematica
a causa dei rumori (abbassare VDD significherebbe abbassare il divario 0 / 1 e quindi
rendere la logica più sensibile ai disturbi) e a causa dell’interfacciamento con l’esterno:
una logica con una VDD inferiore all’attuale standard renderebbe inoltre tale logica
incompatibile con gli altri componenti già esistenti sul mercato, con la conseguenza
che non la comprerebbe nessuno.

Agire su C è, alla fin fine, la soluzione più saggia. C dipende fondamentalmente da due
parametri:
A
C =ε
d
Sull’ ε non ci si può fare più di tanto, mentre su A e d sì: risulta una scelta piuttosto
oculata quella di far si che una nuova tecnologia più efficiente diminuisca l’area A per
minimizzare la C. La soluzione apparentemente più ovvia sarebbe quella di aumentare

2 Si noti che si parla di potenza, non di energia, perché abbiamo moltiplicato per una frequenza (e, di
conseguenza, è come se avessimo diviso per il tempo  energia / tempo = potenza)
3
Considerazione sui transistor (vedi capitoli successivi): siccome la potenza dinamica dei circuiti CMOS
dipende dal quadrato della tensione VDD con cui i circuiti sono alimentati, la riduzione di tale tensione
può migliorare molto il consumo di potenza. In particolare, se supponiamo di far lavorare il circuito ad
una massima frequenza di lavoro, il prodotto fra la potenza dinamica Pdim e il ritardo di propagazione
tp può essere espresso come: t p Pdin = t pCLVDD
2
fP0→1 = CLVDD
2
P0→1 (prodotto ritardo-consumo). Siccome, di
norma, è possibile ridurre i ritardi a scapito di un aumento del consumo di potenza e dell’occupazione di
area nel silicio, tale prodotto ritardo-consumo è fortemente caratterizzante ed è importante figura di
merito. È evidente che, riducendo VDD , tale parametro migliora sensibilmente: tuttavia, l’altra faccia
della medaglia è che, con la riduzione di VDD , aumentano i ritardi ( VDD compare al denominatore nella
formula del ritardo). Si potrebbe pensare di compensare quest’aumento con una diminuzione della
soglia logica (che si sottrae a VDD , al denominatore). Tuttavia ciò è molto difficile da realizzare nella
pratica.
anche d, ma questo è infattibile perché vogliamo dei circuiti che siano il più possibile
piccoli (rimpicciolimento = “scaling”4); conviene dunque che A venga diminuita più di
quanto viene diminuita d, affinché il “bilancio finale” veda una complessiva
diminuzione della C e quindi della E.

Esiste un’ultima potenza dissipata da analizzare: la potenza di cortocircuito.


Essa va presa in considerazione dal momento in cui cade l’idealità di un’ipotesi fatta in
precedenza. L’ipotesi era la seguente:
“… [con l’ipotesi] che nella rete di pull-up sia presente uno switch, altrimenti
verso massa andrebbero a finire sia la carica depositata sul condensatore (in
OUT) che scarichiamo, sia l’apporto della pila che sta a VDD ”.
In base a questo assunto, non ci dovrebbe mai essere percorso conduttivo verso massa,
perché i due switch sulle reti di pull-up e di pull-down dovrebbero assicurare
l’incompletezza di tale percorso. Tuttavia, facendo questa ipotesi di caso ideale,
abbiamo trascurato il fatto che la commutazione – in un caso reale – non è istantanea:
esiste infatti un breve lasso di tempo in cui entrambi gli switch sono accesi e in cui si
perde “più energia del dovuto”.

L’energia dissipata altro non è che l’area che è delimitata sotto la linea viola e
all’interno della regione rossa. Essa è calcolabile mediante un integrale:
tf
E = ∫ I SCVDD dt
ti
(ISC è la corrente che attraversa il percorso verso massa)
Il modo migliore per minimizzare questa energia è, in maniera evidente, aumentare la
pendenza della rampa in figura e, quindi, minimizzare i tempi di commutazione.

4
Lo scaling è una questione alla quale è stato dedicato tantissimo spazio nella letteratura tecnico-
scientifica: la microelettronica degli ultimi trent’anni è infatti andata sempre più in direzione di un
rimpicciolimento dei componenti (MOSFET in particolare). Un primo scenario di scaling proposto nella
metà degli anni settanta prevedeva di ridurre la VDD dello stesso fattore di cui venivano contratte le
geometrie. Questa strategia era guidata dall’idea che, riducendo contestualmente dimensioni
geometriche e tensioni, le prestazioni e l’affidabilità dei transistori potessero rimanere invariate.
Questa strategia non è però mai stata applicata: il valore di VDD è rimasto costante e pari a 5 V.
III – IL TRANSISTOR (prima parte)

“Ci tengo molto alla questione delle dimensioni”


Enrico Sangiorgi, 29 gennaio 2007

1928 – Brevetto del MOS


1945 – Primo transistore
1960 – Primo MOS

Il transistore MOS, cioè il MOSFET (Metal Oxide Semiconductor Field Effect


Transistor), è il dispositivo più importante e diffuso nella moderna microelettronica.
Il trans(re)sistor è una valvola “piatta” (quindi tipicamente a due dimensioni) allo stato
solido con almeno tre elettrodi, che consuma davvero poco (e a volte nulla)
staticamente; tale valvola comanda il fatto che “sotto il suo piatto” passi o meno
corrente.
Se facciamo una sezione del transistore notiamo tre strati; esaminiamoli dall’alto al
basso:
- metallo: che è un buon conduttore e che, vedremo, avrà cariche negative;
- ossido: ovvero il biossido di silicio BiO2 , un materiale dalle caratteristiche per
noi eccezionali, in quanto:
o è un isolante quasi perfetto, ovvero ha un’enorme resistività;
o è molto regolare e privo di impurità;
o è l’ossido naturale del silicio;
- semi-conduttore (silicio drogato di tipo p): che non è né un isolante, perché un
poco conduce, né un conduttore, perché non ha molti elettroni di conduzione; su
di esso, come vedremo, si accumuleranno le cariche positive.
Il semiconduttore ha l’interessante proprietà di diventare più simile a un
isolante o più simile a un metallo tramite un procedimento chiamato drogaggio,
consistente nell’immissione di un drogante, ovvero di una certa quantità e
qualità di atomi all’interno del materiale. Il drogaggio che porta il materiale a
somigliare di più a un metallo può essere effettuato con un elemento della V
colonna (es. arsenico); il drogaggio opposto può invece essere ottenuto con
l’immissione di elementi della III colonna (es. boro). Il comportamento più o
meno metallico stabilisce se, a condurre, sono gli elettroni (carica negativa di
tipo n− , corrispondente a una zona drogata di tipo n) o le lacune (che sono
“particelle finte” rappresentanti “la mancanza di elettroni” e quindi una carica
positiva di tipo p + , corrispondente a una zona drogata di tipo p). L’intensità
maggiore o minore delle aree di drogaggio n rispetto a quelle di drogaggio p è
compensativa: l’inserimento di un atomo della III colonna è quindi bilanciabile
con l’inserimento di un atomo della V.

Per quanto riguarda la capacità e la differenza di tensione fra il metallo


(negativamente cariato) e il semiconduttore (di segno opposto), un MOS è come un
condensatore. Tuttavia, non è assimilabile a un condensatore lineare; un dispositivo di
quest’ultimo tipo, infatti, presenta carica 0 sulle proprie piastre se viene
cortocircuitato mentre, in presenza di una tensione, la carica su di esse varia in
maniera lineare: si ha infatti che Q ∝ ∆V .
Il nostro MOS, dicevamo, si comporta diversamente: anzitutto la sua capacità non
varia in maniera lineare e, anzi, la curva che descrive l’andamento della carica
rispetto alla differenza di potenziale metallo/semiconduttore è molto complessa.
Inoltre, se cortocircuitato, il MOS mantiene una certa quantità di carica sulle piastre
(un effetto che si deve all’uso di materiali diversi e sul quale non ci soffermeremo). La
tensione (diversa da 0!) per la quale si ha carica zero su metallo e semiconduttore
viene chiamata VFB (tensione di flat band) ed è un parametro tecnologico: potrebbe
essere negativa o positiva, tutto dipende dalla coppia di materiali usati per la
costruzione del transistor.

Poniamo il nostro MOSFET a una certa differenza di potenziale ∆V e osserviamo cosa


capita al variare di tale tensione, assumendo per ipotesi che VFB sia minore di zero:

∆V EFFETTO
Siamo nella regione di accumulazione: il semiconduttore è di tipo p e già
contiene delle cariche positive; la differenza di potenziale, a questi
< VFB livelli, ve ne fa confluire, per induzione, moltissime altre. Di
conseguenza, nel metallo si accumulano, in maniera speculare e per
induzione elettrostatica, molte cariche negative (elettroni).
Siamo nella zona di svuotamento delle lacune: il campo elettrico
presente nell’ossido cambia infatti direzione e inizia a spingere piano
piano le cariche positive (lacune) presenti sul semiconduttore verso la
parte sottostante (bulk, o substrato). Ciò significa che, in realtà, stiamo
attirando degli elettroni nel cosiddetto canale, la parte del silicio p
> VFB , < VT
immediatamente sottostante all’ossido (e compresa fra drain e source)
che è il luogo in cui scorre poi la corrente I DS . Un’osservazione: mentre
in un condensatore piano la caduta di potenziale è tutta localizzata
all’interno delle due piastre, nel nostro MOS vi è caduta di potenziale
anche all’interno del semiconduttore.
Nel canale mi trovo tanti elettroni quante lacune ho spinto nel
substrato: a questo punto il transistore è acceso perché gli elettroni del
canale possono creare la I DS . Siamo giunti alla tensione di soglia del
nostro condensatore MOS e, da questo punto in avanti, esso si
comporterà come un condensatore a facce piane e parallele. La carica
nel canale dipende dunque in maniera lineare da ∆V − VT , cioè che

> VT
(
QINV = COX VGS − VT ) 1 e che:

ε
C = ACOX = A OX
TOX
dove A è l’area del nostro MOSFET, COX la capacità specifica
dell’ossido e TOX lo spessore dell’ossido di silicio. Una buona
progettazione vedrebbe come obiettivo quello di massimizzare COX per
avere, con poca extratensione, più carica.

1 Tale espressione individua la carica presente sotto a un centimetro quadrato di area di condensatore.
Esaminiamo ora più in dettaglio come è fatto
il nostro transistor. Come si nota dalla figura,
la corrente va dal drain al source, in base alla
convenzione per la quale utilizziamo, come
verso della corrente, la direzione opposta a
quella degli elettroni. Passa corrente nel
transistor quando:
VGateSource > VT
Inoltre, il transistore è acceso e pronto a
condurre quando si ha:
VDrainSource ≥ 0
Tagliamo ora il nostro transistor nella sua
parte centrale con un piano (in questo caso
perpendicolare al piano del foglio) sezionando
quindi il gate e lo strato di silicio: chiamiamo
la larghezza di questo strato W. La corrente
che passa quando sono soddisfatte le condizioni scritte poco sopra è quindi:
I DS = QINV ⋅ v ⋅ W
• I DS è la corrente che fluisce da drain a source;
• QINV è la quantità di carica che sta sotto a un 1 cm2 del nostro condensatore;
• v è la velocità degli elettroni;
• W è la larghezza di cui parlavamo poco fa.
Gli elettroni procedono per moto viscoso dentro al silicio, con una velocità che è
direttamente proporzionale al campo elettrico formatosi a causa della differenza di
tensione drain-source. Possiamo infatti scrivere:
V
vx ∝ Ex dove Ex = − DS
L
(per definizione di campo elettrico; qui L è la distanza drain-source)
Sperimentalmente, si trova che: vn = − µn Ex
• l’n al pedice del termini v e µ sta ad indicare che a muoversi sono gli elettroni:
se consideriamo le lacune dobbiamo scrivere v p e cambiare il segno
dell’equazione;
• il segno meno sta ad indicare che la velocità degli elettroni è direzionalmente
opposta a quella del campo elettrico (come da convenzione). In questo caso
consideriamo la componente x del campo elettrico, quella cioè parallela alla
congiungente drain-source;
• µn (mobilità elettronica) è il parametro sperimentale della formula; è dell’ordine
cm2
dei 200-800 .
s⋅V
µnVDS
Sostituendo, si ha: vn = .
L
Ora mettiamo insieme le seguenti relazioni:
(
• QINV = COX VGS − VT )
(per la carica che si deposita nelle “piastre” del MOS)
• I DS = QINV ⋅ v ⋅ W (per la corrente drain-source)
µ V
• vn = − n DS (per la velocità degli elettroni)
L
Otteniamo: ( µ V
)
I DS = COX VGS − VT ⋅ n DS ⋅ W .
L
I parametri di questa relazione possono essere raggruppati in tre categorie:
• parametri tecnologici: dipendono dalla bontà della tecnologia utilizzata;
• parametri di tensione: perché sono tensioni;
• parametri di design (distanza): che dipendono, appunto, dalla forma del
MOSFET.
Riscrivendo la relazione di cui sopra in maniera più ordinata otteniamo:
I DS =
W
L
(
COX µnVDS VGS − VT )
Per rendere più agile la nostra relazione si pone:
• conducibilità intrinseca: β ' = µnCOX ;
W W
• β =β' = µnCOX .
L L
(
Alla fine abbiamo: I DS = β ⋅ VDS VGS − VT . )
NOTA: facendo queste considerazioni c’è un particolare che non abbiamo considerato
(e che continueremo a non considerare operando cioè una semplificazione): vista la
forma del MOSFET, costituito di 4 gate, abbiamo uno schema delle tensioni fatto “a
croce”, come gli assi ortogonali cartesiani x e y.
• Dall’alto al basso: componente della tensione “y” fra il gate e il bulk;
• Da sinistra a destra: componente della tensione “x” tra il source e il drain.
Prenderemo un modello semplificato, valido per Vsource → 0 , in cui considereremo
solo la parte relativa alle x.
( )
Comunque sia, andiamo a graficare la relazione I DS = β ⋅ VDS VGS − VT nel piano delle
caratteristiche I DS = f (VDS ) (con VGS ≥ VT  dall’accensione in poi ):

Sperimentalmente si nota che quella che dovrebbe essere una dipendenza lineare,
dovuta alla presenza di una proporzionalità ∝ VDS , è tale soltanto per valori di VDS
bassi. Superato un certo limite, infatti, la crescita diventa sub-lineare per la presenza
di alcuni effetti compensativi. Al fine di tener conto di questa diversa modalità di
crescita, viene introdotto un nuovo termine nell’equazione di prima
DA COSÌ: I DS =
W
L
(
β '⋅ VDS VGS − VT )  A COSÌ: I DS =
W
L

( ) 1 
β '⋅ VDS VGS − VT − VD2S 
 2 
Tuttavia, con questa modifica cadiamo nuovamente in errore, questa volta sulle
tensioni alte: per VDS elevata, infatti, il termine in rosso prende il sopravvento e
distorce il vero andamento della corrente, che è quello indicato nella figura qui sotto:

Tenendo comunque presente che, per VDS bassa, il comportamento del transistore è
sempre lineare, notiamo che, dal momento in cui la corrente raggiunge il massimo
(cioè il punto di zero della derivata) il “vero” andamento vede tale corrente rimanere
costante.
Calcoliamoci dunque la derivata:
∂I DS
= β (VGS − VT ) − VDS 
∂VDS
Che è zero per: (VGS − VT ) − VDS = 0 ⇒ VGS − VT = VDS
E dunque per corrente pari a:

(

)(V ) (β
(VGS − VT )2  = VG − VT)
1 2
I DS = β  VG − VT G − VT −
 2  2
*
Il valore ottenuto è quello di massimo della corrente; VGS − VT = VDS è invece il valore
di tensione che delimita le due zone del nostro transistor:
- quella lineare: la derivata della corrente è positiva;
- quella di saturazione: la derivata della corrente è nulla.

Purtroppo, ancora una volta il modello non è perfetto: esiste infatti una leggera
crescita di corrente dopo il valore “massimo” (ovvero per valori di tensione maggiore di
*
VDS ). Nuovamente, per far collimare modello e risultati sperimentali, facciamo appello
a considerazioni di tipo semi-empirico e serviamoci di un trucco, introducendo un
parametro λ , che non ha nessun significato fisico… ma fa quadrare i conti!
β
( )
2
I DS = VG − VT (1 + λVDS )
2
Nella situazione di corrente massima (e
quindi costante), con tensione
*
VDS = VGS − VT , il canale di elettroni presente
tra drain e il source ha forma triangolare. A
dire il vero, il canale può assumere diverse
forme: tutto dipende dall’entità di VD .
Maggiore è infatti VD e più grande dovrà
*
essere la VDS per far sì che il canale riesca
“ad arrivare” fino al drain. La corrente che
fluisce nel transistor sarà costante nella
misura in cui  L’ sarà più simile ad L (vedi
figura).

Disegniamo ora un secondo piano delle


caratteristiche (detto “di trasferimento delle
informazioni”):

Nel grafico accanto sono stati scelti due


valori di VDS :
• con una VDS molto bassa mi
ritrovo, per la corrente,
un’equazione lineare (retta verde):
I DS = β (VGS − VT ) VDS
• con VDS molto alta non sarò più in regione lineare, bensì in quella di
*
saturazione (infatti avrò che VDS > VDS ); nel grafico avrò una parabola (linea
rossa), perché l’equazione per la corrente è la seguente
β
I DS = (VGS − VT ) .
2
2
Fra la retta e la parabola troveremo tutte le curve intermedie, ognuna di esse
ricavabile per valori (altrettanto) intermedi di VDS .
Giunti ormai al termine del capitolo, qualche considerazione sulla tensione di bulk
(cioè del substrato): anzitutto, è fondamentale che tale elettrodo sia alla tensione più
bassa del circuito (lo si vede spesso posto a massa); inoltre, per evitare che vada tutto
in corto, la tensione source-bulk VSB deve essere sempre:
• zero;
• maggiore di zero, con l’inconveniente di avere il cosiddetto body-effect (effetto
body), che consiste in una debole dipendenza di VT da VSB (è una dipendenza
“alla 0,5”, cioè alla radice di VSB , e dunque una dipendenza debole).

Esaminiamo meglio questo effetto body, ovvero sulla dipendenza di VT da VSB


simboleggiata dalla funzione
VT = f (VSB )
Vediamo di capire infatti a quanto è pari:
• VTO , ovvero la tensione di soglia quando non ho body-effect e dunque quando la
tensione VSB = 0 ;
Avrò tre contributi:
o il primo derivante dallo zero del sistema: VFB (flat-band);
 NA 
o il secondo, concernente la caduta sul silicio: 2ϕ F = 2VTH ln   ≈ 0,93 [ V ] ,
 ni 
dove:
T
 VTH = k è la tensione termica (utilizzeremo per convenzione il valore
q
di 26 [mV], associato alla temperatura di 300 gradi Kelvin);
• k = 1,38 ⋅10 −23 [J/K] è la costante di Boltzmann;
• q = 1,6 ⋅ 10−19 [C] è la carica dell’elettrone;
• T [K] è la temperatura assoluta.
 N A ≈ 6 ⋅ 1017 è il numero di atomi accettori (drogaggio);
 
 ni ≈ 1010  elettroni 3  è la concentrazione intrinseca di elettroni (e di
 cm 
lacune) nel silicio;
o il terzo, riguardante la caduta sull’ossido: γ 2ϕ F ;
2qε Si N A 1
 in questa relazione γ = ≈ 0,52 [V 2 ] (fattore di effetto-Body);
COX
• q = 1,6 ⋅ 10 −19
[C] è la carica dell’elettrone;
• N A ≈ 6 ⋅ 1017 è il numero di atomi accettori;

ε Si = 1,04 ⋅ 10 −12 C 


2
• è la costante dielettrica del silicio;
 m N 
2

• COX = 8,63 ⋅ 10[F] è la capacità specifica dell’ossido.


−7

Dunque infine otterrò: VTO = V FB + 2ϕ F + γ 2ϕ F = 0,43 [ V ]


  
≈−1 ≈ 0,93 ≈ 0,5
Per variare questo valore, possiamo giocare sul drogaggio (parametro N A ) o
sulla capacità dell’ossido (parametro COX ).
• VT , ovvero la tensione di soglia quando VSB > 0 e c’è quindi body-effect; la
relazione è simile a quella di prima, ma questa volta c’è un termine in più:
 
VT = VTO + γ  2ϕ F + VSB − 2ϕ F  = 0,81 [ V ]
  
≈ 0,93 
 
≈ 0,43 ≈ 0,52  ≈ 0,93 ≈2
NOTA: ovviamente, VT > VTO ; si capisce bene che se VSB = 0 questa equazione diventa
VT = VTO e quindi ci riconduciamo al caso precedente.

Passiamo ora al transistore duale e complementare all’N-MOS, il cosiddetto P-MOS:


esso è realizzato con un substrato di silicio di tipo n (mentre l’N-MOS aveva silicio di
tipo p) che è drogato dunque con atomi donatori, ed utilizza inoltre regioni di source e
drain di tipo p+, quindi drogate con altissime concentrazioni di atomi accettori e molto
ricche di lacune. Il funzionamento del P-MOS è molto simile a quello dell’N-MOS:
questa volta, però, la corrente di canale è dovuta al trasporto di lacune, le quali sono
portatrici di una carica positiva e quindi si spostano dalla regione p+ a potenziale più
alto verso quella a potenziale più basso. Per questo motivo nei P-MOS si definisce
source la regione p+ a potenziale maggiore e drain quella a potenziale minore; inoltre,
la corrente risulta entrante nel terminale di source.
NOTA: Per il P-MOS valgono le considerazioni fatte fin’ora, ma coi segni opposti.
• P-MOS acceso: VGS ≤ VTP , o, con i moduli, VGS ≥ VTP ;
• P-MOS in zona lineare: VDS ≥ VGS − VTP , o, con i moduli, VGS < VGS − VTP ;
o corrente nella zona lineare: I DS = β p (VGS − VTP ) VDS − 1 2 VDS
2 
;
 
• P-MOS in saturazione: VDS < VGS − VTP , o, con i moduli, VGS ≥ VGS − VTP ;
o corrente nella zona di saturazione: I DS = β p (VGS − VTP ) (1 − λVDS ) .
2

Passiamo ora a due versioni “alternative” dei transistor:


- transistore a enhancement (o transistore normally-off): è una variante
“modificata” dei due MOSFET (teoricamente di entrambi i tipi, nella pratica
solo del tipo P); la peculiarità di questo tipo di transistor è una tensione di
soglia maggiore (minore) del normale rispetto all’N-MOS (al P-MOS). Quando
quindi le versioni “originali” dei transistor sono accese, questa variante
potrebbe non esserlo;
- transistore a depletion (o transistore normally-on): è un’altra variante
“modificata” dei due MOSFET (teoricamente di entrambi i tipi, nella pratica
solo del tipo N); la peculiarità di questo tipo di transistor è una tensione di
soglia minore (maggiore) del normale rispetto all’N-MOS (al P-MOS). Quando
quindi le versioni “originali” dei transistor sono spente, questa variante
potrebbe non esserlo.
IV – IL TRANSISTOR (seconda parte)

“Supponiamo di avere qui la I di esse”


(Sempre lui)

Prendiamo un invertitore:

Il nostro scopo è quello di conoscere, in condizioni stazionarie, il valore di VOUT in


corrispondenza dei vari valori di VIN . Tenendo presente che, per Kirchhoff, abbiamo una sola
corrente (che attraversa i due rami ignorando il carico), facciamo un’analisi per:
- il MOSFET N (pull-down):
o ACCESO: VGS > VTN ⇒ VIN > VTN
o TRIODO (cioè regione LINEARE): VDS < VGS − VTN ⇒ VOUT < VIN − VTN
o SATURAZIONE: VDS > VGS − VTN ⇒ VOUT > VIN − VTN
- il MOSFET P (pull-up):
o ACCESO: VGS < VTP ⇒ VIN > VDD + VTP
(perché VGS = VIN − VDD )
o TRIODO (idem): VDS > VGS − VTP ⇒ VOUT > VIN − VTP
(perché VGS = VIN − VDD e VDS = VOUT − VDD )
o SATURAZIONE: VDS < VGS − VTP ⇒ VOUT < VIN − VTP
Andiamo ora a disegnare il relativo grafico:
NOTA: abbiamo
utilizzato i
seguenti dati
numerici:

VDD = 5 V
VTN = −VTP = 1 V
In esso abbiamo graficato le varie disequazioni (le frecce indicano i semipiani da considerare)
corrispondenti al P-MOS e all’N-MOS: come si vede, le aree che abbiamo delimitato si
intersecano fra loro e determinano 5 zone d’interesse:
- ZONA ROSA (1): in questa zona
VOUT = VDD perché l’N-MOS è spento e il P-
MOS è acceso, quindi tutta la tensione della
pila “confluisce” verso l’uscita;
- ZONA VIOLA (2): sono accesi entrambi i
transistor; in questa zona abbiamo che
VGS − VTN è un valore molto piccolo: il
canale N sarà quindi in saturazione, mentre
quello P sarà in regione lineare per via
dell’elevato valore di VGS − VTP ;
- ZONA ARANCIONE (3): sono accesi
entrambi i transistor, ed entrambi sono
saturi;
- ZONA GRIGIA (4): sono accesi entrambi i
transistor; in questa zona abbiamo che
VGS − VTN è un valore molto grande: il
canale N sarà quindi in lineare, mentre quello P sarà in regione di saturazione per via del
basso valore di VGS − VTP ;
- ZONA TURCHESE (5): in questa zona VOUT = 0 visto che l’N-MOS è acceso e il P-MOS è
spento, quindi l’uscita è bassa perché nella rete di pull-up c’è un aperto.

Buttiamoci ora nella vera e propria analisi quantitativa:


- ZONA ROSA (1): abbiamo l’uscita “fissa” al massimo, cioè a VDD ;
- ZONA VIOLA (2): vogliamo determinare la corrente. Abbiamo due modi per esprimerla:
attraverso l’espressione del transistor di tipo N e tramite la formula del transistor P
2
   VGS  
βn   β p    1 2
I DS = VIN − 0 − VTN  =
2   2  VIN − VDD − VTP  (
VOUT − VDD ) − (VOUT − VDD ) 
 2
  
 
 VGS   
 VDS



transistore N transistore P
Quello che notiamo è che il legame fra la tensione d’uscita e la tensione d’ingresso è di tipo
parabolico. Un’altra osservazione riguarda il fatto che non dobbiamo tenere conto dell’effetto
body perché i due canali hanno il bulk collegato con il source; avremmo invece avuto tale body-
effect se i due transistori fossero stati dello stesso tipo.
- ZONA ARANCIONE (3): anche qui possiamo determinare la corrente sfruttando le
equazioni di entrambi i transistori:
βn' Sn 2 p p β' S 2
   
β   β p  
I DS = n  VIN − 0 − VTN  =  VIN − VDD + VTP 
2  
  
 2  

 VGS   VGS

 

transistore N transistore P
Osserviamo tuttavia con sgomento che VOUT non compare in questa catena di relazioni! Ciò
significa che la tensione d’uscita può assumere qualsiasi valore (purché resti sempre
all’interno della zona ARANCIONE, ovvio). La relazione VIN / VOUT che ne ricaviamo è
quindi di tipo “lineare”, rappresentabile da una linea verticale (come si vede in figura).
Dunque, sebbene ci siano una miriade di valori di VOUT che possano andarci a genio, esiste
un solo valore di VIN (unico parametro, dei due che ci interessano, a comparire nell’equazione
di cui sopra) in cui la catena di uguaglianze è verificata e, cioè, il valore di VIN in cui la
parabola della zona VIOLA tocca la retta verticale di questa regione.
La zona ARANCIONE ha la particolarità di contenere al suo interno la soglia logica
dell’invertitore (ed è sempre così!): questo punto, come sappiamo, si trova nell’intersezione fra
la retta verticale x = VIN e la bisettrice. Di conseguenza la nostra VIN , oltre ad essere
soluzione dell’equazione sulla corrente di drain-source, è anche la tensione di logic threshold;
siccome ci interessa sapere quant’è, prendiamo l’equazione di prima e cerchiamo di esplicitare
la tensione che ci interessa
βn βp
2
(VIN − VTN ) =
2
2
(VIN − VDD + VTP )2
βp
VIN − VTN = −
βn
(VIN − VDD + VTP )
(occhio al segno meno!)
Se ora voglio che il secondo termine sia uguale al primo devo porre due condizioni:
βp
- = 1 (così scompare);
βn
- VTN = VTP .
V
Fatte queste sostituzioni, otteniamo che la nostra VIN = VLT = DD 1.
logic threshold 2
NOTA SUI DIMENSIONAMENTI
- ZONA GRIGIA (4): si tratta del caso duale della zona (2). Abbiamo ancora una dipendenza
parabolica della VOUT rispetto alla VIN ; il grafico che ne risulta sarà però simmetrico
rispetto a quello disegnato nella zona VIOLA.
- ZONA TURCHESE (5): in quanto caso duale della zona (1), abbiamo la tensione d’uscita
“fissa” al valore minimo, cioè a 0.

Possiamo altresì graficare le varie zone tramite un piano delle caratteristiche molto
“alternativo”, cioè quello che grafica l’andamento della corrente I DS (stiamo facendo
considerazioni riguardo alla caratteristica statica, quindi non facciamo alcuna osservazione sul
transitorio di salita/discesa) in funzione della tensione VOUT . In esso andremo a disegnare la
curva della corrente dell’N-MOS e anche quella del P-MOS: sarà interessante vedere in quali
punti si intersecano queste due curve, in quanto essi saranno i punti di lavoro del nostro
circuito.

1 Trascurando la corrente di sotto-soglia e le varie perdite, i valori logici alto e basso dell’invertitore CMOS sono
VOH = VDD e VOL = 0 V , indipendentemente dai dimensionamenti dei MOSFET. È invece la tensione di VLT a
dipendere da β = W β ′ = S β ′ e β = W β ′ = S β ′ ; ebbene, generalmente i canali N hanno un β n maggiore del
p p p p n n n n
L L
relativo β p dei canali P: ciò significa che nei MOSFET di tipo N, più conduttivi, gli elettroni sono più veloci. Risulta
quindi facile verificare che, posto βn > β p , allora si ha che βp (e abbiamo violato la condizione posta poco fa!).
<1
βn
Dunque, per far sì che venga rispettata la relazione β p , devo cambiare i parametri tecnologici del MOSFET di
=1
βn
tipo P. Altrimenti mi rassegno e accetto di avere una VLT (di logic threshold) più bassa e una caratteristica statica
βp
non simmetrica (V − VTP ) + VTN
βn DD
VLT =
βp
1+
βn
- ZONA ROSA (1): ho impostato una VIN piuttosto bassa, poco sopra la soglia (il transistore N
si è appena acceso e stiamo cambiando zona). Ne deriva un grafico di questo tipo, con il punto
di lavoro caratterizzato da una forte saturazione di N e da una notevole linearità di P:

Si noti la tensione d’uscita molto vicina a VDD (ma non completamente, a causa della seppur
lieve accensione dell’N-MOS).
- ZONA VIOLA (2): faccio scendere VGS quindi l’N-MOS si avvia vero la linearità e il P-MOS
procede verso la saturazione.

- ZONA ARANCIONE (3): ho fatto scendere ancor di più la VGS .


In questa zona abbiamo un intero range possibile di valori di VOUT .

- ZONA GRIGIA (4): caso duale della zona (2).


- ZONA TURCHESE (5): caso duale della zona (1).
V - DINAMICHE

Fin’ora abbiamo parlato di “transizioni” di ingresso e di uscita, consistenti nel


passaggio di una tensione dal valore alto a quello basso e viceversa. Consideriamo ora
alcuni casi notevoli di studio:
- prendiamo il nostro invertitore fatto di due MOS (P-MOS nella rete di pull-up
e N-MOS in quella di pull-down) e supponiamo di passare, in ingresso ( VIN ),
dal valore basso al valore alto. Tale passaggio è da considerarsi istantaneo;
- rimanendo in questo caso di lavoro esaminiamo ora l’uscita: quel che notiamo è
che la commutazione (questa volta dal valore alto a quello basso – caso di
“scarica”) non è affatto istantanea: il valore della tensione, infatti, decade in
maniera lineare;
- prendiamo infine il caso di scarica di un condensatore (che incarna tutta la
circuiteria che sta all’uscita dell’invertitore) attraverso una resistenza collegata
a massa ( rete di pull-down). Il processo di passaggio alto  basso non avrà
andamento lineare ma asintotico verso lo zero.
Capiamo insomma che la carica/scarica è un processo che dipende dalla situazione in
cui ci poniamo e da alcune condizioni “al contorno”. Rimanendo nell’ambito dello studio
del transistor MOS, cerchiamo di capire quali siano i casi più interessanti (teniamo
presente che in un invertitore con P-MOS nella rete di pull-up e N-MOS in quella di
pull-down la scarica tocca sempre all’N-MOS e la carica sempre al P-MOS)

Scarica attraverso N-MOS a VGS costante

Abbiamo la situazione in figura: si tenga


presente che l’ipotesi di VGS costante è
importantissima a tal punto che, se viene a
mancare, vanifica tutta la trattazione che
stiamo per fare.
Siccome il processo è, a tutti gli effetti, di
scarica (precisamente di scarica di un
condensatore) possiamo dire che la VDS , dal
valore iniziale alto, scenderà fino a quello basso “tirandosi” dietro il valore della
corrente I. A tal proposito ricordiamo che, in base al valore della tensione VDS , il
nostro transistor può trovarsi in regione lineare o in saturazione (quest’ultima
osservazione si evince in maniera chiara dal grafico a fianco): dovremo quindi
analizzare i due casi singolarmente visto che il
comportamento nella prima regione differisce da
quello della seconda. Iniziamo con la saturazione: ci
ricordiamo che in tal caso il valore della corrente è
βn' Sn 2
  
β  
I DS = n  VIN − 0 − VTN 
2  
 

 VGS
 
transistore N
dVDS β
(
VGS − VTN )
2
Allora scriviamo che: −CL = I DS = n
dt 2  
non dipendono dal tempo
Ora portiamo a destra il termine CL e integriamo da entrambe le parti1 dall’istante
iniziale del transitorio [valore della tensione  VD S iniziale ] a quello finale che ci
interessa2 [valore della tensione  VDSfinale ]: quel che otteniamo è
βn
(VGS − VTN )
⋅ τ saturazione
2
VD S iniziale − VDSfinale =
2CL
NOTA: τ saturazione è il tempo che impieghiamo per attraversare completamente la
regione di saturazione. Facendo la formula inversa ci accorgiamo che esso è pari a
2C V − VDSfinale
τ saturazione = L D S iniziale
βn (VGS − VTN )
2

Passiamo ora alla regione di triodo [ VDS < VGS − VT ]; qui le cose si fanno un pelo più
difficili perché, mentre in saturazione la corrente rimaneva costante, qui essa cala
piuttosto rapidamente. Andiamo a pescare quanto vale la corrente in questa situazione
dal capitolo precedente e scriviamo infine che:
 
dVDS β
−CL = I DS = n 2 (VGS − VTN ) VDS − VDS
2 

dt 2    
 Vα 
Applichiamo ancora la separazione delle variabili:
CL β
− dVDS = n dt
Vα VDS − VDS 
2
2
E ora utilizziamo i fratti semplici!
A B A (Vα − VDS ) + BVDS Vα A + VDS ( B − A )
+ = =
VDS Vα − VDS VDS (Vα − VDS ) VDS (Vα − VDS )
B − A = 0 1
Da cui il sistema:  ⇒ A=B=
 AVα = −1 Vα
Dunque abbiamo che:
1  dVDS dVDS  βn
−  + = dt
Vα  VDS Vα − VDS  2CL
Ora integriamo:
βn  VDSfinale
1 V − VDSfinale 
τ triodo = −ln − ln α =
2CL Vα
 VDSiniziale Vα − VDSiniziale 
1  VDSfinale 2 (VGS − VTN ) − VDSfinale 
=− ln − ln 
2 (VGS − VTN )  VDSiniziale 2 (VGS − VTN ) − VDSiniziale 
Dunque il tempo in cui il transistore sarà in regione triodo è (applicate le proprietà dei
logaritmi):
CL V 2 (VGS − VTN ) − VDSfinale 
τ triodo = ln  DSiniziale 
(VGS − VTN ) βn  VDSfinale 2 (VGS − VTN ) − VDSiniziale 

1 Metodo di separazione delle variabili


2 Possiamo scegliere come istante finale uno qualsiasi all’interno della regione di saturazione, così come
possiamo scegliere esattamente il valore limite in cui si passa dalla regione di saturazione (quella che
stiamo esaminando) a quella di triodo (in cui dovremo diversificare la trattazione). Poco più avanti
tratteremo meglio questo aspetto.
OSSERVAZIONI: minore è la VDSfinale e maggiore sarà il tempo in cui il resistore si
troverà in regione triodo.

Queste formule valgono sempre:


l’unico vincolo è che la tensione
finale sia inferiore di quella iniziale
(altrimenti non si avrebbe una
scarica). VD S iniziale e VDSfinale possono
quindi essere “qualsiasi” (vedi nota
2), se entrambe all’interno della
regione di saturazione (nel primo
caso) o della zona triodo (nel
secondo caso): possiamo dunque calcolare una tempistica “parziale”, badando sempre a
rispettare in maniera rigorosa le ipotesi e a utilizzare la formula giusta per la zona
giusta. Se però vogliamo calcolare un transitorio completo possiamo ora sostituire a
VD S iniziale e VDSfinale i seguenti valori:
SATURAZIONE (completa): inizia a VDD finisce a VDD − VTN
TRIODO (completo): inizia a VDD − VTN finisce a VOL max
Si ha inoltre che: VGS = VDD
Sostituendo, le nostre relazioni diventano:
V D S iniziale V DS finale

 
2C L V DD − V DD − VTN 2C L VTN
τ saturazione = =
βn (VGS − VTN ) βn 
2 2

 V DD − VTN 
 
 =VGS 
  VGS

V DS finale


 
V DS iniziale
2  V DD − VTN  − VOL max 
2C L V − V   
τ triodo = ln  DD TN   =
   VOL max   
 V DD − VTN  β n   2  V − V  − V − V 
  
V DS finale
 DD TN
 DD
 TN
 
 =VGS    =VGS  V DS iniziale 
2CL  2 (VDD − VTN ) − VOL max 
= ln  
(VDD − VTN ) βn  VOL max 

Caso duale: carica attraverso P-MOS a VGS costante

Le considerazioni sono esattamente analoghe a quelle del


caso precedente: tuttavia ci troviamo in un caso duale, in
cui carichiamo una capacità CL utilizzando un P-MOS (che,
ricordiamo, ha drain e source invertiti rispetto al caso N).
Anche qui dovremo differenziare il caso di P-MOS in
saturazione e in triodo: riguardo al primo caso
[ VDS < VGS − VTP ] avremo che
β p' S p

βp dVDS βp
(VGS − VTP ) ∫ 2C (V − VTP ) dt = ∫ dVDS
2 2
I DS = = CL  GS
2

 dt L
transistore P

βp
(VGS − VTP ) τ saturazione = VDSfinale − VD S iniziale
2

2CL
2CL VDSfinale − VD S iniziale
τ saturazione =
βp (VGS − VTP )
2

Procediamo poi con la regione triodo, similmente a come abbiamo fatto prima…
dVDS β p
CL = 2 (VGS − VTP ) VDS − VDS
2

dt 2
dVDS β
= p dt (separazione variabili)
  2CL
 2 (V − V ) V − V 2 
  GS
 TP
 DS DS

 V β 
A B A (Vβ − VDS ) + BVDS AVβ + VDS ( B − A )
+ = = (fratti semplici)
VDS (Vβ − VDS ) VDS (Vβ − VDS ) VDS (Vβ − VDS )
B = A
B − A = 0 
 ⇒  1
 AVβ = −1 A=−
 Vβ

1  1 1  1  1 1  βp
−  +  dVDS = −  +  dVDS = dt
Vβ  VDS Vβ − VDS  2 (VGS − VTP )  VDS 2 (VGS − VTP ) − VDS  2CL
1 1 1 β
−∫ dVDS − ∫ dVDS = ∫ p dt … etc. …
2 (VGS − VTP ) VDS 2 (VGS − VTP ) − VDS 2CL
… fino a giungere al seguente risultato:
2CL V 2 (VGS − VTP ) − VDSiniziale 
τ triodo = ln  DSfinale 
(VGS − VTP ) β p  VDSiniziale 2 (VGS − VTP ) − VDSfinale 
NOTA: anche in questo caso, queste formule sono da considerarsi generali e sempre
valevoli, a patto che la tensione iniziale sia inferiore di quella finale (altrimenti non si
avrebbe carica). Possiamo, come prima, effettuare una misura parziale ( VD S iniziale e
VDSfinale “qualsiasi” ed entrambe o all’interno della regione di saturazione o in quella
lineare), oppure complessiva di tutta la regione. Ecco i valori:
SATURAZIONE (completa): inizia a −VDD finisce a −VDD − VTP
TRIODO (completo): inizia a −VDD − VTP finisce a VOH min − VDD
Si ha inoltre che: VGS = −VDD
Sostituendo, le nostre relazioni diventano:
VDSfinale VD S iniziale

 
 
2CL −VDD − VTP − ( −VDD ) 2CL −VTP
τ saturazione = =
βp  
2
β p (VDD + VTP )2
 −VDD − VTP 
 
 =VGS 
 =VGS


VDSiniziale
  

 VDSfinale
2 −VDD − VTP − ( −VDD − VTP ) 
 
 
 
2CL  VOH min − VDD  
 
τ triodo = ln
 
2
 −V − V   
2 −VDD − VTP − (VOH min − VDD ) 
DD TP
 −VDD − VTP  β p  
VDSiniziale
 
 =V
     
 GS    =VGS  VDSfinale 
2CL  −VDD + VOH min 
= ln  
(VDD + VTP ) β p  −VDD − 2VTP − VOH min 
2

Tempo di propagazione

Considerando i due casi illustrati fin’ora, poniamo che, per ipotesi:


 VTP = VTN (dunque, per comodità, chiameremo questa quantità VT , in
maniera univoca);
 βn = β p ;
 VDD − VOH min = VOL max = 0,1 ⋅ VDD (transitori bloccati al 90%).
Il tempo di propagazione è definito come:
t +t
t p = salita discesa
2
In pratica è la media fra il tempo in cui il P-MOS carica la capacità ( tsalita ) e il tempo in
cui tale capacità si scarica verso massa ( tdiscesa ). Calcoliamo il primo tempo con i dati
trovati poco fa:
 
   
= 0,1 VDD

  2 (VDD + VT ) − (VDD − VOH min )  


2CL  −VT 1
 
tsalita = ttriodo + tsaturazione = + ln
 β p (VDD + VT ) VDD + VT 2  ( V − V ) 
P − MOS  DD OH min
     
 = 0,1 VDD 
Allo stesso modo calcoliamo il secondo:
  = 0,1 VDD 


2CL 
 VT 1  2 (VDD − VT ) − VOL max  
tdiscesa = ttriodo + tsaturazione =  + ln  
 βn (VDD + VT ) VDD − VT 2  VOL max 
N − MOS 
  

 = 0,1 VDD

Poi li sommiamo insieme:


t +t CL  1 1   VT 1  2 (VDD − VT ) − 0,1VDD  
t p = salita discesa =  −   + ln  
2 VDD − VT  β n β p   VDD − VT 2  0,1VDD  
V
Introduciamo ora il parametro convenzionale ν TDD = T (e con qualche trucchetto lo
VDD
facciamo comparire in qua e in là):  2(VDD −VT ) −0,1VDD

  
  
  V  
 2VDD 1 − T
 − 0,1  
 1 
1 1 1  1 1   VDD  
t p = CL  −   + ln  
VDD VT β n β p  VT 2  0,1VDD
1−   1− 
VDD  VDD  
 
1
  

VT

 
VDD −VT 
 VDD −VT   
1  1 1  1  1 1  2 (1 − ν TDD ) − 0,1  
t p = CL  −  ⋅  + ln  
VDD  β n β p  ν
1 − ν TDD 2 
TDD 

0,1
 
F (ν TDD )

Riuniamo in un'unica entità F (ν TDD ) l’elefantiaca equazione segnata in figura in modo


da rendere più agile la scrittura:
F (ν TDD )  1 1 
t p = CL  − 
VDD  β n β p 
V  V 
NOTA: con questa notazione “comoda”, in cui compare F (ν TDD ) = F  TN  = F  TP 
 VDD   VDD 
( in questo caso) possiamo esprimere i tempi di salita e di discesa anche
“singolarmente”. Si ottiene:
2CL V 
tsalita = ttriodo + tsaturazione = F  TP 
 β pVDD
P − MOS  VDD 
2CL V 
tsalita = ttriodo + tsaturazione = F  TN 
 β pVDD  VDD 
N − MOS

Il fattore davanti alla funzione F è un numero e lo chiameremo:


∆V CLVDD 2CL
τ 0 = CL = =
I β 2 β pVDD
VDD
2

in prima approssimazione

Possiamo quindi scrivere che il tempo di propagazione è ricavabile con una formula del
tipo:
tp = τ 0 F
VI – LOGICHE A RAPPORTO

Le logiche a rapporto, più che alle logiche MOS complementari (come quella
dell’invertitore), somigliano al caro vecchio partitore resistivo visto nel capitolo I.
Prendiamo infatti tale componente, con la resistenza di load e quella di drive che
chiameremo rispettivamente RL ed RD .
Supponiamo di volerci porre in condizione di uscita bassa e di voler quindi
dimensionare le resistenze affinché entrino fra loro in competizione (altrimenti – con
resistenze fra loro simili – come farei ad avere un uscita alta o bassa?). Ebbene, posso
incorrere in due problemi:
- se il drive fosse troppo piccolo allora avrei un problema di potenza (ne dissipo
tantissima sulla resistenza RD : è l’ennesima prova che è molto pericoloso avere
un percorso conduttivo dalla tensione VDD a massa);
- se il drive fosse troppo grande mi ritroverei un problema di dinamica (logica
molto molto lenta e uscita presumibilmente sporca).
Ecco dunque un primo esempio: se dimensiono RL ed RD in modo che siano fra loro in
contrasto, eventualmente aumentando o diminuendo RL ed RD in maniera che
rimanga invariato il loro rapporto, si ha una logica a rapporto.

Tutto questo accade contrariamente a ciò che avviene nella logica fully C-MOS, dove si
vuole avere simmetria fra load e drive per garantire una logic threshold a VDD 2 :
β p = βn ⇒ S p β p′ = Sn βn′
Non è però un vincolo così stringente come lo è quello appena esposto, cioè quello che
riguarda le logiche a rapporto: infatti nelle logiche C-MOS posso, agendo sui fattori di
forma, cambiare eventualmente il rapporto tra la dimensione del drive e quella del
load e – quindi – sono in grado di riconfigurare la rete N-MOS e/o quella P-MOS. E
posso farlo per una ragione qualsiasi: voglio avere un tempo di scarica più veloce?
Modifico il dimensionamento della rete di pull-down, mi servo di un fattore di forma
Sn più grande e la faccio più conduttiva. Ciò non ha però conseguenze dal punto di
vista della potenza dissipata, né dal punto di vista della chiarezza dell’uscita:
varieranno invece le correnti visto che sono funzioni del rapporto fra S p ed Sn e
cambieranno i tempi di salita e di discesa (che hanno β p e β n all’interno della loro
formulazione). Basterà quindi un vincolo solo (ad esempio sul ritardo: tsalita + tdiscesa )
per definire il mio invertitore e il rapporto fra S p ed Sn : indipendentemente da esso, il
transistore funzionerà benissimo e ciò è possibile grazie alla complementarietà dei
transistor, che sono accesi in maniera mutuamente esclusiva e che non dissipano
potenza statica, comportandosi a volte come circuito aperto (non passa corrente) e a
volte come cortocircuito.

Nelle logiche a rapporto questo non accade, perché il rapporto fra


l’entità del load e quella del drive diventa davvero importante:
infatti, siccome non c’è più alternanza fra pull-up e pull-down (la rete
di pull-up non è fatta ad interruttore), tale rapporto definisce il
valore di tensione nominale basso VOL e fissa subito un vincolo
immediato (1° VINCOLO).
Se voglio infatti che VOL ≤ VOL , dovrà accadere che
RL
>K
RD
Tale relazione diventa un rapporto fra fattori di forma (si ricordi: fattore di forma più
grande  resistenza minore):
RL S
>K⇒K > L
RD SD
Quindi, se poniamo il fattore di forma del load pari ad 1 e potendo scegliere (per
arrotondare: tipicamente i fattori di forma sono sempre numeri naturali arrotondati)
fra il valore 4 e il valore 5 per il driver, cosa scegliamo? Ovviamente 5, perché in
questo modo il valore di K in
S
K> L
SD
diventa ancora più stabilmente maggiore del rapporto SL/SD.
Ora prendiamo un invertitore in cui, come load, poniamo una resistenza R e come
driver un invertitore cui giunge al gate una tensione VIN (come in figura). In questo
caso, come in tutte le logiche a rapporto, vi è competizione fra la pull-up e la pull-
down. La corrente che scorrerà nella resistenza R [ conduttanza G = 1/R] sarà:
VDD − V0  1 
= SD β n′ (VDD − VTN ) V0 − V02 
R
  
2
N-MOS in regione lineare

1 2
Semplifichiamo ignorando, per ora, il termine VD :
2
VDD − V0 S
= SD Rβn′ (VDD − VTN ) = D β n′ (VDD − VTN )
V0 G
E se invece della resistenza ci fosse un transistor?
Si avrebbe:
βL
(VGS − VT )
2
I SC =
2
Abbiamo dunque una specifica sul fattore β L = SL β L′ della parte pull-up. Come si vede
e si è già sottolineato, quest’ultimo è il punto più delicato da affrontare.

In questa relazione si vedono bene le insidie nascoste nella progettazione di una logica
a rapporto:
- se voglio calare i valori possibili dell’uscita VOUT allora devo aumentare il
fattore di forma SD del driver (vedi tutto il ragionamento fatto prima!);
- (2° VINCOLO) una resistenza di carico R piuttosto grande rallenta molto la
dinamica: il condensatore da caricare (il quale rappresenta l’uscita) deve
ricevere, per una pari tensione, una quantità di carica Q ∝ RC . Se R è alta,
allora occorrerà molto più tempo per caricare e la logica sarà molto lenta. Se
tuttavia scelgo una piccola resistenza, la potenza dissipata statica in presenza di
V − VOL
uscita bassa [ VOUT = VOL ], che è pari a PdST = VDD I SC = VDD DD , aumenta
R
(NOTA: nella tecnologia CMOS il consumo di potenza statico è nominalmente
nullo; qui siamo in un caso evidentemente diverso).
La soluzione ottimale per evitare i
problemi di dinamica sarebbe quella
rendere la corrente I SC sempre
costante fino alla carica completa
dell’uscita (vedi figura). Dobbiamo
ovverosia fare in modo che la capacità
si carchi nel più breve tempo possibile.

Studiamo alcune possibili soluzioni.

Quella più semplice è di agire sul gate del load. Dove lo colleghiamo?
- A massa? No, perché il transistore sarebbe sempre spento.
- Alla tensione d’uscita? No, perché il transistore non farebbe proprio in tempo
ad accendersi (o, se la tensione d’uscita fosse già alta, non si spegnerebbe mai).
- Al drain ( VDD ) [v. figura]? Evidentemente sì, visto che è
l’unica soluzione possibile. Sicuramente, in questo caso è
acceso: ma è il lineare o in saturazione? Beh, facciamo
qualche calcolo
IPOTESI: saturazione  VGS − VT < VDS
  
VDD −VOUT soglia VDD −VOUT

−VT < 0
(sempre verificata!)
Quindi sicuramente siamo in saturazione, sia in
condizioni statiche che in condizioni dinamiche.
Ebbene, questa implementazione è pessima, perché il
fatto che sia in saturazione non è una garanzia che la
corrente sia costante (non è affatto costante la VGS )!
cala con la carica

2
  VGS ↓ 
β β  
 
Infatti, in saturazione si ha: I = L (VGS − VT ) = L  VDD − VOUT ↑ − VT 
2

2 2   

cresce con
 la carica 
Quindi la situazione è la seguente:
La pull-up riesce a caricare il condensatore C solo dopo un tempo infinito e, anzi, il
condensatore si spegne a VDD − VT , non raggiungendo neanche completamente il valore
logico VDD .
Quanto vale la soglia logica del transistore? Tanto per cambiare, quest’ultimo soffre
pesantemente di effetto Body, quindi dobbiamo tenerne conto:
VOH = VDD − VT

 (
VOH = VDD − VTO + γ 2ϕ F + VSB − 2ϕ F 
 
)
considerando l'effetto Body

Insomma, quanti inconvenienti!


Iniziamo con una bella carrellata di miglioramenti:
guardiamo, ad esempio, il dispositivo affianco (source
collegato al gate, carico a svuotamento).
• Anzitutto, questo transistore, durante il
transitorio, funziona a VGS costante (e pari a 0),
mentre nel caso precedente tale tensione calava
quadraticamente. Di conseguenza, il transistore
(depletion) è sempre acceso durante la carica (e
non si spegne piano piano come l’altro).
• Ciò significa che siccome la corrente di
saturazione è funzione di VGS :

VGS costante ⇔ I costante


• In che regione lavora questo transistore? Questa volta la situazione è un po’
più variegata.
IPOTESI: saturazione  VGS − VT < VDS
  
=0 perché abbiamo VDD −VOUT
un depletion

VT < VDD − VOUT


La situazione dipenderà ovviamente da VT: comunque sia, ad inizio transitorio
(con VOUT ancora piccolo), avremo che la relazione soprascritta sarà verificata e
quindi saremo in saturazione. Verso la fine del transitorio passeremo invece in
lineare, con
VT > VDD − VOUT
La corrente, da costante che era, inizierà a calare. Tuttavia avremo già percorso
un bel po’ di tempo a corrente costante (saturazione) e questo è un vantaggio
non da poco! Basta guardare il grafico per accorgersene.
NOTA: quando siamo in saturazione la corrente è costante e pari a
βL βL
(VGS − VT )
2 2
I= = VT
2 2
Quando siamo in lineare, la corrente cala secondo la relazione
β ′S  1 2
I = n n 2 (VGS − VTN ) VDS − VDS
2
 = βn′ Sn ( −VTN )(VDD − VOUT ) − (VDD − VOUT ) 
2  2 

La nuova implementazione funziona discretamente bene, ma possiamo migliorarla


ancora.
Potrei pensare di collegare il gate
col drain, per partire con più
corrente: effettivamente, all’istante
iniziale del transitorio, si avrebbe
una I certamente superiore:
tuttavia, essa calerebbe linearmente
(e in maniera dunque rapidissima!)
e tutto il vantaggio andrebbe
sfumato.
Inoltre, non abbiamo considerato il
fatto che il transistor a depletion,
durante il transitorio, soffre sempre
di più di effetto Body e si “spegne

leggermente”. Dunque, nemmeno in saturazione la


corrente è davvero costante, ma cala di poco col tempo.

Un’implementazione
molto interessante
diventa allora la
seguente (a pseudo
N-MOS):
• Questo transistore ha VGS = 0 − VDD
costante, quindi la sua corrente in regione
di saturazione sarà certamente costante.
• La VGS = −VDD è sicuramente sempre
minore della soglia, dunque il transistore
non si spegne mai.
• Non c’è effetto Body, perché il bulk è
collegato al source.
• Partiamo in saturazione, perché:
VGS − VT > VDS ⇔ VGS + VT < VDS
VGS + VT < VDS ⇔ −VDD + VT < VOUT − VDD
VT < VOUT Sempre verificata!!
• Finiamo in lineare, come accadeva per il carico a depletion, ma, ancora una
volta, dopo un bel tratto dove la corrente era costante (e veramente costante,
visto che non c’è l’effetto Body).
Dunque questa è un’implementazione molto buona, soprattutto nei confronti della
prima in assoluto che abbiamo studiato!

NOTA: nei casi fin’ora studiati abbiamo considerato il solo transitorio di carica. Nelle
logiche a rapporto, per definizione, i due transitori non potranno MAI essere uguali,
perché sono costretto a fare il load parecchio più resistivo del driver. Il tempo di
scarica, dunque, non è mai un fattore di demerito, perché esso – per costruzione – sarà
sempre più breve (*)!

Studiamo infatti le prestazioni dinamiche e la potenza dissipata:


- del depletion:
- tempo in cui il transistor sta in zona di saturazione:
2C V − VDSfinale 2CL VDD − VOL + VT
τ saturazione = L DSiniziale =
β (VGS − VT ) β
2 2
VT
- tempo di triodo (con il solito metodo):
 
  =0
 
dVDS βn  2 
−CL = I DS = 2  VGS + VT  VDS − VDS
dt 2    
   
 Vα 
etc…
2CL 1  2V − 0,1VDD 
ttriodo = ln  T 
βn 2 VT  0,1VDD 
β 2
- potenza dissipata statica: P = VDD VT
2
- dello pseudo N-MOS:
2CL 1  VT 
- tempo di salita: τ salita = F 
VDD β p  VDD 
dVOUT
- tempo di discesa: τ discesa = −CL = β n (VDD − VTN ) − I Pmos
2

dt
β
(VDD − VTP )
2
- potenza dissipata statica: P = VDD
2
- siccome β p > β n di almeno 5-6 volte, si capisce bene che il tempo di salita è molto
superiore a quello di discesa (*). Possiamo quindi considerarlo senza indugio come caso
peggiore. D’altronde, non sarebbe possibile creare una logica a rapporto se la rete di
pull-down non fosse così conduttiva e non contrastasse, se attiva, quella di pull-up.

Caratteristiche del carico ideale

Prendiamo, come esempio di partenza, un generatore di corrente [corrente erogata =


I ST ] il quale deve caricare una capacità CL .
Il tempo di salita sarà pari a:
C (V − VOL )
τ R = L DD
I ST
Se moltiplichiamo ambo i lati per la potenza totale
PST = VDD I ST
otteniamo
τ R PST = CL (VDD − VOL ) VDD ≃ CLVDD
2

Quello ottenuto è un prodotto ritardo-consumo (si misura in [J] ed equivale all’energia


spesa per effettuare una computazione) e si dimostra che non può essere minore così,
con una logica a rapporto. È sufficiente guardare il seguente grafico per accorgersene:

In esso si dà l’espressione della tensione d’uscita in funzione del tempo: si noti che è
importante che il transitorio duri il meno possibile, e – in pratica – che l’area sotto le
varie curve sia la più piccola possibile. Ovviamente il caso migliore (linea verde) è
quello del generatore di corrente in grado di fornire corrente costante: fra tutti, infatti,
è quello che per primo arriva alla corrente VDD . Gli altri ci mettono un po’ di più
perché purtroppo, con l’avanzare del transitorio, cala la corrente che va verso la
capacità; sappiamo che il caso di pseudo N-MOS è comunque abbastanza vantaggioso
(equivale a quello ideale durante tutta la parte in cui siamo in saturazione, poi
peggiora in lineare) e, infatti, è il migliore dopo quello del generatore. Infine, c’è la
soluzione con carico resistivo, che non è molto efficiente.
VII - LOGICHE FULLY C-MOS (Complementary MOS)

Le logiche C-MOS nascono da un’estensione del caso del semplice invertitore C-MOS;
esso infatti è costituito da:
- una rete di pull-up fatta da un transistore P-MOS;
- una rete di pull-down fatta da un transistore N-MOS;
- un’uscita che sta fra la rete di pull-up e quella di pull down.

L’estensione consiste nell’utilizzare reti con più transistor, al fine di creare funzioni
logiche sfruttando il principio dell’invertitore. Vedremo, però, che i transistor non
possono essere messi “a caso”: affinché tutto proceda bene è necessario che si seguano
alcune fondamentali regole.

Anzitutto capiamo come poter implementare una funzione logica. Supponiamo di


essere interessati a creare una OR:
A B A+B
0 0 0
0 1 1
1 0 1
1 1 1
Come possiamo realizzarla con dei transistor? Esattamente così:

Effettivamente, è sufficiente che uno dei due transistor sia in conduzione per generare
un’uscita alta. Se invece entrambi i transistor sono interdetti, non passa corrente e
non si alza l’uscita.
Sfruttando questo principio di “composizione” dei transistor, in grado di generare
funzioni logiche se disposti opportunamente in serie/parallelo, possiamo creare quella
che viene chiamata logica fully C-MOS. Ecco le caratteristiche di questo tipo di
implementazione:
- la rete di pull-up è formata soltanto da transistori P-MOS e quella di pull-
down soltanto da transistori N-MOS;
- quando la pull-up conduce la pull-down è spenta (accade anche il viceversa);
- gli ingressi delle porte logiche (che sono le variabili binarie della funzione
logica che ci interessa) pilotano esclusivamente i terminali di gate dei transistori
MOS;
- le funzioni logiche sono realizzate considerando le reti di pull-up e di pull-
down come semplici reti di interruttori e tenendo presente che:
- i transistori N-MOS sono attivi quando l’ingresso che li pilota è un “1”
logico, mentre i P-MOS sono attivi quando l’ingresso che li pilota è uno “0”
logico (quindi questi ultimi sono interruttori complementari rispetto ai
primi);
- la connessione in serie di due interruttori pilotati da A e B (variabili
binarie) è attiva quando entrambi gli interruttori sono attivi (funzione
AND), mentre la connessione in parallelo di due interruttori è attiva
quando almeno uno degli interruttori è attivo (funzione OR, vedi
l’esempio sopra).

Qui a fianco si riporta lo schema sintetico di


una logica fully C-MOS: qui si capisce ancora
meglio perché, come dicevamo poco fa, se la
PUN (pull-up network) conduce, la PDN (pull-
down network) è interdetta è viceversa.
Entrambe le due reti ricevono gli stessi ingressi
(IN): tuttavia PDN e PUN sono duali (fanno
corrispondere ad un parallelo una serie, ad una
serie un parallelo, e usano l’una gli N-MOS e
l’altra i P-MOS), dunque
- se la PUN è accesa, la OUT si carica
( va ad alto);
- se la PDN è accesa, la OUT si scarica
( va a basso).

NOTA: la dualità è condizione sufficiente, ma non necessaria; esistono reti C-MOS non
duali che però funzionano benissimo.

Ecco, nell’immagine a destra, un esempio più concreto e


meno generico: la funzione implementata da questo
circuito è

De Morgan
OUT = +
A B = A⋅B

guardando guardando
la PDN la PUN

(funzione NOR)
Si noti che è molto più facile ricavare la funzione logica
del circuito osservando la PDN, per poi trovare quella
della rete duale utilizzando le leggi di De Morgan.
Effettivamente, la ricerca delle due reti è una vera e
propria esplicitazione di tale legge.

Gli esempi possono essere tantissimi: il modo di agire è però sempre lo stesso, sia in
fase di analisi che in quella di sintesi.
Il fatto che si utilizzino delle funzioni logiche ha un vantaggio “nascosto” (oltre a quello
della facile computabilità): un progettista scaltro può trovare delle semplificazioni del
circuiti che sacrificano la dualità per ridurre il numero dei transistori e delle
connessioni presenti.

Quel che abbiamo detto fin’ora è importante, ma non è sufficiente in sede di analisi:
come facciamo, infatti, a calcolare i tempi di salita, i tempi di discesa, le potenze
dissipate e tutti gli altri parametri che trovavamo ai bei tempi in cui l’invertitore era
semplicissimo e fatto di soli due transistor? Qui i transistor sono molti!
Ci viene però in soccorso un metodo che come approccio ricorda quello del calcolo di
resistenze equivalenti in serie e parallelo. Non solo con componenti elementari dei
circuiti a parametri distribuiti (induttori, condensatori, resistenze) si possono trovare
le controparti equivalenti: il metodo si può attuare anche con i transistori MOS (sia P
che N, ovviamente). Vediamo come.

Parallelo di transistori

Due transistor sono in parallelo quando sono connessi fra loro tutti i terminali
omologhi dei dispositivi (gate con gate, drain con drain, etc…). In tal caso, la corrente
complessiva I DS del parallelo è la somma della corrente dei due transistori:
I DS = I DS1 + I DS 2
 1 2   1 2 
I DS = S1 β ′ (VGS1 − VT ) VDS1 − VDS 1  + S2 β (VGS 2 − VT ) VDS 2 −
′ VDS 2 
  
2
   
2

I DS 1 , regione triodo I DS 2 , regione triodo

Tuttavia, siccome VGS1 = VGS 2 = VGS (entrambi sono accesi e quindi hanno ingressi
uguali, inoltre condividono il source) e VDS1 = VDS 2 = VDS :
 1 2 
I DS = ( S1 + S2 ) β ′ (VGS − VT ) VDS − VDS 
   2 
fattore di forma
del transistore
equivalente

Dunque la corrente dei due MOSFET in parallelo è pari a quella di un unico


transistore equivalente con fattore di forma pari alla somma dei due.

Serie di transistori

Lo schema è un più complicato e, come vedremo, è


necessario semplificare lo scenario: infatti questa volta
non è immediatamente evidente che i due MOSFET
lavorino nella stessa regione, né possiamo dire che le
tensioni VGS e VDS siano uguali.
Non vogliamo però complicare troppo il problema,
quindi introduciamo le seguenti semplificazioni:
- non consideriamo l’effetto Body;
- supponiamo entrambi i MOSFET in regione
lineare.
Scomponiamo inoltre:
- VGS = VGB − VSB (tanto non cambia niente);
- VDS = VDB − VSB (idem).
Cerchiamo l’espressione della corrente per un MOSFET
generico, poi differenzieremo per il transistor superiore
e per quello inferiore.
 V2 
I DS = S β ′ (VGS − VT ) VDS − DS 
 2
Operiamo ora le semplificazioni fatte per ipotesi:
 (V − VSB ) 
2

I DS = S β ′ [VGB − VSB − VT ] (VDB − VSB ) − DB 


 2 
 2
− VSB
2
− 2VDBVSB 
( ) (
VDB
I DS = S β ′  VGBVDB − VSBVDB − VT VDB + −VGBVSB + VSB + VT VSB −
2

2
) 
 
 V2 V2 
I DS = S β ′ VGBVDB − VT VDB − VGBVSB + VT VSB + SB − DB 
 2 2 
Ora dividiamo la parte in cui compare VDB da quella in cui compare VSB e
distribuiamo il coefficiente β ′ :
 
   VSB  
 VDB 
2 2

I DS = S β  VGBVDB − VT VDB − ′
 + β  −VGBVSB + VT VSB + 
  2   2 
  
g (VGB ,VDB )
  
g (VGB ,VSB )
 
Per comodità di notazione esprimiamo le quantità indicate come due funzioni g, visto
che la forma è lo stessa e che l’unica cosa a cambiare è la presenza/assenza di VDB o di
VSB (NOTA: attenzione ai segni!):
I DS = S  g (VGB ,VDB ) − g (VGB ,VSB ) 
Ora differenziamo (riportiamo la figura della serie, come
memorandum):
- transistore “di sopra”:
  VXB

I MD = S1 g (VGB ,VDB ) − g VGB ,VSB  

 
  
  
- transistore “di sotto:
  VXB
 
I MS = S2  g  VGB ,VDB  − g (VGB ,VSB ) 

   
   
Ora dobbiamo trovare qualcosa da “imporre” (ed è evidente che l’unica relazione certa
che possiamo fissare e quella dell’equivalenza delle correnti che scorrono nella serie; la
corrente che fluisce in MD non può che andare completamente a finire in MS), per fare
i nostri calcoli e vedere di esprimere, come abbiamo fato nel caso del parallelo
I= {
...qualcosa...}

 g (VGB ,VDB ) − g (VGB ,VSB ) 
fattore di forma del transistor
equivalente, visto che è coefficiente
della quantità  g (VGB ,VDB ) − g (VGB ,VSB ) 
uguale per entrambi i MOSFET

Procediamo:
I MD = I MS  I MD − I MS = 0
S1  g (VGB ,VDB ) − g (VGB ,VXB )  − S2  g (VGB ,VXB ) − g (VGB ,VSB )  = 0
S1 g (VGB ,VDB ) − S1 g (VGB ,VXB ) − S2 g (VGB ,VXB ) + S2 g (VGB ,VSB ) = 0
S1 g (VGB ,VDB ) + S2 g (VGB ,VSB ) = g (VGB ,VXB )( S1 + S2 )
S1 S2
g (VGB ,VDB ) + g (VGB ,VSB ) = g (VGB ,VXB )
S1 + S2 S1 + S2
Ora che abbiamo trovato g (VGB ,VXB ) , ci ricordiamo che
I MD = S1  g (VGB ,VDB ) − g (VGB ,VXB ) 
e sostituiamo (in questo modo VX scompare definitivamente dalla scena):
 S1 S2 
I MD = S1  g (VGB ,VDB ) − g (VGB ,VDB ) − g (VGB ,VSB ) 
 S1 + S2 S1 + S2 
 S1  S2 
I MD = S1 1 −  g (VGB ,VDB ) − g (VGB ,VSB ) 
 S1 + S2  S1 + S2 
 S2 S2 
I MD = S1  g (VGB ,VDB ) − g (VGB ,VSB ) 
 S1 + S2 S1 + S2 
S2
I MD = S1  g (VGB ,VDB ) − g (VGB ,VSB ) 
S1 + S2 
Ce l’abbiamo fatta!
S2
I = {...qualcosa...}  g (VGB ,VDB ) − g (VGB ,VSB )  = S1
 g (VGB ,VDB ) − g (VGB ,VSB ) 
S1 + S2 
Dunque il fattore di forma del transistor equivalente è:
−1
SS 1 1 
Seq = 1 2 =  + 
S1 + S2  S1 S2 
NOTA: se, fatte le stesse ipotesi, invece che due abbiamo tre transistori in serie, il
fattore di forma del transistor equivalente è
−1 −1
1 1 1   S S + S2S3 + S1S3  S1S2S3
Seq =  + +  = 1 2  =
 S1 S2 S3   S1S2S3  S1S2 + S2S3 + S1S3
e NON
S1S2S3
Seq =
S1 + S2 + S3
lo si capisce bene dalle dimensioni fisiche:
( numero puro )3 
S1S2S3
≡  =  numero puro 
( )
S1S2 + S2S3 + S1S3 ( numero puro )   2

 
( numero puro ) 
3
S1S2S3
Seq = ≡  =  numero puro 2  ← ???
( )
S1 + S2 + S3 ( numero puro )  

Prestazioni dinamiche e dimensionamento

Per le prestazioni dinamiche il discorso è abbastanza complicato. Il motivo è questo:


prendiamo un circuito fully C-MOS che implementi un NOR
 PUN formata da due P-MOS in serie, riceventi i segnali A e B. Conduce
soltanto quando A = B = 0;
 PDN formata da due N-MOS in parallelo, riceventi i segnali A e B. Conduce
quando almeno uno dei due è acceso (A = 1 oppure B = 1) o quando sono
entrambi sono accesi (A = B = 1);
I due circuiti saranno pure duali, ma è evidente che non sono simmetrici. Esaminiamo
infatti la transizione dell’uscita 1  0 (alto  basso). Essa può verificarsi in seguito ai
seguenti casi:
• A = B = 0  A = B = 1 (gli ingressi passano contemporaneamente ed
istantaneamente a 1): in questo caso possiamo calcolare il tempo di scarica
con la formula già vista per l’invertitore C-MOS,
2CL
tscarica = etc....
S
badando di usare, come fattore di forma S, quello equivalente dei due N-MOS
in parallelo!
• A = B = 0  A = 1, B = 0 [oppure A = 0, B = 1] (solo uno dei due ingressi
istantaneamente passa ad 1): anche questa volta dovrò utilizzare la formula
2CL
tscarica = etc....
S
tuttavia, invece che utilizzare l’S del parallelo, dovremo servirci di quello
dell’unico transistore N-MOS acceso. Si noti che, in questo caso, la scarica è
più lenta (se i due N-MOS della PDN hanno uguale S allora il tempo
necessario alla scarica sarà, in questo caso, il doppio!), perché più transistori
mettiamo in parallelo e maggiore è la Seq (e minore il tscarica ). Capiamo quindi
bene che, se siamo dei progettisti, dovremo ragionare su quest’ultimo caso,
che è quello meno vantaggioso (filosofia del caso peggiore).

Se è vero che si deve verificare la simmetria


Sn β n′ = S p β p′  Sn( PDN ) β n′ = S p( PUN ) β p′
allora deve accadere che S p( PUN ) > Sn( PDN ) , in quanto β p′ < βn′ (per i motivi espressi nel
capitolo 4). In questo modo la rete di pull-down sarà veloce come quella di pull-up.
Per un attimo ignoriamo dunque il caso peggiore e proviamo a dimensionare il circuito
affinché la pull-up sia veloce come pull-down.
Fissiamo – per capirci – dei dati numerici e poniamo dunque l’ Sn( PDN ) (equivalente)
della PDN = 4: se i transistori in parallelo sono due e sono ugualmente dimensionati,
ciò significa che ognuno di essi avrà un Sn = 2; per l’ S p( PUN ) il discorso è ben diverso:
sapendo che i due P-MOS sono in serie e che comunque essi (intrinsecamente, per la
loro maggior lentezza) devono essere sovradimensionati, dovrò partire già in partenza
con l’idea che l’ S p( PUN ) dovrà essere più grande di 4 e precisamente pari a 4α (con
α > 1 ). Ognuno dei due P-MOS in serie sarà quindi grande 2 ⋅ 4α = 8α . Il bilancio di
fattori di forma è quindi il seguente:
- rete di pull-up  2 transistori P-MOS ognuno grande 8α : totale fattori di
forma = 16α ;
- rete di pull-down  2 transistori N-MOS ognuno grande 2: totale fattori di
forma = 4.
Se già poniamo α = 2 il fattore di differenza fra le due reti diventa uguale ad 8 (che è
un’enormità) e il totale pari a 16 ⋅ 2 + 2 + 2 = 36 .
Viste le formule della serie e del parallelo, vista la diversa velocità di P-MOS ed N-
MOS, risulta evidente che sarebbe più conveniente mettere in serie gli N-MOS
(collegamento più lento per i transistor più veloci) e in parallelo i P-MOS
(collegamento più veloce per i transistor più lenti).
Se invece del NOR prendiamo il circuito NAND così fatto:
 PUN formata da due P-MOS in parallelo, riceventi i segnali A e B. Conduce
quando almeno uno dei due è acceso (A = 0 oppure B = 0) o quando sono
entrambi sono accesi (A = B = 0);
 PDN formata da due N-MOS in serie, riceventi i segnali A e B. Conduce
quando entrambi i transistor sono accesi (A = B = 1).

E rifacciamo i calcoli, ricordando che vogliamo una logica simmetrica


Sn( PDN ) β n′ = S p( PUN ) β p′
Poniamo di volere un Sn( PDN ) = S p( PUN ) = 4 ≤ S p( PUN ) ⋅ α = 4α
Rete di PULL-DOWN: ho due N-MOS in serie, che dovranno dunque essere
dimensionati con fattore di forma pari ad 8, in quanto (similmente a quanto avveniva
per i P-MOS nel caso del NOR)
1 1 1 1 1 1
= + ⇒ = +
Sn( PDN ) Sn Sn 4 8 8
Rete di PULL-UP: ho due P-MOS in parallelo, che dovranno essere dimensionati con
fattore di forma pari a 2α , così che la loro somma (formula del parallelo) dia 4α .

Il bilancio totale dei fattori di forma è notevolmente migliore rispetto a quello del caso
precedente: infatti questa volta dobbiamo “spendere” 8 + 8 = 16 per la PDN e solo 4α
per la PUN. Se poniamo α = 2 il totale fa esattamente 24 (contro i 36 di prima).
VIII - CAPACITÀ DEL TRANSISTOR MOS

Fin’ora, nella nostra trattazione


densa di semplificazioni, non
abbiamo trattato in maniera
compiuta il discorso delle
capacità interne al condensatore
(quelle – cioè – che si instaurano
fra i vari terminali). Il discorso
invece merita ragguagli, in
quanto le cariche che si
depositano sul MOSFET
dipendono in modo non lineare
dalle tensioni ai terminali del
transistor. Si guardi ad esempio
la figura affianco: aumentando
la tensione fra source e drain la
carica che si deposita non varia
assolutamente in modo lineare
(come avviene per un
condensatore ideale, che è tutto
bello regolare). Andiamo ora ad
esaminare le capacità associate
ai terminali del dispositivo, che
non sono costanti e, bensì,
dipendono dalle tensioni ai terminali.
Facciamo ora qualche ipotesi riguardo al nostro transistor:

CASO 1: transistore acceso (sopra soglia, VDS bassa, regione lineare)


Se ci troviamo in questo caso, tra il source e
il drain si viene a creare un canale
uniforme. In virtù di questa uniformità
possiamo dividerlo a metà e caratterizzarne
le due parti in cui lo scindiamo:
- la prima, quella che sta fra gate e source, è
sede di una capacità CGSC ;
- la seconda, quella fra gate e drain, è sede
di una capacità CGDC .
Sempre a causa dell’uniformità del canale,
le due capacità, che sono quantificabili in
WL
CGSC = GGDC = COX
2
(esattamente metà del canale obbedisce al
source, mentre l’altra fa capo al drain)

CASO 2: transistore acceso (sopra soglia, VDS alta, regione di saturazione)


In questo caso il source pilota una capacità molto superiore a quella del drain, che ha
pochissimo canale. Dunque questa volta dobbiamo differenziare i due casi!
SOURCE:
2
CGSC = WLCOX (quasi tutto
3
il canale)

DRAIN:
Approssimazione CGDC ∼ 0 (non controlla
parabolica
praticamente nulla)

CASO 3: transistore spento


In questo caso source e drain non
pilotano nulla
CGSC = GGDC = 0
La carica nel silicio coincide con
quella di svuotamento e la relativa
capacità è dovuta alla variazione
della concentrazione di lacune nel
substrato. L’unica capacità è quella fra gate e bulk, ed è pari a:
∂Q
CGB = WLCɶ = WL ≅ WLCOX
∂VGB
dove Cɶ è una capacità specifica che è inferiore a C OX e dipende da V , ma che
G

supporremo uguale a COX per semplificare lo scenario.

Passiamo ora alla descrizione delle


capacità estrinseche (parassite) del
transistor e, per farlo, osserviamo in
figura il MOS dall’alto e in sezione.
Come si nota, vi è una piccola sezione
(lunga X d = distanza di overlap) in
cui il gate si sovrappone al source e
un’altra (simmetrica) in cui il gate si
sovrappone al drain.
NOTA: le dimensioni W (larghezza) e
L (lunghezza) del gate, che troviamo
nelle formule, non comprendono le
regioni di sovrapposizione.
Se esaminiamo la parte tra gate e source,
ci accorgiamo che si forma un campo
elettrico fra i due strati (e quindi vi è una
capacità parassita). Tale capacità è
esprimibile così:
CGSp = X dWCOX
La stessa cosa accade lato drain, con la
presenza di una capacità:
CGDp = X dWCOX
Le capacità parassite CGSp e CGDp sono indipendenti dalle tensioni ai terminali del
MOSFET e si sommano alle CGSC e GGDC per dare le capacità complessive:
CGS = CGSC + CGSp (gate-source)
CGD = CGDC + CGDp (gate-drain)

Un’altra cosa che accade è che, nel funzionamento normale dei circuiti in tecnologia C-
MOS, il substrato (bulk) dei transistori di tipo N è normalmente polarizzato a massa,
dunque le giunzioni source-bulk e drain-bulk hanno sempre polarizzazione inversa
(vedi la giunzione p-n). Dunque ecco che dobbiamo introdurre altre due capacità
parassite:
• Capacità drain-bulk → CDB = C j 0WLdrain
• Capacità source-bulk → CSB = C j 0WLsource
NOTA: C j 0 è funzione di VSB , ed è in genere 3 o 4 volte inferiore a COX .

Per riassumere la situazione che abbiamo esaminato fin’ora facciamo una bella
tabellina per il nostro transistor:

REGIONE CAPACITÀ DI GATE CG = CGS + CGD + CGB


CG = W X dCOX + W X dCOX + COX WL = COX WL + 2WCGD 0
Spento    
CGS 0 =CGD 0
(sottosoglia)     CGB (lato bulk)
CGD 0

CGS (lato source) CGD (lato drain)

CG = W X dCOX + 0,5WLCOX + W X dCOX + 0,5WLCOX = WLCOX + 2WCGD 0


 
Triodo CGS 0 =CGD 0
   CGD 0
 
CGS (lato source) CGD (lato drain)

CG = W X dCOX + 2 WLCOX + W X dCOX = 2 WLCOX + 2WCGD 0


 3  3
Saturazione CGS 0 =CGD 0 CGD 0
  
CGS (lato source) CGD (lato drain)

Ora vogliamo complicare il tutto e osservare quel che accade con la catena di due
invertitori. Serviamoci dunque di uno schema in cui riportiamo la struttura dei due C-
MOS inverter e districhiamoci fra tutte le capacità parassite. Chiameremo:
- con l’indice 1 i parametri dell’N-MOS del primo invertitore;
- con l’indice 2 i parametri del P-MOS del primo invertitore;
- con l’indice 3 i parametri dell’N-MOS del secondo invertitore;
- con l’indice 4 i parametri del P-MOS del secondo invertitore.
Quindi formuliamo una piccola legenda
(i = indice del transistor):
• CGDi  capacità gate-drain
del transistore i;
• CDBi  capacità drain-bulk
del transistore i;
• CG  capacità di gate del
transistore i;
• CW  capacità della linea di
metallo che collega i due
invertitori.
Chiameremo inoltre con CL la capacità
complessiva (data dalla somma di tutte
queste capacità) che l’invertitore vede
sull’uscita O1 (che supponiamo si stia caricando). Calcoliamo a quanto ammonta tale
capacità:
transistor 1 transistor 2
   
CL = 2W1CGD 0 + W1 Ldrain1C j 0 K eq + 2W2CGD 0 + W2 Ldrain2C j 0 K eq + CW +
     
gate-drain drain-bulk gate-drain drain-bulk
transistor 3 transistor 4
 
+ W3 L3COX + 2W3CGS 0 + W4 L4COX + 2W4CGS 0
 
capacità di gate capacità di gate

NOTA: C j 0 K eq = C j (dove K eq < 1 è una costante che linearizza il modello) indica che,
trovandoci in un transitorio di carica, la capacità C j è inferiore alla C j 0 .
Ora chiamiamo LMIN la minima lunghezza consentita dalla tecnologia per il gate: essa
ci ridefinisce anche i fattori di forma dei transistori N-MOS e di quelli P-MOS
Wn Wp Sp W
Sn = Sp = =α = p
LMIN LMIN Sn Wn
Facciamo in modo che questi parametri valgano per tutti e quattro i transistor
( W1 = W3 = Wn , W2 = W4 = Wp , L3 = L4 = LMIN , Ldrain1 = Ldrain2 = Ldrain ), dopodiché torniamo
alla nostra formulona e separiamo tutto ciò che riguarda i transistori a canale P da
quello che riguarda il canale N:
TRANSISTORI DI TIPO N → QUANTITÀ CN


transistor 1 transistor 3
  
CL = 2WnCGD 0 + Wn LdrainC j 0 K eq + Wn LMIN COX + 2WnCGS 0 +
    
gate-drain drain-bulk capacità di gate
transistor 2 transistor 4
  
+ 2WpCGD 0 + Wp LdrainC j 0 K eq + Wp LMIN COX + 2WpCGS 0 + CW
    
gate-drain drain-bulk capacità di gate

TRANSISTORI DI TIPO P

Esprimendo con CN la capacità associata ai transistori N possiamo riscrivere questa


equazione così:
CP


WP
CL = C N + CN + CW = (1 + α ) CN + CW
WN
NOTA: abbiamo usato un piccolo trucchetto. La capacità CP dei transistori di tipo P
differisce dalla CN solo dal fatto che in quest’ultima vi è WN al posto di WP . Con un
trucchetto algebrico abbiamo quindi espresso CP “in funzione” di CN (provare per
credere).

Ora che abbiamo trovato la capacità


CL presente all’uscita O1, chiamiamo
CINT la capacità presente all’ingresso
VIN . Cerchiamo di fare qualche
valutazione sui tempi di
carica/scarica.
Mettiamo che CINT si scarichi: quanto
ci mette?
2CINT
τ int =
S β ′VDD
Ora, siccome l’ingresso va verso il basso, l’invertitore farà salire l’uscita e inizierà a
caricare CL (che abbiamo trovato poco fa e che supponiamo CL > CINT in maniera
abbastanza robusta). Il tempo di carica sarà pari a
2CL
τ CL =
S β ′VDD
C
Se poniamo M = L ⇒ CL = MCINT , possiamo esprimere questo tempo così
CINT
2CL 2CINT
τ CL = =M = Mτ int
S β ′VDD S β ′VDD
Appare chiaro che, assumendo per M valori [anche molto] maggiori di 1 (visto che
CL > CINT ), il tempo di carica della capacità
CL sarà [parecchio] superiore a quello della
scarica del condensatore in ingresso.
Per ovviare al carico troppo grande (e alla
lentezza della logica), si introduce un ulteriore
buffer fra le due capacità (si viene a formare
buffer a due stadi, vedi figura affianco). Si
scopre poi che, per ottenere il massimo
risultato, i due buffer devono essere
dimensionati diversamente:
- il primo dev’essere più piccolo (ci
metterà un po’ di più);
- il secondo, più grande, sarà più veloce perché farà passare più corrente.
Come mai è più conveniente questa configurazione? Il buffer più grande caricherà più
velocemente la grande capacità in virtù del suo maggiore dimensionamento, quindi è
abbastanza intuitivo capire che è opportuno metterlo direttamente a monte della CL .
Possiamo però vedere meglio questa verità dalle formule cercando, nello stesso tempo,
quale sia il dimensionamento adatto dei transistor per ottenere il risultato migliore:
poniamo pari a U il rapporto fra i fattori di forma dei due transistor
S
U=
S INT
(NOTA: siccome il secondo invertitore l’abbiamo fatto
più grande del primo, si avrà che U > 1)
chiamiamo τ totale il tempo di commutazione riferito al primo invertitore sommato a
quello del secondo
1 CL


SINT
 2  MC 
 INT

2CINT 1  
τ totale = ⋅ U+
VDD β ′ S  ⋅ SVDD β ′
U
 corrente U
primo invertitore
volte più
grande


secondo inevertitore
Ci ricordiamo ora che, poco fa, avevamo trovato che il tempo in cui ci metteva il singolo
invertitore di prima ad effettuare la transizione era
2CINT
τ int =
S β ′VDD
Quindi:
2CINT 2CINT M M
τ totale = ⋅U + = Uτ int + τ int
VDD S β ′ VDD S β ′ U U
Come devo fare grande U per avere il dimensionamento ottimo? Ovvero, quale U ci
minimizza il tempo τ totale ?
Utilizziamo le regole dell’analisi e vediamo dove si annulla la derivata prima:
∂ttotale M
= τ int − 2 τ int = 0
∂U U
Questo significa che il dimensionamento ottimale si ha per U = M .
Si capisce dunque bene che il tempo calcolato in questo caso ottimale
M
τ totale = M τ int + τ int = M τ int + M τ int = 2 M τ int
M
è molto spesso inferiore a quello calcolato col singolo invertitore:
τ CL = Mτ int
Infatti:
τ totale < τ C per 2 M τ int < Mτ int
L

M −2 M > 0
M >4
IX – LOGICHE A PASS-TRANSISTOR

Le logiche a pass-transistor sono radicalmente diverse da quelle viste fin’ora:


- non si basano su reti di pull-up o di pull-down;
- non c’è alcuna ridondanza nell’implementazione del circuito;
- sono costituite da reti di interruttori seguite da un buffer in uscita (spesso un
semplice invertitore C-MOS);
- tutti gli ingressi della logica diventano segnali di gate;
- i segnali ingresso vengono tutti idealmente considerati come perfettamente
puliti (basso  0 V, alto  VDD , come da generatore ideale di tensione);
- non sempre è chiaro quale sia il source e quale sia il drain.
La struttura di una rete a pass-transistor è la seguente:

in ingresso di un blocco interruttori vengono messe a disposizione tutte le variabili


dalle quali dipende la generica funzione F. Tali variabili possono diventare di
source/drain e possono dunque venire “filtrate” dagli interruttori di tale blocco,
pensati come transistor, i quali vengono pilotati da alcuni degli ingressi stessi (ma
anche variabili di appoggio o selezione). Diamo subito un esempio di una rete di questo
tipo con un Multiplexer invertente: lo schema è il seguente

L’uscita è ovviamente funzione di A, B ed S. Gli interruttori sono regolati dal segnale


S, che fa passare A (se S è in forma vera, attivando l’N-MOS 1 e interdicendo 2)
oppure B (se S è negato, attivando l’N-MOS 2 e interdicendo 1). Il segnale che riesce a
passare viene poi invertito all’uscita.
Si noti che, nei gate a pass-transistor, i percorsi nella rete di interruttori sono attivati
in modo mutuamente esclusivo: in altre parole soltanto uno dei percorsi nella rete è
conduttivo per una certa configurazione di ingressi. Infatti, se così non fosse, diversi
segnali di ingresso al gate potrebbero competere per pilotare l’uscita della rete di
interruttori verso VDD o verso lo 0. Questa situazione è assolutamente indesiderabile
perché non solo genera percorsi di correte statica nel circuito, ma porta ad un’uscita
confusa e probabilmente indecifrabile.
Diamo un altro esempio: lo XOR (eXclusive-OR). Tale funzione logica ha la seguente
tabella di verità:
A B A ⊗ B
0 0 0
0 1 1
1 0 1
1 1 0
Con una logica a pass-transistor questa funzione può essere implementata così:

Facile è accorgersi del fatto che, utilizzando l’algebra di commutazione, la funzione in


uscita è davvero una XOR.
NOTA: per realizzare questa logica a pass-transistor servono soltanto 2 transistor e 1
invertitore. Per fare la stessa cosa in una logica C-MOS ci sarebbero invece voluti 8
transistor (4 per la PDN + 4 per la PUN) e 1 invertitore. In generale, con i circuiti a
pass-transistor, è possibile quindi realizzare funzioni logiche con un numero davvero
contenuto di transistori.

Il problema della perdita della soglia

Con i pass-transistor non è tutto rosa e fiori. Vediamo come mai nella più semplice
implementazione di un interruttore.
1° caso: l’OUT è a 1 e voglio trasmettere
uno zero (il transistor è acceso e porta
corrente dalla capacità a massa).
Il circuito si comporta bene, perché la
legge che governa il transitorio
( da VDD → a 0 ) è quella già vista nei
capitoli precedenti: affinché la corrente I
(da OUT ad A) smetta di scorrere è
necessario che OUT passi a zero (cioè che
VDS = 0 ), dunque il nodo scende del tutto.

2° caso: la tensione d’uscita è inizialmente 0 e


voglio trasmettere un 1 (il transistor è acceso e
porta corrente dal generatore alla capacità).
Il circuito, questa volta, non si comporta molto
bene, perché non riesce a portare l’uscita a VDD
spegnendosi prima del dovuto (quando OUT è a
VDD − VT , cioè quando VGS è pari al valore limite
di soglia VT ). Avviene quindi il fenomeno di
perdita della soglia: in altre parole, si può
trasmettere solo un “1” debole. Inoltre, questo transistor soffre di effetto Body (bulk
polarizzato a massa mentre il source assume tensioni da 0 a VDD ), quindi – in realtà –
l’uscita è ancora un poco più debole di VDD − VT .
Dunque il pass-transistor (di tipo N) non si comporta bene sempre: con uno 0 in
ingresso tutto è a posto, ma con un input a 1 l’uscita è fragile.

La stessa cosa avviene con un transistor a canale P al posto di quello N usato fin’ora:
1° caso: uscita inizialmente bassa e A alta
(voglio trasmettere un “1”). VGS è costante (e
pari a zero) quindi il P-MOS non si spegne mai
e la corrente fluisce tranquillamente fino a
quanto l’uscita non è completamente arrivata a
VDD .

2° caso: uscita inizialmente alta e nodo A basso


(voglio trasmettere uno “0”). VGS non è costante
e cala fino alla −VT (che è positiva), punto in cui
il transistor – raggiunta la soglia – si spegne e
la tensione di OUT smette di calare (senza
quindi essere arrivata completamente a zero).
Precisamente anche questa volta, a causa
dell’effetto body, non solo non riusciamo
completamente a scaricare, ma ci fermiamo
addirittura un po’ prima di −VT .

Quindi nemmeno il pass-transistor di tipo P si comporta bene sempre: con un “1” in


ingresso tutto è a posto, ma con un input a “0” l’uscita è fragile.

INCISO: a che serve l’invertitore all’uscita di una rete a pass-transistor (vedi


illustrazioni nel paragrafo precedente)? Ebbene, ci si accorge che è difficile caricare un
eventuale carico (collegato al blocco degli interruttori) con un fan-in troppo elevato. Se
il blocco degli interruttori è troppo complicato, il ritardo complessivo potrebbe risultare
estremamente elevato. Il buffer evita questo problema riducendo di molto il ritardo
complessivo e garantendo un’uscita limpida.
NOTA: dobbiamo stare attenti a dimensionare la soglia dell’invertitore, perché
dobbiamo tenere conto dell’effetto Body!

Pass-transistor complementari

Si è visto, nel paragrafo precedente:


- che un N-MOS:
- trasmette male gli “1”;
- trasmette bene gli “0”;
- che un P-MOS:
- trasmette bene gli “1”;
- trasmette male gli “0”.
Non è quindi difficile intuire che un pass-
transistor formato dal parallelo dei due
transistori (v. figura) elimina il problema della
perdita della soglia. Infatti, nei casi che prima
andavano già bene (N-MOS: trasmissione di
uno “0”; P-MOS: trasmissione di un “1”), tutto
continua a funzionare: per quanto riguarda i
casi meno buoni, le caratteristiche duali dei
transistor fanno sì che l’N-MOS sopperisca alle
deficienze del P-MOS e viceversa. Quindi, se
dobbiamo trasmettere uno “0” il P-MOS
arriverà fin dove arriva e il lavoro sarà
completato dall’N-MOS. Accade, ovviamente, anche il viceversa: se dobbiamo
trasmettere un “1”, l’N-MOS potrà scaricare fino al valore di limite trattato
precedente, ma fortunatamente il P-MOS porterà a termine la carica.

VANTAGGI della configurazione a pass-transistor:


- eliminiamo la perdita della soglia nella maniera più semplice e intuitiva
possibile;
SVANTAGGI della configurazione a pass-transistor:
- servono più transistor, quindi la logica diventa più costosa;
- i transistori N-MOS e P-MOS hanno regioni di semiconduttore con drogaggio
diverso, dunque devono stare ad una certa distanza fra loro  circuito un po’
più ingombrante;
- i segnali di controllo servono sia in forma vera che negata  aumentano le
interconnessioni;
- la connessione in parallelo di due transistori per ogni pass-transistor aumenta
le capacità parassite ai nodi interdi, le quali concorrono a determinare i ritardi e
la potenza dinamica dei circuiti.
Per questi ultimi motivi è interessante analizzare alcune possibili realizzazioni di
pass-transistor non complementari, che cercano di rimediare ai problemi connessi alla
perdita della tensione di soglia.

Il transistore di ripristino (level restorer)

Questo circuito è abbastanza


ingegnoso; verifichiamo anzitutto che
non provoca la perdita di soglia:
- supponiamo di voler far salire il
nodo B ad “1” (A è, e rimane, ad “1”):
il transistor G caricherà B finché
potrà, visto che si spegnerà a
VDD − VT . Tuttavia, giunti a quel
livello, si sarà già attraversata la
soglia logica dell’invertitore: ciò
significa che il nodo F sarà andato a
“0” e il P-MOS sopra B, accendendosi,
avrà completato lo swing logico [basso
 alto] del nodo in questione;
- supponiamo ora di voler trasmettere uno “0” (B è alto, A è polarizzato a massa): B,
che è alto, provoca sì l’accensione del P-MOS MR: tuttavia il transistor in G (che è
acceso per ipotesi) vince la sua competizione con MR (l’N-MOS vuole scaricare, il P-
MOS vuole caricare, ma l’N-MOS è più potente) e riesce ad abbassare la tensione in B.
Inoltre, una volta attraversata la soglia logica dell’invertitore, il P-MOS si spegnerà: di
conseguenza la scarica potrà avvenire completamente e senza più alcun ostacolo.

PROBLEMA: il dimensionamento del P e dell’N-MOS di cui si parla nei due casi


precedenti è importantissimo! Bisogna infatti fare in modo che il P-MOS sia meno
conduttivo dell’N-MOS, oppure la trasmissione di uno “0” non si può effettuare: la
competizione per il pilotaggio di B, se vinta dal P-MOS, rende infatti impossibile lo
spegnimento del circuito!
X – LOGICHE DINAMICHE

Le logiche dinamiche eliminano la ridondanza fra pull-up e pull-down delle reti C-


MOS senza introdurre un consumo di potenza statica e mantenendo una topologia
simile a quella dei gate C-MOS. Queste caratteristiche sono ottenute grazie ad un
principio di funzionamento diverso rispetto ai gate analizzati fin’ora, che si basa su
due fasi distinte, identificate dal valore di un segnale di controllo detto segnale di
clock.
Inoltre si vede che in certe configurazioni non è garantita l’alta impedenza fra uscita e
alimentazione: ciò provoca un uscita fragile, che col tempo può degradarsi a causa di
correnti parassite, perdite, etc…. Le logiche dinamiche ovviano a questo problema
introducendo una sorta di refresh del dato. Vediamo come.

Quello in figura è lo schema generale della


logica dinamica pull-down network.
In questo tipo di logiche non c’è, in uscita, un
valore logico leggibile in maniera
continuativa. La struttura prevede un P-
MOS (come pull-up network) e un N-MOS (a
valle della pull-down network) entrambi
governati da un clock, onda quadra con duty-
cycle pari a 0,5.

Quando φ = 0 siamo in fase di precarica


(precharge). Il transistore P-MOS è acceso,
l’N-MOS è spento; indipendentemente dai
valori degli ingressi, non può esistere un
percorso conduttivo verso massa, dunque
l’uscita sarà sicuramente a tensione alta.

Quando φ = 1 siamo in fase di valutazione


(evaluation). Il transistore P-MOS è spento,
mentre l’N-MOS è acceso: ciò significa che
non esiste alcun percorso
conduttivo verso VDD ;
tuttavia, può esistere un
percorso conduttivo verso
massa, se la rete di pull-
down (con la sua
configurazione) lo permette.
Se tale percorso conduttivo
esiste, allora la tensione
d’uscita VOUT si scarica fino
al valore basso, altrimenti
essa rimane al valore alto
imposto dalla fase di
precarica. In questa fase
avviene quindi la
valutazione della funzione logica implementata dalla rete di pull-down.

Ora appare chiaro come mai parliamo di dinamicità; mentre, nelle logiche statiche
(fully C-MOS, logiche a rapporto, logiche a pass-transistor), l’uscita assume in ogni
istante il valore della funzione logica computata dal gate, nelle logiche dinamiche tutto
ciò non accade durante la fase di precarica. Nella fase di precarica il circuito non
computa infatti alcuna funzione logica; questa fase svolge però un’indispensabile
funzione propedeutica rispetto alla fase di valutazione. Grazie alla precarica, infatti,
viene garantita (sempre in fase di valutazione) una tensione bassa VOL pari a 0 V e
una tensione alta VOH pari a VDD senza bisogno di una rete di pull-up. Inoltre,
l’alternanza delle fasi di precarica e valutazione assicura che i transistori N-MOS e P-
MOS (governati dal clock) siano sempre accesi in modo mutuamente esclusivo: di
conseguenza l’assorbimento di potenza statica è nullo, così come la potenza di
cortocircuito.

La staticità dei circuiti garantisce che, se un disturbo di qualsiasi natura cerca di


spostare il segnale di uscita rispetto ai valori nominali VOL e VOH , esiste una rete di
transistori che si oppone a tale variazione e fornisce una corrente per riportare l’uscita
al valore nominale. I circuiti che esaminiamo in questo capitolo sono invece
potenzialmente dinamici durante la fase di valutazione: infatti, se gli ingressi sono tali
da non attivare il pull-down, allora il nodo di uscita è elettricamente isolato rispetto
ad entrambe le alimentazioni (si dice, a proposito, che è floating). Conseguentemente,
il valore di tensione imposto in precarica rimane immagazzinato in modo dinamico
sulla capacità del nodo d’uscita.

Gli ingressi, ovviamente, potranno variare soltanto nella fase di precarica (quando in
uscita abbiamo un “1” in alta impedenza): modificando infatti la rete PDN durante la
valutazione potremmo infatti sporcare pericolosamente il dato in uscita.

La logica dinamica pull-down network non è la sola


implementazione dinamica realizzabile: esiste infatti
un’analoga versione pull-up avente funzionamento
simile (il principio e le finalità sono gli stessi) ma –
ovviamente – duale. In questo caso, il segnale di clock
CLK discrimina:
- fase di prescarica (CLK = 1): il transistore di
valutazione (P-MOS) è spento, mentre l’N-MOS è
acceso. Essendo presente un percorso conduttivo
permanente verso massa, l’uscita non potrà che essere
bassa indipendentemente dal valore degli ingressi;
- fase di valutazione (CLK = 0): il P-MOS è acceso e l’N-
MOS è spento: siccome non c’è più alcun percorso
conduttivo verso massa, l’uscita potrà liberamente
salire al valore logico alto se la PUN è attiva. Se invece
la combinazione degli ingressi non riesce a creare una
pista verso OUT, allora l’uscita conserverà dinamicamente il valore basso imposto
durante la fase di prescarica.
Fatte queste considerazioni notiamo che, nelle logiche dinamiche:
- servono N+2 transistori per realizzare una rete con N ingressi (invece dei 2N
transistori delle reti fully C-MOS);
- i valori di tensione nominale alta e bassa (rispettivamente VOH e VOL ) non
dipendono dai dimensionamenti dei transistori e sono VOH = VDD e VOL = 0 ;
- la natura dinamica dei gate rende fragili e vulnerabili ai disturbi:
 il valore alto nelle logiche dinamiche PDN: infatti è sufficiente che, in
fase di valutazione e in presenza di “1” in uscita, si attivi un transistore
nella pull-down per sballare tutto;
 il valore basso nelle logiche dinamiche PUN: infatti è sufficiente che, in
fase di valutazione e in presenza di “0” in uscita, si attivi un transistore
nella pull-up per rovinare il dato;
- il funzionamento dei gate dinamici basato sulle due fasi di precarica e
valutazione rende inapplicabile per tali gate il concetto di caratteristica statica.

Gli inconvenienti dell’alta impedenza: disturbo indotto dal segnale di clock


(clock feedthrough)

Si parla di clock feedthrough quando le


transazioni del segnale di clock φ si
accoppiano col nodo d’uscita attraverso la
capacità gate-drain del transistore di
precarica. Come si vede dalla figura:
► in fase di precarica l’uscita è
sicuramente 1: giunta la fase di
valutazione e il momento, per l’uscita, di
andare a zero a seguito dell’attivazione
della PDN, si nota che il nodo OUT può
accoppiarsi capacitivamente con il segnale
di clock (che sta salendo) veicolato dall’N-
MOS. Dunque, invece di scendere, il nodo
OUT sale per qualche istante, quindi
procede normalmente attraverso il suo
transitorio di scarica. La stessa cosa si verifica anche
quando la PDN non è conduttiva e l’uscita deve
rimanere ad “1”.
► una cosa simile avviene, dualmente, quando dalla
fase di evaluation (si è appena valutato uno “0”)
passiamo a quella di precharge e l’uscita deve tornare
a VDD : a causa del clock feedthrough, la tensione
scende a valori inferiori a quello del valore logico
basso.
La colpa di tutto ciò è da imputare alle capacità indicate in figura:
• CVDD si trova tra l’uscita e VDD ed è dovuta alla capacità drain-bulk del
transistore (di precharge) connesso all’uscita;
• CGND si trova fra l’uscita e massa ed è dovuta alla capacità drain-bulk dei
transistori connessi tra uscita e massa;
• CFDT è la capacità fra clock e uscita.

Gli inconvenienti della bassa impedenza: correnti di perdita

Durante la fase di valutazione


(con riferimento al circuito in
figura, semplificazione del caso di
logica dinamica pull-down
network) qualsiasi corrente di
perdita al nodo d’uscita determina
una riduzione della sua tensione
rispetto al valore imposto durante
la precarica. Le correnti di
perdita sono:
- quella di sotto-soglia I off dei
transistori nominalmente spenti
(la identifichiamo con un diodo
polarizzato in inversa
direttamente collegato all’uscita);
- la corrente I jnc della giunzione drain-bulk del transistore N-MOS connesso
all’uscita.
Supponendo per semplicità che la corrente di perdita complessiva sia quasi
indipendente dalle tensione VDS del transistor N-MOS connesso all’uscita, allora il
tempo necessario per provocare una riduzione ∆Vdist della tensione al nodo d’uscita è
semplicemente pari a:
C ∆V
Tdist = L dist
I off + I jnc
Fissato il massimo valore tollerabile di degrado della
tensione alta, le correnti di perdita impongono un
limite superiore al tempo di valutazione, quindi una
frequenza minima di funzionamento dei circuiti
dinamici.

Come risolvere questo problema? Un modo abbastanza


brillante è quello di introdurre un transistore di
bleeder (“sanguinante”); lo schema è quello in figura a
destra: il bleeder funziona solo quando deve funzionare
(tensione alta al nodo VOUT ) e integra le perdite di
corrente del nodo d’uscita. Siccome le perdite sono
comunque piuttosto piccole, il bleeder transistor può
essere dimensionato in maniera contenuta.

Gli inconvenienti dell’alta impedenza:


ripartizione di carica

Oltre ai disturbi dovuti alle correnti di perdita dei transistori nominalmente spenti, la
tensione di uscita alta può degradarsi durante la fase di valutazione anche perché
alcune transistori del pull-down si accendono, pur senza
creare un intero percorso di corrente fra uscita e massa.
Facciamo riferimento a una semplice logica dinamica del
tipo indicato in figura: supponiamo quindi che vi sia un
malfunzionamento, e
che A si accenda (pur
B rimanendo spento).
L’uscita non avrebbe
nessuna regione di
calare (non vi è alcun
percorso conduttivo
verso massa, quindi
la tensione OUT
dovrebbe rimanere
fissa a VDD ), tuttavia la carica del nodo d’uscita
si ripartisce tra CL e la capacità C A (cioè la
capacità associata al transistor A, che ora è
acceso e può caricare). Che accade ora?
► se C A è relativamente piccola rispetto a CL ,
allora il transitorio termina con lo spegnimento
di A. OUT, infatti, scende lentamente (capacità
CL grande) e carica in fretta la C A (che è
piccola): dal momento che la tensione VA (a
valle di A, dove possiamo porre il condensatore C A ) raggiunge il valore VDD − VT ,
allora il transistore A, come abbiamo detto, si spegne. La variazione di tensione
indotta sul nodo d’uscita sarà ∆VOUT :
CLVDD + 0
 = CLVOUT + C AVA
 ipotesi che
prima che A in A non ci
si aprisse sia carica al
tempo 0

CA
∆VOUT = VDD − VOUT = VA
CL
Si noti che, affinché sia valida la precedente analisi, è
necessario che alla fine del transitorio VOUT = VA : tale
relazione si traduce nella seguente condizione
CA VT
<
CL VDD − VT
► se l’espressione scritta appena sopra non è verificata (e quindi C A non è poi così
piccola rispetto a CL ), il transitorio si esaurisce quando
∆VOUT = VA
in modo che si annulli la tensione VDS del transistore A. Questa volta, la variazione di
tensione ∆VOUT indotta sul nodo d’uscita è:
CLVDD + 0 = CLVOUT + C AVOUT = VOUT (CL + C A )
 ipotesi che

prima che A in A non ci parallelo dei
si aprisse sia carica al due condensatori
tempo 0
CA
∆VOUT = VDD
C A + CL

PICCOLO MIGLIORAMENTO: Per evitare le perdite


dovute alla ripartizione di carica possiamo introdurre
un transistore di tipo P (una specie di pseudo N-MOS),
che fornisca una piccolissima corrente (NOTA: con
questo escamotage consumiamo però potenza statica!).
Utilizzando un bleeder, invece, non consumiamo
potenza statica perché, grazie all’invertitore,
eroghiamo corrente solo quando serve.

Gli inconvenienti dell’alta impedenza: accoppiamenti capacitivi

Quando il nodo d’uscita di un gate dinamico è in uno stato di alta impedenza, la sua
tensione può essere facilmente perturbata dall’accoppiamento capacitivo verso altri
nodi del circuito.
Un tipico esempio è l’accoppiamento capacitivo con un’interconnessione che passa
vicina al nodo in questione, la quale può avere un’attività di commutazione del tutto
indipendente dal circuito in esame.
Un secondo esempio è l’accoppiamento capacitivo con i circuiti a valle pilotati dal gate
dinamico.
Comunque sia, tali accoppiamenti hanno due effetti principali:
- riducono il margine di immunità ai disturbi;
- variano pericolosamente i valori dell’uscita.

Connessione in cascata di gate dinamici

Consideriamo il semplice circuito in figura, il


quale rappresenta la connessione in cascata di
due invertitori realizzati con logiche dinamiche
PDN. Si supponga che il circuito entri in
evaluation con A = 1, OUT1 = inizialmente a VDD
(ma da questo momento in poi cala proprio a
causa di A), OUT2 = 1: siccome nel circuito 1 si
forma un percorso conduttivo verso massa,
l’uscita OUT1 [da VDD ] tende a calare verso lo
zero con un transitorio di discesa. Secondo le
nostre previsioni, proprio a causa di questa
commutazione (visto che provochiamo lo
spegnimento di M2), dovrebbe accadere che
l’uscita OUT2 si mantenga alta. Siccome però
OUT1 non cala in maniera istantanea, per un
certo lasso di tempo il transistore M2 riesce a restare acceso e, precisamente, finché
VOUT 1 (che sta calando) è maggiore della soglia logica VT 2 [ovviamente di M2]. Dunque
OUT2 non resta ad “1” (come vorremmo) ma si scarica fino al raggiungimento (da
parte di OUT1) di tale soglia, perdendo così la limpidezza dell’uscita alta. Una volta
attraversata la VT 2 , M2 è spento quindi l’uscita non perde più tensione: ma è ormai
troppo tardi, perché VOUT 2 è ormai già inferiore a VDD , visto che non esiste una
connessione che possa compensare la precedente scarica. Come posso fare a risolvere
questo problema?
È facile rendersi conto che, per un corretto funzionamento dei blocchi dinamici di
questo tipo ( φn  con la rete di interruttori nella parte di pull down), è necessario che,
durante la fase di valutazione, gli
ingressi rimangono costanti oppure
abbiano soltanto transizioni da 0 V
(valore “basso” = “0”) a VDD (valore
“alto” = “1”). Allo stesso modo, per i
blocchi dinamici complementari ( φ p
 con la rete di interruttori nella
parte di pull up) è necessario che,
durante la fase di valutazione, gli
ingressi rimangano costanti oppure
abbiamo soltanto transizioni da “0” a
“1”. Sulla base di queste regole, si
possono concepire diversi schemi di
circuiti che consentono una corretta
connessione in cascata dei gate
dinamici.

Le alternative ai problemi delle


connessioni in cascata: logiche
domino

Qui sopra riportiamo lo schema delle logiche domino, nate dall’osservazione in base
alla quale - durante la fase di valutazione - si possono avere soltanto transizioni da “0”
a “1” (o ingressi costanti) all’uscita di una rete PDN di circuito dinamico [e da “1” a “0”
per le controparti dinamiche PUN]. Inserendo un invertitore, siamo sicuri che nella
fase di valutazione vi può effettivamente essere soltanto una transizione da “0” a “1”
(cioè, da “1” a “0” negata: infatti nel corso della evaluation non può esserci
assolutamente una carica, visto che la PUN è interdetta, ma solo una scarica o un
mantenimento del valore alto in uscita, il ché soddisfa le ipotesi di corretto
funzionamento fatte poco fa).
L’inserimento dell’invertitore introduce naturalmente un ritardo, il quale si somma a
quello della parte dinamica del gate, tuttavia si presta anche ad alcune interessanti
ottimizzazioni:
- anzitutto si ha un discreto grado di flessibilità per ottimizzare i ritardi, qualora il
gate debba pilotare una capacità relativamente grande (vedi capitoli precedenti);
- si dà una condizione sul dimensionamento di S p (il P-MOS della PUN), mentre l’N-
MOS può essere mantenuto minimo per ridurre la capacità in ingresso. Il suddetto
dimensionamento minimo rallenta la discesa del segnale in uscita all’invertitore
durante la precarica, il quale di norma non è però un ritardo critico;
- l’invertitore può essere sfruttato per pilotare un P-MOS bleeder connesso al nodo
d’uscita OUT1, il quale può compensare i disturbi dovuti alle correnti di perdita o
alla ripartizione di carica durante la valutazione di OUT1 = 1.

Le alternative ai problemi delle connessioni in cascata: logiche NP-CMOS.

Riconsiderando i vincoli sulle commutazioni degli ingressi per la connessione in


cascata di circuiti dinamici
Commutazioni permesse:
N-MOS 01
P-MOS 10

ci si rende conto che le uscite di un blocco φn (dinamiche a PDN) soddisfano, durante la


fase di valutazione, i vincoli richiesti per gli ingressi ai blocchi φ p (dinamiche a PUN).
Se quindi colleghiamo l’uscita di una rete φn al gate di uno dei MOSFET della rete
PUN di una vicina logica φ p , non abbiamo alcun problema e i due blocchi si alternano
senza necessità di inserire un invertitore. I circuiti NP-CMOS consentono di eliminare
il ritardo dell’invertitore usato nelle logiche domino, tuttavia richiedono di
implementare la funzione logica anche con i transistori P-MOS, la cui conducibilità
intrinseca è tipicamente la metà di quella degli N-MOS. Per equalizzare e bilanciare i
ritardi si ricorre dunque a un dimensionamento maggiore dei P-MOS e ciò si traduce,
naturalmente, in un aumento della capacità in ingresso ai blocchi φ p . Di conseguenza,
una serie di blocchi di tipo φn e φ p risulta essere piuttosto lenta rispetto a una logica di
sole logiche φn (PDN).