Vai al contenuto
Emmy

Porte logiche CMOS

Elettronica · Elettronica digitale Articolo

Percorso: Fondamenti di elettronica · 14 di 20

Prima di questo, potrebbe interessarti: Tempi di commutazione e potenza

Indice

Reti di pull-up e di pull-down

Nell’invertitore CMOS un transistore nn tira l’uscita verso massa e un transistore pp la tira verso l’alimentazione. Le porte a più ingressi seguono la stessa idea con più transistori: una rete di pull-down di transistori nn tra l’uscita e massa, e una rete di pull-up di transistori pp tra l’alimentazione e l’uscita, dal verbo inglese to pull, tirare. Per ogni combinazione degli ingressi una sola delle due reti deve condurre: così l’uscita è sempre collegata a VDDV_{DD} o a massa, e non c’è mai un percorso tra le due.

Le porte a due ingressi più usate sono quattro. La AND dà 1 solo se entrambi gli ingressi sono 1, la OR dà 1 se almeno uno è 1; la NAND e la NOR sono le loro negazioni. Con le sole NAND, o con le sole NOR, si costruisce qualunque funzione logica. Nei circuiti CMOS le porte naturali sono proprio NAND e NOR: un transistore nn conduce con l’ingresso alto e porta l’uscita bassa, quindi ogni rete è invertente, e una AND è una NAND seguita da un invertitore.

Si prenda la NOR. L’uscita deve essere bassa se AA oppure BB è alto: nella rete di pull-down bastano due transistori nn in parallelo, uno comandato da AA e uno da BB. L’uscita deve essere alta solo se AA e BB sono entrambi bassi: nella rete di pull-up due transistori pp in serie, perché ciascuno conduce con il suo ingresso basso e basta che uno si spenga per interrompere il percorso. La NAND è il contrario: nn in serie e pp in parallelo.

La struttura di una porta CMOS e la porta NOR A sinistra uno schema a blocchi: tra l'alimentazione V D D e l'uscita Y un blocco chiamato rete di pull-up, fatto di transistori p; tra l'uscita e massa un blocco chiamato rete di pull-down, fatto di transistori n; gli ingressi arrivano a entrambi i blocchi. A destra la porta NOR a due ingressi: due transistori p in serie tra V D D e l'uscita, con i gate collegati ad A e a B, e due transistori n in parallelo tra l'uscita e massa, anch'essi con i gate collegati ad A e a B. rete di pull-up transistori p rete di pull-down transistori n VDD Y ingressi VDD A B A B Y

A sinistra la struttura di una porta CMOS: la rete di pull-up, di transistori pp, collega l’uscita all’alimentazione, la rete di pull-down, di transistori nn, a massa. A destra la porta NOR a due ingressi: transistori pp in serie e transistori nn in parallelo.

In una rete i transistori in serie fanno un AND delle loro condizioni di conduzione, quelli in parallelo un OR. Le due reti di una porta sono duali: dove una ha due transistori in serie l’altra ne ha due in parallelo, comandati dagli stessi ingressi, e viceversa.

Teorema (reti duali)

Sia NN una rete di transistori nn costruita componendo in serie e in parallelo transistori comandati dagli ingressi, e sia cNc_N la funzione logica degli ingressi che vale 1 quando NN conduce. Sia NN^* la rete duale di transistori pp, ottenuta scambiando serie e parallelo. Allora NN^* conduce se e solo se NN non conduce. In una porta con NN come pull-down e NN^* come pull-up l’uscita è quindi sempre collegata a massa o a VDDV_{DD}, mai a tutte e due, e vale Y=cNY = \overline{c_N}.

Dimostrazione.

Per induzione sul numero di composizioni. Un transistore nn comandato da xx conduce quando x=1x = 1, quindi c=xc = x; il transistore pp duale conduce quando x=0x = 0, quindi c=xc^* = \overline{x}. Due reti in serie conducono se conducono entrambe, e la funzione è il prodotto logico; due reti in parallelo conducono se ne conduce almeno una, e la funzione è la somma logica.

