Porte logiche combinatorie CMOS

Da Hacknowledge.

Abbiamo già introdotto la logica CMOS parlando dell'inverter. Comprendere l'inverter vuol dire comprendere l'ingrediente fondamentale per qualsiasi gate logico digitale CMOS più complesso. Come vedremo fra poco, infatti, qualsiasi gate logico in tecnologia CMOS è riconducibile allo schema elettrico di un inverter.

Indice

[modifica] Reti logiche combinatorie e sequenziali

Una rete logica combinatoria CMOS è una rete in cui la configurazione dei valori logici delle uscite (out1, out2 ... outm) in un qualsiasi istante dipende unicamente dalla configurazione degli ingressi in quel dato istante (in1, in2 ... inn). Sono reti logiche puramente combinatorie la ALU di un processore o di una calcolatrice.

In una rete logica sequenziale invece lo stato delle uscite in un determinato istante dipende sia dalla configurazione degli ingressi in quel determinato istante, sia dallo stato delle uscite in passato. Lo stato viene memorizzato generalmente in un registro di stato, e retroazionato fra l'uscita e gli ingressi. Una rete logica sequenziale consiste fondamentalmente di una rete logica combinatoria pura a cui viene aggiunto il registro di stato. Sono reti logiche sequenziali le memorie e i registri. [modifica] Logica CMOS statica

Una qualsiasi porta CMOS può essere schematizzata nel seguente modo:


Immagine:Cmos1.png


ovvero come il collegamento di due reti fra loro complementari: LA PUN (pull-up network) e la PDN (pull-down network), il cui compito è, rispettivamente, di portare il segnale di uscita alla tensione VDD (e quindi a un livello logico alto) o alla tensione di massa (e quindi ad un livello logico basso). Le due reti sono fra loro complementari, ovvero quando la rete di transistor della PUN è attiva non lo è la PDN e viceversa. Si intuisce quindi che quando la PUN è attiva esiste un solo cammino a bassa impedenza che collega la tensione di alimentazione VDD al nodo di uscita, che quindi viene portato ad un livello logico alto, e viceversa quando la PDN è attiva la carica sul nodo di uscita viene scaricata verso massa attraverso un cammino a bassa impedenza. Le due reti complementari sono così strutturate:

  • La PUN è composta da transistor PMOS
  • La PDN è composta da transistor NMOS

Ciò perché i PMOS sono degli 'uno forti', ovvero sono in grado di caricare la capacità parassita CL al nodo di uscita fino alla tensione VDD, mentre gli NMOS sono degli 'zero forti', ovvero riescono a scaricare completamente a massa la capacità parassita fino ad annullare completamente la tensione ai suoi capi. Con la tecnologia CMOS si possono quindi ottimizzare la robustezza e la caratteristica di una porta logica, dato che l'escursione logica è massimizzata (va da 0 a VDD). Notiamo anche qui che nel caso in cui sia la PUN sia la PDN abbiano un solo transistor ci riconduciamo al caso dell'inverter CMOS già considerato. [modifica] Progettazione di porte CMOS in logica statica

La progettazione di porte CMOS in logica statica è abbastanza intuitiva. Basta considerare un semplice principio: due NMOS in serie, ai quali sono applicati rispettivamente il segnale A e B, si comporteranno come un AND logico, in quanto faranno passare corrente verso il nodo di uscita solo se A*B=1, ovvero sia A che B sono a un livello logico alto, ossia maggiore della tensione di soglia dei transistor. Due NMOS in parallelo invece si comporteranno come un OR logico, in quanto faranno passare corrente verso il nodo di uscita se A+B=1, ovvero se almeno uno dei segnali applicati è maggiore della tensione di soglia del transistor. Allo stesso modo, due PMOS in serie implementeranno un NOR logico (passa corrente verso l'uscita solo se entrambi i segnali di ingresso sono nulli. Per De Morgan, !A * !B = !(A+B)), e due PMOS in parallelo invece implementeranno un NAND logico (sempre per De Morgan, !A + !B = !(A*B). Con questo in mente è possibile progettare qualsiasi porta logica in tecnologia CMOS, tenendo presente che, se la PDN implementa la funzione logica A, la PUN dovrà implementare la funzione logica complementare di A. Quindi si può cominciare, ad esempio, progettando la PDN, tenendo poi presente che per la complementarietà delle due reti la PUN si progetterà semplicemente come una 'PDN a specchio', ovvero usando lo stesso numero di transistor e tenendo presente che una serie di NMOS in PDN si traduce in un parallelo di PMOS in PUN, e analogalmente un parallelo di NMOS corrisponde a una serie di PMOS. Quindi, per progettare una porta CMOS a N ingressi occorreranno 2N transistor.

Ecco ad esempio lo schema elettrico di una porta CMOS che implementa la funzione logica NAND:


Immagine:Nand1.png


Quando entrambi i segnali sono alti i due PMOS della PUN sono spenti (dato che si accendono solo per valori di tensione minori della tensione di soglia in modulo), quindi il nodo di uscita non è collegato all'alimentazione. Invece, entrambi i transistor NMOS della rete PDN sono accesi (dato che si accendono se entrambi i valori delle tensioni di gate sono maggiori della loro tensione di soglia), creando quindi un cammino a bassa impedenza fra il nodo di uscita e la massa, scaricando le capacità parassite sul nodo e portando quindi la sua tensione a zero (livello logico basso). Quando invece almeno uno dei segnali è nullo fra il nodo e la massa c'è un circuito aperto, dato che almeno uno dei due transistor è spento, mentre invece fra la tensione di alimentazione e il nodo di uscita c'è sempre almeno un cammino a bassa impedenza, dato che almeno uno dei due transistor PMOS è acceso, facendo passare corrente. L'uscita si porta quindi a una tensione pari a VDD, e quindi ad un livello logico alto. Vediamo quindi che, come previsto dalle regole per la progettazione di gate logici CMOS, la rete PDN implementa un AND logico, mentre la PUN, in modo complementare, implementa un NAND logico.

Analogalmente è possibile progettare qualsiasi altra funzione logica più o meno complessa, tenendo presente il solito principio:

  • NMOS in serie -> AND logico
  • NMOS in parallelo -> OR logico
  • PMOS in serie -> NOR logico
  • PMOS in parallelo -> NAND logico

Seguendo questi principi si progetta una delle due reti, quindi si progetta l'altra semplicemente in modo speculare alla prima.

Si noti che in tecnologia CMOS posso realizzare solo porte invertenti (NAND, NOR, XNOR...). Per realizzare porte non invertenti (AND, OR, XOR...) devo mettere un inverter in cascata alla mia porta invertente.

[modifica] Prestazioni

I tempi di propagazione di una porta logica CMOS, e quindi le sue prestazioni, dipendono fortemente dalla configurazione degli ingressi. Il modello più usato nel calcolo delle prestazioni delle reti CMOS è quello di usare per ogni transistor un modello RC, ovvero considerare per ogni transistor la sua resistenza interna R ai grandi segnali (dipendente dalla tensione applicata) e la capacità del carico connesso CL. Dato che consideriamo per ora una logica CMOS statica, ignoriamo il contributo dato dalle capacità parassite interne di ogni transistor.

Applichiamo ad esempio il modello RC al gate NAND in logica CMOS visto poco fa. A ogni PMOS sostituiamo il modello RC che ci fornisce la costante di tempo RPCL, e in modo analogo per gli NMOS RNCL. Se entrambi gli ingressi sono bassi, entrambi i PMOS sono accesi mentre la PDN è spenta, quindi, applicando il modello RC, il tempo di propagazione sarà dato da 0.69*(RP/2)*CL (0.69 in quanto per definizione il tempo di propagazione è pari al tempo necessario affinché il segnale raggiunga il 50% del valore finale, e risolvendo la rete RC il logaritmo di 2 è circa uguale a 0.69). Il tempo di propagazione è funzione della metà della resistenza interna dei PMOS, in quanto le resistenze interne sono in parallelo fra loro. Notiamo fin da subito che, essendo la resistenza interna proporzionale alla tensione applicata, un abbassamento della tensione di alimentazione VDD comporta un miglioramento dei tempi di propagazione, ma un eccessivo abbassamento allo stesso tempo rischia di degradare la caratteristica statica del circuito, alterando le uscite logiche. Quando invece un solo PMOS della rete è acceso, il tempo di propagazione diventa pari a 0.69*RP*CL. Notiamo che in questo caso il tempo è doppio rispetto a quello in cui entrambi i PMOS sono accesi, in quanto l'altro PMOS si comporta come un circuito aperto e quindi dovremo considerare una sola resistenza interna. Quest'osservazione ci fa notare che, anche se a entrambe le configurazioni degli ingressi corrisponde un'uscita logica alta, i tempi in cui i segnali si propagano all'uscita cambiano sostanzialmente in funzione dei valori logici che sono agli ingressi della porta.

Studiamo in modo analogo il comportamento della PDN. Quando entrambi i segnali di ingresso sono alti, gli NMOS della rete si accendono, e considerando un modello RC avremo che il tempo di propagazione sarà pari a 0.69*(RN*2)*CL, in quanto le due resistenze interne degli NMOS sono in serie. Questo ci fa notare che aggiungere NMOS in serie alla rete PDN ha come effetto quello di degradare i tempi di propagazione nelle commutazioni alto->basso. Nota bene: nel calcolo dei tempi di propagazione del segnale nel gate si considera sempre la configurazione peggiore degli ingressi, ovvero quella con tempo di propagazione massimo.

Consideriamo ora un gate logico NOR. Un gate NOR è duale rispetto ad un gate NAND (due PMOS in serie nella PUN, due NMOS in parallelo nella PDN), e produce sull'uscita un valore logico alto solo se tutti gli ingressi sono bassi. In questo caso, il parallelo fra NMOS ci riconduce al caso precedente (caso peggiore per un solo NMOS acceso, e quindi tempo di propagazione alto->basso pari a 0.69*RN*CL), mentre invece la serie di PMOS ci riconduce ai tempi di propagazione visti sopra (tempo di propagazione basso->alto pari a 0.69*(RP*2)*CL). Tuttavia, la mobilità delle lacune è minore rispetto a quella degli elettroni, ragion per cui una serie di PMOS è generalmente più lenta di una serie di NMOS. Per questo, nella progettazione di circuiti digitali generici puntando all'ottimizzazione dei tempi è consigliabile ricorrere a logiche NAND piuttosto che a logiche NOR. Anche le attuali memorie flash (chiavi USB o simili) attualmente sono basate su logiche NAND.

Per chiarire un po' le idee, consideriamo il tempo di transizione alto->basso di un gate NAND CMOS statico a 2 ingressi prendendo il corrispondente modello RC:


Immagine:Nand2.png


Il tempo di propagazione alto->basso attraverso il gate sarà dipendente dalla PDN (in quanto i transistor della PUN saranno spenti), e, risolvendo la rete RC del PDN, avremo


Immagine:E1952507436b881fc954df6d9b14c5a5.png


Nel caso in cui la resistenza dei transistor della PDN sia la stessa, la formula diventa


Immagine:759f59636ace6035dbe25e9e29802ba2.png


Si nota, specie dalla prima scrittura, che il valore che ricorre in tutti i monomi è R1, ovvero la resistenza del transistor più vicino a massa. Questo fattore diventa cruciale, specie al crescere della complessità della porta logica o all'aumentare degli ingressi. Si nota quindi che, al crescere del fan-in dei gate CMOS e della complessità del circuito, diventa cruciale in fase di progettazione e ottimizzazione fare uno scaling delle dimensioni dei transistor, ovvero progettare i transistor della PDN più vicini alla massa con una larghezza maggiore, per ridurre la resistenza interna (a scapito di una maggiore capacità parassita interna), quindi ridurre la larghezza man mano che ci si avvicina alla PUN. L'ottimizzazione delle prestazioni di gate CMOS passa sempre per questo compromesso: una maggiore larghezza di canale del dispositivo riduce la resistenza interna, ma aumenta le capacità parassite e l'area occupata dal gate. Trovare il giusto compromesso è uno dei principali obiettivi del progettista digitale.

[modifica] Svantaggi della tecnologia

Abbiamo esaminato i principali vantaggi della tecnologia CMOS statica, che l'hanno resa la spina dorsale dell'intera elettronica digitale moderna (consumo statico di potenza nominalmente nullo, alta robustezza e margini di rumore, elevato guadagno, grande versatilità...). Ma dopo il discorso sulle prestazioni cominciano anche a profilarsi gli svantaggi della tecnologia, per quanto siano spesso considerati un piccolo prezzo da pagare per avere caratteristiche di affidabilità, robustezza e bassi consumi:

  • Numero elevato di transistor. Proprio per la sua caratteristica complementare un gate CMOS a N ingressi necessita di 2N transistor per essere realizzato. Questo influisce notevolmente sulla complessità del circuito, sull'area occupata e sulla somma delle capacità intrinseche.
  • La connessione in serie di NMOS, e in particolare di PMOS, introduce un ritardo nei tempi di propagazione del segnale.

[modifica] Consumo di potenza

Abbiamo visto che il consumo statico di potenza di un gate CMOS è praticamente nullo, dato che in condizioni statiche (ovvero in assenza di transizioni) l'uscita è connessa o alla tensione di alimentazione o a VDD, non viene effettuato alcun lavoro elettrico aggiuntivo e l'alimentazione non scarica mai a massa. L'assorbimento di potenza diventa però una variabile da considerare nelle transizioni del valore logico in uscita. In questi casi, il consumo di potenza si definisce come


Immagine:13bca02c2c7d066b9274825f07cfef00.png


dove CL è la capacità di carico, VDD è la tensione di alimentazione (si noti ancora che il consumo di potenza diminuisce diminuendo le tensioni di alimentazione), f è il lavoro elettrico del circuito (che, essendo il consumo statico di potenza nullo, è proporzionale al tempo di propagazione) e α è il fattore di attività, costante legata all'architettura della porta logica che dipende da due fattori: uno statico, che dipende dalla logica della porta, e uno dinamico, dipendente dalla temporizzazione del circuito. Ignorando per ora gli effetti dinamici, possiamo definire il parametro α come la probabilità p0 che in un dato istante l'uscita del circuito sia associata ad uno 0 logico moltiplicata per la probabilità p1 che l'uscita commuti a 1 nell'istante successivo:


Immagine:Ab3be991f126ff19d90b9b652eb8069a.png


Ovviamente in tale formulazione si dà per scontato che la configurazione di un certo ingresso sia indipendente da quella di un altro ingresso. Nel caso di una porta NOR, che ha la seguente tabella di verità


ABout
001
010
100
110


il fattore di attività, in base ai contributi statici, si calcola come


Immagine:3bed4e3ae7112bc852984f5c9b80071f.png

Strumenti personali