Si supponga la tesi vera per N1N_1 e N2N_2, cioè cN1=cN1c_{N_1^*} = \overline{c_{N_1}} e cN2=cN2c_{N_2^*} = \overline{c_{N_2}}. Se NN è la serie di N1N_1 e N2N_2, allora NN^* è il parallelo di N1N_1^* e N2N_2^*, e per le leggi di De Morgan

cN=cN1+cN2=cN1cN2=cN.c_{N^*} = \overline{c_{N_1}} + \overline{c_{N_2}} = \overline{c_{N_1}\cdot c_{N_2}} = \overline{c_N} .

Se NN è il parallelo, NN^* è la serie, e cN=cN1cN2=cN1+cN2=cNc_{N^*} = \overline{c_{N_1}}\cdot\overline{c_{N_2}} = \overline{c_{N_1} + c_{N_2}} = \overline{c_N}. Per ogni combinazione degli ingressi conduce quindi una e una sola delle due reti. Quando conduce il pull-down l’uscita è a massa, cioè Y=0Y = 0 quando cN=1c_N = 1; altrimenti conduce il pull-up e Y=1Y = 1.

Fine della dimostrazione.

Il teorema dà un metodo di progetto. Si scrive la funzione negata come combinazione di AND e OR degli ingressi, la si traduce in serie e paralleli di transistori nn, e si costruisce la rete duale di transistori pp. Per esempio Y=AB+CY = \overline{A\cdot B + C}: nella rete di pull-down i transistori di AA e BB in serie, e quello di CC in parallelo alla serie; nella rete di pull-up i transistori di AA e BB in parallelo, e quello di CC in serie al parallelo. Sei transistori, contro i dieci di una NAND, una NOR e un invertitore.

La porta NAND e una porta complessa A sinistra la porta NAND a due ingressi: due transistori p in parallelo tra V D D e l'uscita Y, con i gate collegati ad A e a B, e due transistori n in serie tra l'uscita e massa, anch'essi comandati da A e da B. A destra una porta a tre ingressi che calcola Y uguale a NOT di A per B più C. In basso, tra l'uscita e massa, i transistori n di A e di B sono in serie tra loro e il transistore n di C è in parallelo alla serie. In alto, tra V D D e l'uscita, i transistori p di A e di B sono in parallelo tra loro e il transistore p di C è in serie al parallelo. ABABABCABC VDD VDD Y Y NAND Y = NOT(A·B + C)

A sinistra la porta NAND a due ingressi. A destra una porta complessa che calcola Y=AB+CY = \overline{A\cdot B + C} con sei transistori: le due reti sono duali.

Transistori in serie e in parallelo

I tempi di commutazione di una porta si stimano come quelli dell’invertitore, se i transistori che caricano o scaricano l’uscita si riducono a uno solo. Due transistori in parallelo, con gli stessi gate, source e drain, portano la somma delle correnti, e sono un transistore con k=k1+k2k = k_1 + k_2. Per la serie serve un conto.

Proposizione (transistori in serie)

Due transistori dello stesso tipo in serie, con i gate alla stessa tensione, la stessa soglia e le ipotesi del modello quadratico, portano la stessa corrente di un solo transistore con

1k=1k1+1k2,\frac{1}{k} = \frac{1}{k_1} + \frac{1}{k_2} ,

in zona ohmica come in saturazione.

Dimostrazione.

Si misurano le tensioni rispetto al source del transistore in basso, e si pone

F(V)=0Vmax(VGVTHv, 0)dv,F(V) = \int_0^V\max\left(V_G - V_{TH} - v,\ 0\right)dv ,

dove VGV_G è la tensione dei gate. Nella dimostrazione della corrente del MOSFET, integrando la corrente lungo il canale da un estremo a tensione VaV_a all’altro a tensione VbV_b, si ottiene I=2k[F(Vb)F(Va)]I = 2k\left[F(V_b) - F(V_a)\right]. La formula vale anche in saturazione: oltre il punto di strozzamento l’integrando è nullo, e FF resta costante. Per il transistore in basso, tra 00 e la tensione VmV_m del nodo intermedio, e per quello in alto, tra VmV_m e la tensione del drain VDV_D,

I2k1=F(Vm)F(0),I2k2=F(VD)F(Vm).\frac{I}{2k_1} = F(V_m) - F(0) , \qquad \frac{I}{2k_2} = F(V_D) - F(V_m) .

Sommando, la tensione intermedia sparisce:

I(12k1+12k2)=F(VD)F(0),I\left(\frac{1}{2k_1} + \frac{1}{2k_2}\right) = F(V_D) - F(0) ,

che è la corrente di un transistore con 1/k=1/k1+1/k21/k = 1/k_1 + 1/k_2, collegato tra 00 e VDV_D con il gate a VGV_G.

Fine della dimostrazione.

Con kk proporzionale a W/LW/L, due transistori uguali in serie sono un transistore lungo il doppio: come due resistori in serie. La dimostrazione tiene la soglia uguale nei due transistori; in realtà quello in alto ha il source sopra massa e, per l’effetto body, una soglia più alta, e la serie conduce un po’ meno.

Transistori in serie e in parallelo A sinistra due transistori n in serie, il drain del secondo collegato al source del primo, con i gate collegati insieme: equivalgono al transistore accanto, con k uguale a k 1 per k 2 diviso k 1 più k 2. A destra due transistori n in parallelo, con drain e source in comune e i gate alla stessa tensione G: equivalgono a un transistore con k uguale a k 1 più k 2. k1 k2 k1 k2 = = 1/k = 1/k1 + 1/k2 k = k1 + k2 G G G

Due transistori in serie con i gate alla stessa tensione equivalgono a un transistore con 1/k=1/k1+1/k21/k = 1/k_1 + 1/k_2; due transistori in parallelo a un transistore con k=k1+k2k = k_1 + k_2.

Con i transistori di riferimento, k=0,86k = 0{,}86 mA/V², VDD=3,3V_{DD} = 3{,}3 V e il carico di 134134 fF dell’articolo sui tempi, la stima per eccesso ln2CLVDD/k(VDDVTH)2\ln 2\,C_LV_{DD}/k(V_{DD} - V_{TH})^24141 ps per l’invertitore. In una NAND a due ingressi con transistori uguali la discesa dell’uscita passa per due transistori nn in serie, k/2k/2, e dura 8181 ps; la salita passa per un transistore pp se cambia un solo ingresso, 4141 ps, o per due in parallelo se scendono entrambi, 2020 ps. In una NAND a nn ingressi la discesa passa per nn transistori in serie, e per averla veloce come quella dell’invertitore i transistori nn si fanno nn volte più larghi. Nella NOR tocca ai transistori pp stare in serie, e sono già i più larghi: per questo le NOR con molti ingressi occupano molta area, e nei circuiti CMOS si preferiscono le NAND.

La porta complessa AB+C\overline{A\cdot B + C} ha tre tempi di salita diversi. Se dopo la commutazione A=0A = 0, B=1B = 1 e C=0C = 0, l’uscita si carica attraverso i transistori pp di AA e di CC in serie, k/2k/2, in 8181 ps; con A=B=C=0A = B = C = 0 attraverso il parallelo di AA e BB in serie a CC, k=2kk/3k=2k/3k = 2k\cdot k/3k = 2k/3, in 6161 ps. Il ritardo di una porta non è uno solo: dipende da quali ingressi cambiano.

Pass-transistor e transmission gate

Le reti CMOS collegano l’uscita all’alimentazione o a massa. Una strada diversa è usare i transistori come interruttori che lasciano passare un ingresso verso l’uscita: è la logica a pass-transistor. L’esempio più semplice è il multiplexer: con il segnale di selezione S=0S = 0 l’uscita è l’ingresso AA, con S=1S = 1 l’ingresso BB, cioè Y=AS+BSY = A\cdot\overline{S} + B\cdot S. In CMOS servono tre NAND e un invertitore, quattordici transistori; con due interruttori e un invertitore per S\overline{S} ne bastano pochi.

Un interruttore deve lasciar passare corrente nei due versi, perché il carico a volte va caricato e a volte scaricato, e il MOSFET lo fa: source e drain sono fisicamente uguali, e fa da source il terminale a tensione più bassa, per un transistore nn. Il body non può seguire il source, che cambia, e va collegato alla tensione più bassa del circuito. Un transistore nn solo, però, non passa bene tutti i livelli.

Proposizione (un transistore n passa male l'1)

Un transistore nn con il gate a VDDV_{DD} e un terminale a VDDV_{DD} carica un condensatore CC, inizialmente scarico, secondo

V(t)=VovkVovt/C1+kVovt/C,Vov=VDDVTH,V(t) = V_{ov}\,\frac{kV_{ov}t/C}{1 + kV_{ov}t/C} , \qquad V_{ov} = V_{DD} - V_{TH} ,

trascurando l’effetto body: la tensione tende a VDDVTHV_{DD} - V_{TH} e non la raggiunge mai. Lo stesso transistore scarica invece il condensatore fino a zero.

Dimostrazione.

Durante la carica il terminale a VDDV_{DD} è il drain e quello sul condensatore è il source, e VGS=VDDVV_{GS} = V_{DD} - V. Poiché VGD=0<VTHV_{GD} = 0 < V_{TH} il transistore è sempre saturo, e

CdVdt=k(VovV)2.C\frac{dV}{dt} = k\left(V_{ov} - V\right)^2 .

Separando le variabili, dV/(VovV)2=kdt/CdV/(V_{ov} - V)^2 = k\,dt/C, e integrando da V(0)=0V(0) = 0 si ottiene 1/(VovV)1/Vov=kt/C1/(V_{ov} - V) - 1/V_{ov} = kt/C, che risolta in VV dà la formula. Quando VV si avvicina a VovV_{ov}, VGSV_{GS} si avvicina alla soglia e la corrente si spegne. Nella scarica verso un terminale a zero il source è quel terminale, VGS=VDDV_{GS} = V_{DD} resta costante, e il transistore conduce finché la tensione del condensatore non è nulla.

Fine della dimostrazione.

Con l’effetto body le cose vanno peggio: il source sale, e con lui la soglia. Con i transistori di riferimento l’uscita si ferma a 2,482{,}48 V invece di 2,962{,}96 V. Il rimedio è la transmission gate: un transistore nn e un transistore pp in parallelo, comandati da segnali opposti. Il pp passa bene l’1 e male lo 0, il nn il contrario, e insieme passano entrambi i livelli senza perdite; per di più i due tempi di commutazione diventano simili, perché in ogni transizione lavorano i due transistori insieme.

Un interruttore MOS che porta un livello alto Grafico della tensione di un condensatore caricato attraverso un interruttore, da 0 a 3,3 volt, in funzione del tempo, da 0 a 200 picosecondi. Con una transmission gate, in blu, la tensione sale in fretta e arriva a V D D. Con un solo transistore n, in arancio, sale più piano e si ferma sotto la guida tratteggiata V D D meno V T H, 2,96 volt; tenendo conto dell'effetto body, curva arancione più bassa, si ferma intorno a 2,5 volt. Nell'animazione tre punti percorrono le tre curve. 050100150200 0123 VDD VDD − VTH transmission gate transistore n con l'effetto body Vout (V) t (ps)

Un condensatore di 134 fF caricato verso VDDV_{DD} attraverso un interruttore. Con un solo transistore nn la tensione tende a VDDVTHV_{DD} - V_{TH} e, per l’effetto body, si ferma ancora più in basso, a 2,482{,}48 V; con una transmission gate arriva a VDDV_{DD}, e metà dell’alimentazione è raggiunta in 20 ps invece di 66.

La logica a pass-transistor ha un limite di fondo: non rigenera i livelli. L’uscita è l’ingresso trasmesso, con i suoi disturbi, e una catena di interruttori somma le cadute e i rallentamenti. Per questo i blocchi a pass-transistor si alternano con porte CMOS, che riportano i livelli a zero e a VDDV_{DD}.

Un multiplexer a transmission gate e un invertitore tri-state A sinistra un multiplexer: l'ingresso A arriva a una transmission gate, un transistore n e un transistore p affiancati con drain e source in comune, e l'ingresso B a un'altra; le uscite delle due transmission gate sono collegate insieme all'uscita Y. Nella prima il gate del transistore n è comandato da S negato e quello del p da S; nella seconda il contrario. A destra l'invertitore tri-state: dall'alto, tra V D D e massa, un transistore p comandato da EN negato, un transistore p e un transistore n comandati entrambi dall'ingresso A, con l'uscita Y tra i due, e un transistore n comandato da EN. A B Y S S S S multiplexer VDD EN EN A Y tri-state

A sinistra un multiplexer a due ingressi con due transmission gate: con S=0S = 0 conduce la prima e Y=AY = A, con S=1S = 1 la seconda e Y=BY = B. A destra l’invertitore tri-state: con EN=1EN = 1 è un invertitore, con EN=0EN = 0 l’uscita è staccata sia dall’alimentazione sia da massa.

Il terzo stato

Una porta CMOS impone sempre la tensione della sua uscita. Due uscite collegate allo stesso filo, una alta e una bassa, formerebbero un percorso diretto dall’alimentazione a massa attraverso il transistore pp della prima e il transistore nn della seconda. Con i transistori di riferimento, simmetrici, il filo si fermerebbe a VDD/2V_{DD}/2, un livello ambiguo, con una corrente di 6,16{,}1 mA e 2020 mW dissipati.

Eppure è utile che più circuiti usino lo stesso filo, a turno: è il principio del bus, la linea condivisa su cui processore, memorie e periferiche si scambiano i dati. Chi non trasmette deve staccarsi, lasciando la linea in alta impedenza, un terzo stato indicato con ZZ in cui l’uscita non è collegata né a VDDV_{DD} né a massa.

L’invertitore tri-state ha un ingresso di abilitazione ENEN. Quattro transistori in serie: in alto un transistore pp comandato da EN\overline{EN}, poi i transistori pp e nn di un invertitore comandati dall’ingresso, in basso un transistore nn comandato da ENEN. Con EN=1EN = 1 i due transistori esterni conducono, e il circuito è un invertitore con due transistori in serie in ciascuna rete. Con EN=0EN = 0 sono spenti tutti e due, e l’uscita è isolata qualunque sia l’ingresso. Un protocollo del bus decide chi abilita la propria uscita e quando.

Esercizi risolti e commentati

Esercizio 1. Progettare una porta CMOS che calcoli Y=(A+B)CY = \overline{(A + B)\cdot C}.

Soluzione. La rete di pull-down deve condurre quando (A+B)C=1(A + B)\cdot C = 1: i transistori nn di AA e di BB in parallelo, e il parallelo in serie al transistore nn di CC. La rete di pull-up è la duale: i transistori pp di AA e di BB in serie, e la serie in parallelo al transistore pp di CC. Per il teorema delle reti duali l’uscita è (A+B)C\overline{(A + B)\cdot C}. Si verifica un caso: con A=1A = 1, B=0B = 0, C=1C = 1 conducono i transistori nn di AA e di CC, e l’uscita è 0; nella rete di pull-up il pp di AA è spento, quindi la serie è interrotta, e il pp di CC è spento: nessun percorso verso VDDV_{DD}.

Commento. Sei transistori. Con porte standard servirebbero una NOR, un invertitore e una NAND: dieci transistori. Le porte complesse fanno risparmiare area e ritardi, al prezzo di reti in serie più lunghe.

Esercizio 2. In una NAND a tre ingressi con i transistori nn del transistore di riferimento, quanto dura la discesa dell’uscita con il carico di 134 fF? Quanto devono essere larghi i transistori nn perché duri come nell’invertitore?

Soluzione. Tre transistori in serie equivalgono a uno con k/3k/3, e il tempo è tre volte quello dell’invertitore: 341=1223\cdot41 = 122 ps con la stima per eccesso. Per tornare a 4141 ps il transistore equivalente deve avere kk, cioè ciascun transistore 3k3k: larghezza 30 μ30\ \mum invece di 1010.

Commento. Allargare i transistori aumenta però la capacità che la porta presenta agli ingressi, e rallenta le porte che la pilotano. Oltre tre o quattro ingressi conviene spezzare una porta in più porte piccole.

Esercizio 3. Dove sta la soglia di commutazione di una NOR a due ingressi con i transistori di riferimento, kn=kp=0,86k_n = k_p = 0{,}86 mA/V², con i due ingressi collegati insieme? Quanto devono essere più larghi i transistori pp per riportarla a VDD/2V_{DD}/2?

Soluzione. Con gli ingressi uniti le reti diventano un invertitore equivalente: i due nn in parallelo danno kn=2kk_n' = 2k, i due pp in serie kp=k/2k_p' = k/2. Con la formula della soglia dell’invertitore CMOS e kp/kn=1/2\sqrt{k_p'/k_n'} = 1/2,

VM=VTH+12(VDDVTH)1+12=0,34+1,481,5=1,21 V.V_M = \frac{V_{TH} + \frac{1}{2}\left(V_{DD} - V_{TH}\right)}{1 + \frac{1}{2}} = \frac{0{,}34 + 1{,}48}{1{,}5} = 1{,}21\ \text{V} .

Per VM=VDD/2V_M = V_{DD}/2 serve kp=knk_p' = k_n', cioè kp/2=2knk_p/2 = 2k_n: i transistori pp vanno fatti quattro volte più larghi, oltre al fattore 2,82{,}8 già dovuto alla mobilità.

Commento. Un transistore pp di una NOR a due ingressi bilanciata è largo più di undici volte il transistore nn di un invertitore minimo. Con la NAND succede il contrario, ma sui transistori nn, che partono più stretti. È un altro motivo per cui le librerie di celle CMOS preferiscono le NAND.

Esercizio 4. Un transistore nn usato come interruttore porta a un invertitore CMOS di riferimento un 1 degradato, 2,482{,}48 V. L’invertitore legge ancora un 1? Consuma potenza statica?

Soluzione. L’ingresso supera VIH=1,98V_{IH} = 1{,}98 V, quindi l’uscita è bassa e il livello logico è corretto. Ma il transistore pp dell’invertitore ha VSG=3,32,48=0,82V_{SG} = 3{,}3 - 2{,}48 = 0{,}82 V, sopra la soglia di 0,340{,}34 V: è acceso. Con l’uscita quasi a zero, VSD3,3V_{SD} \approx 3{,}3 V e il transistore è saturo, con I=k(0,820,34)2=0,860,482=0,20I = k(0{,}82 - 0{,}34)^2 = 0{,}86\cdot0{,}48^2 = 0{,}20 mA. Il transistore nn, acceso con VGS=2,48V_{GS} = 2{,}48 V, assorbe questa corrente con una caduta piccola. L’invertitore dissipa 3,30,20=0,653{,}3\cdot0{,}20 = 0{,}65 mW di continuo.

Commento. Il bit è giusto, ma la porta consuma come un invertitore a carico resistivo. Per questo dopo un pass-transistor nn si mette una porta che rigenera il livello, o si usa una transmission gate, o si aggiunge un piccolo transistore pp che tira l’ingresso fino a VDDV_{DD} quando l’uscita dell’invertitore è bassa.

Esercizio 5. Due invertitori con i transistori di riferimento hanno le uscite sullo stesso filo: uno forza 1, l’altro 0. Calcolare la tensione del filo e la corrente.

Soluzione. Conducono il transistore pp del primo, con VSG=VDDV_{SG} = V_{DD}, e il transistore nn del secondo, con VGS=VDDV_{GS} = V_{DD}. Con transistori simmetrici, per simmetria, il filo sta a VDD/2=1,65V_{DD}/2 = 1{,}65 V. Il transistore nn ha VDS=1,65V_{DS} = 1{,}65 V, meno di VGSVTH=2,96V_{GS} - V_{TH} = 2{,}96 V, ed è in zona ohmica:

I=2k[2,961,651,6522]=1,73 mA/V23,52 V2=6,1 mA.I = 2k\left[2{,}96\cdot1{,}65 - \frac{1{,}65^2}{2}\right] = 1{,}73\ \text{mA/V}^2\cdot3{,}52\ \text{V}^2 = 6{,}1\ \text{mA} .

La potenza è 3,36,1=203{,}3\cdot6{,}1 = 20 mW.

Commento. Un conflitto sul bus spreca potenza e lascia la linea a un livello che nessuna porta legge con sicurezza. Se il pp fosse più debole del nn il filo scenderebbe verso lo 0: vincerebbe il transistore più forte, non il dato giusto. Le uscite tri-state e un protocollo che abilita un solo trasmettitore alla volta servono a evitarlo.

Hai trovato un errore o qualcosa che non funziona in questa pagina? Scrivi una segnalazione