Logica Combinatoria Courtesy of Massimo Barbaro Logica combinatoria Un blocco di logica puramente combinatoria è un blocco con N variabili di ingresso e M variabili di uscita che sono funzione (booleana) degli ingressi presenti in un certo istante. Ad ogni istante le uscite dipendono solo dagli ingressi in quell’istante e NON dalla storia passata del circuito Courtesy of Massimo Barbaro Logica combinatoria vs. Sequenziale In Logic In Circuit Out Logic Out Circuit State (a) Combinational Output = f(In ) (b) Sequential Output = f(In, Previous In) Courtesy of Massimo Barbaro Stili di progetto Logica statica: l’uscita è sempre connessa all’alimentazione o alla massa (es. static CMOS, pseudo-NMOS, pass transistor). Esiste cioè sempre un percorso diretto a bassa impedenza fra una delle alimentazioni ed il nodo di uscita. Logica dinamica: il nodo di uscita non è sempre connesso ad una delle alimentazioni e il dato viene temporaneamente immagazzinato in forma di carica su una capacità (es. np, domino) Courtesy of Massimo Barbaro Logica Combinatoria CMOS STATICO Courtesy of Massimo Barbaro Logica statica CMOS Dall’inverter CMOS è facile ottenere porte logiche più complesse con gli stessi vantaggi del singolo inverter: VOH=VDD , VOL=0 Nessuna dissipazione di potenza statica Ampi margini di rumore Tempi di salita e discesa confrontabili (con opportune regole di progetto) Courtesy of Massimo Barbaro Esempi di gate CMOS Courtesy of Massimo Barbaro Logica statica CMOS (1) Come si capisce la funzione logica implementata da un circuito a transistor? Si considera ogni possibile combinazione di ingresso, ossia ogni riga della tabella di verità. Per ogni combinazione si sostituisce ad ogni NMOS: un circuito APERTO se l’ingresso è 0 un circuito CHIUSO se l’ingresso è 1 ad ogni PMOS: un circuito CHIUSO se l’ingresso è 0 un circuito APERTO se l’ingresso è 1 Si verifica, dal circuito risultante, se l’uscita è connessa a massa (0) oppure a VDD (1) Si riporta il valore logico nella tabella della verità Courtesy of Massimo Barbaro Logica statica CMOS (2) I pmos ed nmos vengono usati come interruttori pilotati in tensione (tensione sul gate), realizzando delle funzioni logiche. Affinchè il gate combinatorio sia veloce ed affidabile, occorre che questi interruttori abbiano le seguenti caratteristiche: ON Resistenza molto bassa OFF Resistenza Elevata, quasi come un circuito aperto. Consideriamo l’NMOS G Ron= ?? ROff = Grande D S La RON = RDS dipende fortemente dalla regione in cui si trova lo nmos (ovvero dalla VDS e dalla VGS) Courtesy of Massimo Barbaro Logica statica CMOS (3) Nota: Le giunzioni di diffusione devono sempre essere polarizzate in inversa. Nel caso del pmos, il terminale di bulk è collegato al potenziale piu basso (GND). Il terminale di Source deve trovarsi ad un potenziale piu basso del Drain Quando la VDS > VGS – VTN l’NMOS entra in saturazione e via via che VDS aumenta, il transistor (RON = RDS ) è sempre piu resistivo. Come evidenziato nella slide precedente, vogliamo interruttori che siano caratterizzati da una bassa impedenza durante il stato di ON, quindi è necessario farli lavorare in regione lineare (stato ON), oppure in cut-off (stato OFF), passando quindi dalla regione di staurazione. Courtesy of Massimo Barbaro Logica statica CMOS (4) Abbiamo gia visto nell’inverter che il pmos è utilizzato per caricare il nodo di uscita (portarlo a VDD), mentre lo nmos per scaricalo (portarlo a GND) Infatti gli nmos durante la scarica sono caratterizzati da una bassa impedenza tra drain e source, in quanto man mano che la tensione sull uscita diminuisce (a causa della scarica), lo nmos diventa sempre piu conduttivo velocizzando ulteriormente la scarica. Analogamente i pmos durante la carica convergono in regione lineare, quindi mano a mano che la tensione tra source e drain diminuisce (ovvero via via che il nodo di uscita si carica ed aumenta il suo potenziale rispetto alla massa), diminuisce la sua resistenza equivalente (tra drain e source) velocizzando la carica. Courtesy of Massimo Barbaro Logica statica CMOS (4) Ne deriva che i pmos sono i migliori candidati per caricare il nodo di uscita, mentre gli nmos per scaricarlo. t=0 VCL(t) D VDD 0 ∙ V(t=0) = VDD S VDD t VDD t=0 D VCL(t) VDD S V(t=0) = 0V VDD -VTN 1 t Courtesy of Massimo Barbaro Logica statica CMOS (5) Cosa succede se usiamo gli NMOS per caricare il nodo d’uscita e i PMOS per scaricarli? t=0 VCL(t) D VDD V(t=0) = VDD S VDD |VTP| t NMOS diventa saturo e poi si spegne VDD t=0 PMOS diventa saturo e poi si spegne D VCL(t) VDD S VDD -VTN V(t=0) = 0V t Courtesy of Massimo Barbaro Logica statica CMOS (6) VDD PUN VDD S D VDD 0 VDD VGS D S CL VDD 0 PDN VDD D S CL 0 VDD - VTn CL VGS VDD |VTp| S CL D Courtesy of Massimo Barbaro Logica statica CMOS (6) Riassumendo abbiamo due comportamenti distinti a seconda del potensiale che vogliamo trasferire al nodo di uscita. NMOS Forti nello scaricare (Strong PULL DOWN) Deboli nel caricare (Weak PULL UP) Uno logico sporco PMOS Forti nello caricare (Strong PULL UP) Deboli nel scaricare (Weak PULL DOWN) Zero logico sporco Courtesy of Massimo Barbaro Porta NAND(1) PMOS accesi, NMOS spenti VDD A A B Z 0 0 1 0 1 1 1 0 1 1 1 0 B A Z Z B Z è disconesso da massa e connesso a VDD dunque l’uscita è un 1 logico Courtesy of Massimo Barbaro Porta NAND(2) PMOS A, NMOS B accesi, PMOS B, NMOS A spenti VDD A A B Z 0 0 1 0 1 1 1 0 1 1 1 0 B A Z Z B Z è disconesso da massa e connesso a VDD dunque l’uscita è un 1 logico Courtesy of Massimo Barbaro Porta NAND(3) PMOS A, PMOS B accesi, NMOS B, NMOS A spenti VDD A A B Z 0 0 1 0 1 1 1 0 1 1 1 0 B A Z Z B Z è disconesso da VDD massa e connesso a massa dunque l’uscita è uno 0 logico Courtesy of Massimo Barbaro Porta NAND La porta in figura è una NAND perché l’uscita è uguale a 0 solo se A e B sono entrambi 1 (quando i 2 NMOS del PDN sono entrambi in conduzione). In tale condizione il PUN è sicuramente interdetto Se anche uno solo fra A e B è pari a 0 il percorso verso massa si interdice e si chiude uno dei due percorsi verso VDD quindi l’uscita è 1 VDD A B ∙ A B Courtesy of Massimo Barbaro Porta NOR La porta in figura è una NOR perché l’uscita è uguale a 1 solo se A e B sono entrambi 0 (quando i 2 PMOS del PUN sono entrambi in conduzione). In tale condizione il PDN è sicuramente interdetto Se anche uno solo fra A e B è pari a 1 il percorso verso VDD si interdice e si chiude uno dei due percorsi verso massa quindi l’uscita è 0 VDD B A A B Courtesy of Massimo Barbaro Logica statica CMOS Una generica porta CMOS ha la struttura: Courtesy of Massimo Barbaro Caratteristiche logica CMOS PUN (Pull-Up Network): è una rete di interruttori PMOS che connettono l’uscita a VDD in corrispondenza delle combinazioni di ingresso per cui la funzione è F(…)=1 PDN (Pull-Down Network): è una rete di interruttori NMOS che connettono l’uscita a 0 in corrispondenza delle combinazioni di ingresso per cui la funzione è F(…)=0 Le due reti sono complementari, ossia quando è aperta una l’altra è chiusa e viceversa. Questo evita che ci siano percorsi diretti fra alimentazione e la massa Courtesy of Massimo Barbaro Interruttori NMOS X X A A B B Y Y=X SE A=1 E B=1 (A•B) Y Y=X SE A=1 O B=1 (A+B) Courtesy of Massimo Barbaro Interruttori PMOS X X A A B B Y Y=X SE A=0 E B=0 (A’•B’) Y Y=X SE A=0 O B=0 (A’+B’) Courtesy of Massimo Barbaro Generica porta CMOS Una generica porta CMOS può essere implementata partendo dall’espressione algebrica o dalla tabella di verità. La PDN deve essere tale da chiudere il percorso a massa per le righe in cui F(…)=0 e la PUN tale da chiudere il percorso a VDD per quelle in cui F(…)=1 Per la dualità delle due reti (teorema di DeMorgan) ogni volta che i transistor sono in serie nella PDN sono in parallelo nella PUN e viceversa Si può sempre partire dall’implementazione della sola PDN per poi ricavare la PUN oppure viceversa Non tutte le funzioni sono direttamente implementabili, in particolar modo le porte CMOS sono sempre invertenti (per fare una AND è necessario implementare una NAND con un inverter in cascata) Courtesy of Massimo Barbaro Implementazione di una porta CMOS La PUN è funzione soli segnali negati perché è composta da switch PMOS (si ottiene dalla PDN attraverso il teorema di DeMorgan) Quando G (solo funzione di AND e OR e dei segnali NON negati) è vera la PDN cortocircuita l’uscita a massa Courtesy of Massimo Barbaro Implementazione di una porta CMOS Realizzando la PDN si è in grado di implementare (sono NMOS) una qualsiasi funzione G di soli operatori AND e OR PDN: G(x1,x2,…,xN,+,•) es: Quando G=1 l’uscita è connessa a massa quindi F=0 allora: F(x1,x2,…,xN)=G’(x1,x2,…,xN,+,•) es: G=AB+CD+F(A+B) F=[AB+CD+F(A+B)]’) Il PUN invece implementa direttamente la funzione (connette l’uscita a 1) ma può contenere solo operatori NOR e NAND (quelli implementabili con switch PMOS) F(x1 ’,x2 ’,…,xN’,+,•)= F’(x1,x2,…,xN, •, +) = G(x1,x2,…,xN, •, +) Dualità del PDN e PUN Courtesy of Massimo Barbaro Esempio D PUN ∙ C A B ̅ ∙ Implementabile con un PDN (le OR sono NMOS in parallelo, le AND sono NMOS in serie) D B C PDN A Courtesy of Massimo Barbaro Esempio ∙ ̅ ∙ C Funzione di sole OR e AND di segnali negati Implementabile con un PUN (le OR di segnali negati sono PMOS in parallelo, le AND di segnali negati sono PMOS in serie) PUN ̅ A B A D B C PDN D Courtesy of Massimo Barbaro Procedura di sintesi (1) Si considera la forma della funzione: Se si tratta di un funzione NEGATA di sole variabili NON negate ( Z = F(x1,x2,…,xN,+,•)’ ): Si implementa una PDN Se si tratta di un funzione NON NEGATA di sole variabili negate ( Z = F(x1’,x2’,…,xN’,+,•) ): Si implementa una PUN Scelto il tipo di rete da realizzare si passa alla sua implementazione per mezzo di transistor (interruttori) Courtesy of Massimo Barbaro Procedura di sintesi (2) Per la realizzazione di una PDN (PUN) Si parte dall’operatore logico a precedenza minore (tenendo conto delle parentesi) Se si tratta di una OR bisogna scegliere fra due possibili strade quindi si crea una biforcazione con due percorsi in parallelo Se si tratta di una AND bisogna invece chiudere il percorso solo quando entrambe le condizioni sono vere quindi si mettono i rispettivi transistor in serie Si procede allo stesso modo passando via via agli operatori a maggiore precedenza Realizzata la rete PDN (PUN) per dualità si realizza la rete complementare PUN (PDN), mettendo in parallelo i blocchi che erano in serie e mettendo in serie ciò che era in parallelo. Courtesy of Massimo Barbaro Procedura di sintesi (3) Tornando all’ esempio: (1) Implemento una PDN perché devo portare l’uscita a 0. (2) Seleziono il primo operatore da applicare. E’ una disgiunzione quindi lo realizzo creando un bivio tra due possibili percorsi. (3) Disgiunzione: ramificazione del circuito che si divide nei due possibili percorsi. percorsi corrispondenti alle due possibili opzioni. (5) Per un blocco corrispondente a più variabili ripeto la procedura dall’inizio ∙ (4) Se un blocco contiene una sola variabile corrisponde ad un transistor con il gate pilotato dalla variabile. Courtesy of Massimo Barbaro Procedura di sintesi (4) (7) Seleziono il primo operatore da applicare. E’ una AND quindi corrisponde a due percorsi che devono essere chiusi contemporaneamente (serie). (9) Per un blocco corrispondente a più variabili ripeto la procedura dall’inizio (6) Ripeto la procedura per il sottoblocco rimanente. (8) Se un blocco contiene una sola variabile corrisponde ad un transistor con il gate pilotato dalla variabile. (10) Procedo con i blocchi rimanenti. Se in un blocco ci sono più variabili ma un solo tipo di operatore (come nel caso in esempio) si sostituisce direttamente con un parallelo (se l’operatore è la OR) o serie (se l’operatore è la AND) di tanti transistor quante sono le variabili Courtesy of Massimo Barbaro Procedura di sintesi (5) (11) Si procede adesso, PER DUALITA’, alla realizzazione della PUN. (12) Come si vede, tutti gli operatori AND sono diventati OR e viceversa. La forma finale è quella di una PUN perché funzione NON NEGATA di variabili negate. Courtesy of Massimo Barbaro Esempio Funzione (non negata) di sole OR e AND: non è implementabile p né con un PUN né con un PDN A Ecco perché è preferibile implementare una generica funzione con sole NAND e NOR Courtesy of Massimo Barbaro AOI Implementazione diretta di 2 livelli di logica con un solo blocco CMOS statico: ∙ ∙ And-Or-Invert L’implementazione diretta usa solo 8 transistor anzichè i 2(4+2)+4+2=18 ( due NAND + INVERTER e una NOR + INVERTER) di una implementazione puramente logica Courtesy of Massimo Barbaro OAI Implementazione diretta di 2 livelli di logica con un solo blocco CMOS statico: ∙ Or-And-Invert L’implementazione diretta usa solo 8 transistor anzichè i 2(4+2)+4+2=18 ( due NAND + INVERTER e una NOR + INVERTER) di una implementazione puramente logica Courtesy of Massimo Barbaro Dimensionamento Un’opportuna tecnica di dimensionamento consente di avere caratteristiche statiche e dinamiche ottimali In particolare è desiderabile avere delle caratteristiche di trasferimento simmetriche e dei tempi di propagazione confrontabili nelle due possibili commutazioni (HL e LH) Da cosa dipendono i tempi di propagazione? Courtesy of Massimo Barbaro Tempi di propagazione (1) Come nel caso del singolo inverter, anche per una generica porta CMOS è possibile calcolare i tempi di propagazione facendo riferimento ad un modello semplificato con una capacità di carico CL fra uscita e massa e delle resistenze equivalenti che rappresentino i MOS Per ottenere la capacità CL che conterrà i contributi di tutte le capacità parassite nei vari nodi si sfruttano le tecniche viste per l’inverter (l’uso del teorema di Miller per trasformare le capacità gate/drain in capacità drain/massa) Courtesy of Massimo Barbaro Tempi di propagazione (2) La capacità di carico ottenuta deve poi essere caricata o scaricata dalla rete di pull-up o pull-down che si è attivata Si fa riferimento al caso peggiore (worst case) ossia a quelle commutazioni che implicano la presenza di un solo percorso conduttivo per la carica o scarica della capacità Si calcola il transistor equivalente (sfruttando serie e paralleli) corrispondente al percorso attivato e poi si applica la formula per calcolare il tempo di propagazione classico dell’inverter Courtesy of Massimo Barbaro Serie e parallelo di MOS Nel seguito faremo le ipotesi semplificative (solo parzialmente vere a causa dell’effetto body ed altri effetti del secondo ordine): K MOS in serie con W=W0 e L=Lmin sono equivalenti ad un MOS di lunghezza L=KLmin e W=W0 o ad un MOS con L=Lmin e W=W0/K (K volte più resistivo) K MOS in paralello di larghezza W=W0 sono equivalenti ad un solo MOS con W=KW0 (K volte più conduttivo) Serie di MOS Parallelo di MOS Courtesy of Massimo Barbaro Modello del primo ordine In un modello del primo ordine si può pensare che tutti i MOS in serie (o parallelo) lungo un percorso si combinino in un solo MOS equivalente di W/L opportuna, avente quindi una certa resistenza equivalente (Req) La capacità equivalente sarà la somma della capacità parassite presenti su tutti i nodi attraversati dal percorso di scarica (Ceq) Identificate resistenza e capacità equivalente si può calcolare il tempo di propagazione con la solita formula: tp=0.69ReqCeq Courtesy of Massimo Barbaro MOS in serie Il nodo in comune è equipotenziale (silicio fortemente drogato, quasi metallico), quindi è come se i due canali fossero esattamente uno dopo l’altro ossia se ci fosse un unico transistor ma lungo il doppio. Questo ovviamente a patto che le larghezze siano le stesse altrimenti avremo in serie due canali differenti quindi non si potrebbe equiparare la struttura ad un singolo MOS. Courtesy of Massimo Barbaro MOS in parallelo Allo stesso potenziale: come un cortocircuito Se: i source e i drain sono cortocircuitati tra loro e i gate sono allo stesso potenziale (come se fossero cortocircuitati) Allora è come se i due MOS fossero affiancati fra loro. In tal caso sarebbero equivalenti ad un singolo MOS di larghezza doppia. Questo ovviamente a patto che le lunghezze siano le stesse altrimenti avremmo in parallelo due canali differenti, quindi non si potrebbe equiparare la struttura ad un singolo MOS Courtesy of Massimo Barbaro Esempio: NAND a 2 ingressi: tpHL VDD A SPa Calcolo di tpHL (scarica) B SPb ∙ SNa A SNb B RA CL RB Ceq =CL Se gli SN sono Uguali Req = RN = RA + RB = 2ReqN Si considera la somma di tutte di le resistenze attraversate e la somma della capacità di tutti i nodi che devono essere scaricati (Trascuriamo i nodi interni) tp=0.69ReqCeq Courtesy of Massimo Barbaro Esempio: NAND a 2 ingressi: tpLH VDD A SPa Calcolo di tpLH (Carica) B SPb ∙ SNa A SNb B Reqp = RA, RB, RA // RB Ceq =CL Req = RP = RA , RB , RA // RB Si considera la somma di tutte di le resistenze attraversate e la somma della capacità di tutti i nodi che devono essere scaricati (Trascuriamo i nodi interni) Courtesy of Massimo Barbaro Dimensionamento (1) Allora per fare in modo di equalizzare i tempi di salita e discesa (di caso peggiore) bisogna fare in modo che ciascun percorso di salita (costituito da PMOS) abbia la stessa resistenza equivalente di ciascun percorso di discesa (costituito da NMOS). Bisogna equalizzare ciascun percorso singolarmente perché il caso peggiore è quello in cui un solo percorso è attivo. Ovviamente se più percorsi fossero attivi contemporaneamente il tempo di propagazione sarebbe minore ma è necessario prevedere che il circuito funzioni correttamente nella situazione più svantaggiosa. Courtesy of Massimo Barbaro Dimensionamento Ricordando che la resistenza equivalente è data dalla somma delle singole resistenze e che ogni resistenza è inversamente proporzionale a kn (kp) bisognerà equalizzare sia il k degli NMOS a quello di un NMOS singolo a dimensione minima (basta agire sulle W) che quello dei PMOS (in questo caso per dimensionare bisogna anche tenere conto della diversa mobilità dei PMOS). Courtesy of Massimo Barbaro Calcolo di Ron La Ron è sicuramente inversamente proporzionale alla W ed alla mobilità del transistor (visto che la ID compare al denominatore) Perciò a parità di W la Ron di un pmos è circa due volte quella di un nmos Per avere un pmos ed un nmos con Ron circa equivalenti bisogna dimensionare, come nell’inverter, Wp=2Wn in modo da compensare con la Wp la minore mobilità delle lacune Courtesy of Massimo Barbaro Tempo di propagazione (1) Come visto nell’esempio della NAND per fare in modo che i tempi della commutazione HL e LH siano uguali è necessario dimensionare i PMOS e gli NMOS in modo che 2Rn=Rp Per fare questo è necessario dimensionare gli NMOS con W=2 in modo che la loro serie sia equivalente ad un NMOS di W=1 A questo punto è necessario dimensionare i PMOS con W=2 in modo che siano equivalenti ad un NMOS con W=1 Courtesy of Massimo Barbaro Tempo di propagazione (2) 3 A=B=10 2,5 Voltage [V] 2 A=1 0, B=1 1,5 A=1, B=10 1 0,5 0 -0,5 0 100 200 300 time [ps] Tp diversi in quanto abbiamo Trascurato la capacità dei nodi interni 400 Input Data Pattern Delay (psec) A=B=01 67 A=1, B=01 64 A= 01, B=1 61 A=B=10 45 A=1, B=10 80 A= 10, B=1 81 NMOS = 0.5m/0.25 m PMOS = 0.75m/0.25 m CL = 100 fF Courtesy of Massimo Barbaro Dimensionamento ottimo (1) Il dimensionamento finale è: Bisogna avere sempre in mente il caso peggiore (worst-case). In questo esempio due sono sempre in serie, mentre i PMOS possono condurre singolarmente o contemporaneamente. Ovviamente se capita che i due PMOS siano entrambi accesi il tempo di propagazione sarà ulteriormente minore Courtesy of Massimo Barbaro Dimensionamento ottimo (2) In generale si fa in modo che ciascun percorso di NMOS verso massa sia equivalente ad un NMOS con W=1 e che ciascun percorso di PMOS verso l’alimentazione sia equivalente ad un PMOS con W=2 (che è poi equivalente ad un NMOS con W=1). Il rapporto di 2 fra PMOS e NMOS non è esatto (il rapporto fra le mobilità degli NMOS e dei PMOS è leggermente maggiore) ma utile per rendere tempi abbastanza simili senza occupare troppa area. Courtesy of Massimo Barbaro Fan-In e Fan-Out Porte CMOS con elevato fan-in diventano rapidamente poco pratiche. Infatti il numero totale di MOS è pari a 2N (con N numero di ingressi) quindi all’aumentare degli ingressi aumenta rapidamente l’area All’aumentare degli ingressi aumentano anche i transistor in serie e quindi la porta diventa più lenta (Ron più grandi). Questo fenomeno è solo in parte risolvibile con la tecnica di dimensionamento vista, dato che all’aumentare della W dei mos aumentano anche le capacità parassite e quindi CL quindi ad un certo punto non si ha più miglioramento di tp (il gate si fa da carico) Anche gli elevati fan-out riducono la velocità della porta (ogni gate connesso significa due transistor di carico, il pmos e lo nmos) Courtesy of Massimo Barbaro Fan-In: dimensionamento progressivo I transistor più vicini alla massa devono pilotare capacità via via più grandi (la somma di CL e di tutti i nodi parassiti intermedi) Si dimensiona MN a dimensione minima, poi gli altri via via più larghi WN-1=WN(CL+CpN-1)/CL ..... W1=WN(CL+CpN-1 +…+Cp1)/CL Courtesy of Massimo Barbaro Fan-In: riordinamento Se un segnale è particolarmente critico in genere è quello che arriva per ultimo (quando gli altri hanno già commutato) In tale situazione è preferibile usare il segnale critico per pilotare il transistor MN che è il più vicino a CL e quindi “vede” la sola CL se gli altri commutato. Se invece si usasse il segnale critico per pilotare M1 la capacità “vista” sarebbe : Ctot=CL+CpN- 1+…+Cp1 Courtesy of Massimo Barbaro Logica Statica CMOS: Riassunto L’escursione fra i simboli 0 e 1 è la massima possibile (VDD) Full Swing Nessuna dissipazione di potenza statica Tempi di propagazione confrontabili Una porta a N ingressi ha 2N transistor (N nmos e N pmos) Ad ogni ingresso sono connessi sempre mos (almeno 1 nmos e 1 pmos) Courtesy of Massimo Barbaro Logica Combinatoria LOGICA PSEUDO NMOS Courtesy of Massimo Barbaro Limiti del CMOS Il principale limite della logica CMOS è il numero di mos (sempre pari a 2N) utilizzati che la rende poco pratica per porte con elevato fan-in. Inoltre in ingresso presenta sempre i gate di 2 mos (p e n) quindi un carico almeno doppio del minimo concepibile (trascurando i diversi dimensionamenti del p e del n) Per questo motivo sono state concepite logiche alternative che barattano alcune caratteristiche CMOS in cambio di un minore ingombro e maggiore velocità Courtesy of Massimo Barbaro Logica pseudo-NMOS La logica pseudo-NMOS implementa la sola rete PDN e sostituisce la PUN con un solo mos (un PMOS sempre acceso) che si incarica di portare a VDD l’uscita ogni volta che la PDN è aperta Courtesy of Massimo Barbaro Pseudo-NMOS : funzionamento L’analisi del circuito di massima è molto semplice e si basa su quanto detto per la logica combinatoria CMOS statica con la sola differenza che la rete di pull-up (PUN) è sostituita da un transistor SEMPRE acceso (il PMOS con il gate connesso a massa). Per riconoscere la funzione implementata, dunque, bisogna verificare la sola PDN: Per ogni combinazione per cui la PDN risulta accesa (ossia in cui c’è almeno un percorso chiuso verso massa) l’uscita sarà bassa (questo a patto che il PMOS venga opportunamente dimensionato, come vedremo in seguito). Per ogni combinazione per cui la PDN risulta spenta (nessun percorso verso massa), il nodo di uscita sarà cortocircuitato a VDD dal PMOS e dunque l’uscita sarà alta. Courtesy of Massimo Barbaro Pseudo-NMOS: funzionamento Per una combinazione x1, x2, ... xN per cui nessun percorso della PDN è chiuso verso massa, l’intera PDN è un circuito aperto, dunque: Courtesy of Massimo Barbaro Pseudo-NMOS: funzionamento Per una combinazione x1, x2, ... xN per cui almeno un percorso della PDN è chiuso verso massa, l’intera PDN è un circuito aperto, dunque: Courtesy of Massimo Barbaro Pseudo-NMOS: funzionamento Quanto vale l’uscita in caso di PDN accesa? Le resistenze sono in serie dunque sono equivalenti ad una resistenza pari alla loro somma. La caduta di potenziale ai capi della serie delle due resistenze è pari a VDD. VDD= (Rp+Rn)In Da questo ricaviamo la corrente: In= VDD/(Rp+Rn) La corrente che scorre nelle due resistenze è la stessa (il carico NON assorbe corrente perché è il gate di un MOS). Sostituiamo il valore ottenuto nell’espressione di VRn: VOUT = VRp = VDDRn /(Rp+Rn) Se la resistenza equivalente della PDN (Rn) è molto più piccola di quella del PMOS tale valore tende a zero e dunque l’uscita è bassa Courtesy of Massimo Barbaro Pseudo-NMOS: VOL Il ragionamento svolto è però solo qualitativo perché in realtà i transistor MOS non sono delle semplici resistenze ma hanno una caratteristica fortemente non-lineare. Bisogna tenere conto di questo se si vuole conoscere il valore esatto della tensione di uscita bassa che NON può essere pari a 0. Per potere scrivere le equazioni corrette applichiamo il solito ragionamento svolto anche per l’inverter CMOS e per la logica statica CMOS ed osserviamo che (come visto nella slide precedente), la corrente del PMOS deve essere UGUALE alla corrente del NMOS (lo NMOS equivalente alla PDN). Questo perché non esiste alcun altro percorso possibile per la corrente, quindi tutta la corrente che scorre nel PMOS deve fluire verso massa attraverso la PDN. Courtesy of Massimo Barbaro Pseudo-NMOS: VOL Per potere procedere dobbiamo conoscere le condizioni di conduzione dei due transistor (cutoff, triodo o saturazione). Osserviamo che si desidera ottenere una porta logica con un buon margine di rumore, dunque si vuole che la VOL sia la più bassa possibile. In tali condizioni, poiché la VOL coincide con la VDS del NMOS equivalente, tale transistor sarà ragionevolmente in triodo. Per la stessa ragione, la VSD del PMOS sarà invece molto grande e dunque avremo ragionevolmente un PMOS in saturazione. Se la VOL deve essere piccola lo NMOS tende ad andare in triodo ed il PMOS in saturazione. Facciamo questa ipotesi che sarà verificata se otterremo un valore di VOL inferiore a VDSATn. Courtesy of Massimo Barbaro Pseudo-NMOS: VOL Siccome stiamo calcolando VOL l’ingresso sarà chiaramente alto. Scriviamo l’equazione della corrente del PMOS che è in saturazione e ha la VSG pari a VDD e la VSD pari a VDD-VOL. Scriviamo l’equazione della corrente del NMOS che è in triodo e ha la VGS pari a VDD e la VDS pari a VOL. Uguagliamo le due correnti e ipotizziamo VTn=|VTp| Courtesy of Massimo Barbaro Pseudo-NMOS: VOL Supponendo di volere avere il valore più basso possibile VOL2 sarà trascurabile rispetto a VOL e si ottiene quindi: Se si considera inoltre che, tipicamente VTn ≈ VTp e che VDSATp ≫ VDD - VTp l’espressione si semplifica ulteriormente in: Courtesy of Massimo Barbaro Pseudo-NMOS: VOL Osservando la cosa dal punto di vista grafico, rappresentiamo le due correnti (del PMOS e del NMOS) su uno stesso grafico (funzione di VOUT). Il valore della tensione di uscita corrisponde al punto di intersezione fra le curve (il punto in cui le due correnti sono uguali). NMOS (molto conduttivo perché W/L è grande) IDSn,ISDp Al diminuire del W/L del PMOS la curva si schiaccia verso il basso ed il punto di intersezione si sposta a sinistra. VOL PMOS (poco conduttivo perché piccolo W/L) VDD Vout Courtesy of Massimo Barbaro VOL : considerazioni La diminuzione della VOL comporta una diminuzione del rapporto di forma del PMOS rispetto al NMOS equivalente. Tale riduzione di può ottenere sia facendo lo NMOS più conduttivo (più largo), sia riducendo la conduttività del PMOS ossia NON facendolo a lunghezza minima La maggiore controindicazione della diminuzione di VOL è data dal fatto che, richiedendo una minore conduttività per il PMOS, causa anche un aumento del tempo di propagazione LH Courtesy of Massimo Barbaro Consumo di potenza statico Quando l’uscita è pari a VOL entrambi i transistor sono accesi e scorre corrente (anche staticamente) fra alimentazione e massa. Il consumo di potenza statica associata è dato dal prodotto della corrente (che coincide con la corrente di saturazione del PMOS) per l’alimentazione La riduzione di VOL comporta la riduzione della corrente di saturazione del PMOS, il che comporta anche una diminuzione della potenza dissipata. La controindicazione è l’aumento del tempo di propagazione LH (determinato proprio dalla corrente di saturazione del PMOS). Courtesy of Massimo Barbaro Tempo di propagazione I tempi di propagazione HL e LH sono differenti: tpHL è determinato dalla rete PDN e può essere valutato con la solita formula 0.69 ∙ ∙ Da notare che, in realtà, il tempo di propagazione è leggermente più alto perché dato che il PMOS è sempre acceso la scarica è ostacolata dalla corrente di saturazione del PMOS tpLH è determinato dal transistor PMOS di pull-up che carica la CL con una corrente circa costante (la corrente di saturazione del pmos. Courtesy of Massimo Barbaro Esempio: NAND La rete PDN porta a 0 l’uscita solo se A e B sono entrambi 1, in tutti gli altri casi l’uscita è portata a 1 dal pmos di pull-up Courtesy of Massimo Barbaro Pseudo-NMOS: caratteristiche E’ una logica a rapporto, dove cioè il rapporto fra le dimensioni dei transistor determina le caratteristiche statiche (VOL) Il PMOS di pull-up ha specifiche contraddittorie: dovrebbe essere poco conduttivo (kp<<keqN) per minimizzare VOL e il consumo di potenza statico ma dovrebbe anche essere molto conduttivo per minimizzare il tempo di propagazione LH (caricare rapidamente CL) E’ comunque una logica statica perché l’uscita è sempre connessa a VDD o 0 Courtesy of Massimo Barbaro Vantaggi delle logiche pseudo-NMOS Osservando che: Il numero totale di transistor è N+1 (con N numero di ingressi) Ogni porta pseudo-NMOS, avendo come carico un’altra porta pseudo-NMOS, dovrà pilotare un solo transistor (poiché non c’è la PUN, bisogna pilotare il solo transistor della PDN) Risulta che: E’ minore il numero di capacità parassite interno alla porta logica. E’ minore il valore della capacità di carico (dato che bisogna pilotare solo un NMOS e non la coppia PMOS-NMOS) Dunque è minore il tempo di propagazione Courtesy of Massimo Barbaro Svantaggi della logica pseudo-NMOS Osservando che: La PUN è sempre accesa dunque quando l’uscita deve essere bassa (ossia quando si accende anche la PDN) esiste un percorso diretto fra alimentazione e massa. L’uscita bassa NON è pari a zero ma dipende dal rapporto fra le dimensioni del PMOS e degli NMOS Risulta che: Si ha dissipazione di potenza statica Si ha una riduzione del margine di rumore inferiore (in caso di uscita bassa). Infatti per uscita bassa il PMOS e la PDN conducono entrambi, quindi VOL≠0 Courtesy of Massimo Barbaro Logica Combinatoria LOGICA A PASS TRANSISTOR Courtesy of Massimo Barbaro Logica a pass-transistor Visto che un MOS è equivalente ad un interuttore si può pensare di realizzare una funzione logica semplicemente scegliendo, a seconda della combinazione in ingresso, cosa fare passare in uscita fra 1 e 0. E’ NECESSARIO che almeno uno dei percorsi sia chiuso in modo che il valore dell’uscita sia determinato in ogni istante X1 X2 X3 Rete di interruttori F(X1,X2,X3) Può essere sostituito da un semplice buffer, cioè una porta non invertente col solo compito di isolare l’uscita dall’ingresso (un buffer NON invertente sono 2 inverter in cascata). Courtesy of Massimo Barbaro Esempio La porta F=AB può essere realizzata così: Se B=1 passa A (quindi 0 o a seconda del valore di A). Il secondo percorso è necessario per garantire una logica statica, cioè un percorso a bassa impedenza fra l’uscita e 0 o VDD per qualunque configurazione di ingresso La porta F=(AB)’ può essere realizzata così: Courtesy of Massimo Barbaro Esempio: multiplexer La logica a pass-transistor è particolarmente adatta alla realizzazione di multiplexer. Nel caso di un multiplexer 2x1 (due ingressi A e B e 1 ingresso di selezione S), la cui espressione logica è F=AS’+BS si ha la seguente implementazione: A 0 B F 1 S Se S=0 passa A (quindi 0 o 1 a seconda del valore di A). Se S=1 passa B ( quindi 0 o 1 a seconda del valore di B). Simbolo Multiplexer Courtesy of Massimo Barbaro Esempio: multiplexer 4x1 Nel caso di un multiplexer 4x1 (mux4x1) in cui gli ingressi di selezione sono 2 bit (S1 e S0): S1 S0 Z 0 0 A 0 1 B 1 0 C 1 1 D Courtesy of Massimo Barbaro Logica a pass-transistor: sintesi Il meccanismo è quello di costruire un diverso percorso per le varie combinazioni di ingressi (non necessariamente tutte, ma quelle mutuamente esclusive). A seconda della combinazione di ingresso uno ed uno solo dei percorsi si chiuderà. Tale percorso porterà in uscita uno degli ingressi Il meccanismo è particolarmente indicato nella realizzazione di circuiti di selezione (come i mutliplexer) Courtesy of Massimo Barbaro Realizzazione degli switch Gli interruttori potrebbero essere realizzati con dei singoli MOS. Il transistor MOS è un dispositivo simmetrico, dunque non si può definire uno dei due terminali souce o drain senza sapere il verso della corrente. Il source è il terminale verso cui è diretta la corrente. Dunque a seconda di come scorre la corrente cambia la caduta di potenziale che devo considerare (VGS) per verificare se il transistor è acceso o spento. Courtesy of Massimo Barbaro Realizzazione degli switch Un singolo transitor non è in grado di trasferire in modo perfetto l’informazione. In questo caso, infatti: VGS = VDD – Y Il transistor si spegne quando: VGS < VTN Ossia Y > VDD – VTN Lo NMOS ha problemi nel trasferire le tensioni alte. La massima tensione che compare su Y prima che lo switch si interdica è VDD– VTN Courtesy of Massimo Barbaro Realizzazione degli switch Il PMOS ha evidentemente il problema opposto. In questo caso, infatti: VSG = Y – 0 = Y Il transistor si spegne quando: VSG < VTP Ossia Y < |VTP| Il PMOS ha problemi nel trasferire le tensioni basse. La minima tensione che compare su Y prima che lo switch si interdica è |VTP| Courtesy of Massimo Barbaro Problemi con switch singoli Un 1 “sporco” causa un consumo di potenza statico nell’inverter che segue l’interruttore. Infatti il PMOS sarà sull’orlo della conduzione ed avrà una corrente non nulla Courtesy of Massimo Barbaro Transmission gate La soluzione al problema è l’uso dei transmission gate Il PMOS è pilotato dal segnale di ingresso del NMOS invertito. Il PMOS si occupa di correggere gli 1 “sporco” e lo NMOS di correggere gli 0 “sporchi”. Svantaggi: ho bisogno del PMOS e del segnale invertito Courtesy of Massimo Barbaro Esempio: multiplexer Realizzazione di un multiplexer a 2 ingressi (un bloccoche, in base ad un segnale di selezione S sceglie se fare passare A o B) Courtesy of Massimo Barbaro Logica Combinatoria LOGICHE DINAMICHE Courtesy of Massimo Barbaro Logiche dinamiche Le logiche dinamiche sono logiche in cui le uscite non sono sempre connesse ad una delle alimentazioni. L’informazione viene temporaneamente immagazzinata sotto forma di carica elettrica su un capacitore. In genere sono logiche temporizzate, in cui cioè si alternano fasi di valutazione della funzione logica e di memorizzazione sulle capacità Courtesy of Massimo Barbaro Concetto di base (Φn) Courtesy of Massimo Barbaro Concetto di base (Φn): precarica PRECARICA Φ=0 Il PMOS è acceso e cortocircuita l’uscita a VDD. Lo NMOS è spento ed interdice il percorso verso massa. Il capacitore si carica a VDD Courtesy of Massimo Barbaro Concetto di base (Φn): valutazione VALUTAZIONE Φ=1 Il PMOS è spento ed interdice il percorso verso VDD. Lo NMOS è acceso ed abilita il percorso verso massa. Se la combinazione di ingresso è tale da chiudere un percorso nella PDN il capacitore si scarica verso massa. Courtesy of Massimo Barbaro Concetto base (Φn) Quando il segnale Φ (detto segnale di clock) è basso la PDN è disabilitata (lo NMOS apre il percorso a massa) ed il PMOS carica la CL in uscita a VDD Quando Φ è alto il PMOS si interdice e la PDN è abilitata, quindi l’uscita potrà andare a 0 (se PDN si chiude) o restare a 1 (altrimenti) Il funzionamento è quindi sincronizzato dal segnale Φ e le operazioni sono divise in 2 fasi Precarica (Φ = 0) Valutazione (Φ = 1) Courtesy of Massimo Barbaro Concetto di base (Φp) La stessa cosa si può fare con una PUN. Le fasi saranno ovviamente invertite. Courtesy of Massimo Barbaro Caratteristiche Sono necessari solo N+2 transistor Ogni ingresso vede il carico di un solo MOS. Non è una logica a rapporto. Non c’è dissipazione di potenza statica (il percorso statico fra VDD e massa è sempre interdetto). La PDN (o PUN) può essere realizzata come nel caso del CMOS statico (quindi implementa solo funzioni invertenti). E’ più veloce e compatta dell’equivalente CMOS statico (meno capacitori parassiti e minor carico dovuto alla presenza di un solo gate anzi che due). Courtesy of Massimo Barbaro Prestazione statiche Il maggiore problema delle logiche dinamiche è l’immunità al rumore. Poiché la commutazione dipende da soli transistor NMOS si può dire che VM, VIL e VIH coincidono con VT (tensione di soglia) Questo rende i margini di rumore molto bassi Inoltre il fatto che l’uscita alta sia immagazzinata come carica su una capacità rende il circuito molto sensibile a disturbi (accoppiamenti capacitivi). La presenza di correnti di leakage può scaricare inavvertitamente l’uscita alta. Courtesy of Massimo Barbaro Soglia logica Visto che il PMOS è spento l’uscita è disconnessa da VDD. Basta allora che, all’aumentare di VIN, si crei un percorso conduttivo verso massa, ossia che lo NMOS si accenda anche di poco (VIN appena al di sopra della tensione di soglia VTH) perché l’uscita vada a 0. Courtesy of Massimo Barbaro Prestazioni dinamiche Il tempo di propagazione LH è zero! Questo perché la fase di precarica pone già a 1 l’uscita prima ancora della valutazione In realtà bisognerebbe tenere conto dell’incidenza della precarica nel tempo totale di valutazione. In molti progetti però questa fase può essere fatta coincidere con fasi in cui comunque la logica non dovrebbe funzionare (ad esempio in un processore, mentre avviene la decodifica dell’istruzione) e quindi è realistico pensare che la precarica non incida sul ritardo totale. Courtesy of Massimo Barbaro Cause di rumore Le correnti di perdita (leakage) attraverso la PDN possono scaricare l’uscita quando deve essere alta diminuendo l’affidabiltà del circuito Clock feedthrough: il segnale di clock (Φ ) varia rapidamente quindi può, per accoppiamento capacitivo, deteriore il segnale alto immagazzinato sulla capacità. Charge sharing: se anche il percorso a massa attraverso la PDN non si chiude può capitare che qualche segnale di ingresso intermedio si chiuda mettendo CL in parallelo con altre capacità e diminuendo il valore alto immagazzinato TRASFERIMENTO DI CARICA In generale il segnale di uscita più sensibile ai disturbi è quello alto perché è memorizzato sulla capacità senza percorsi a bassa impedenza verso VDD Courtesy of Massimo Barbaro Logiche dinamiche in cascata (1) Mettere due blocchi in cascata può comportare problemi di distruzione del segnale Se in corrispondenza degli ingressi deve essere OUT1=0 (e OUT2=1) possono verificarsi problemi. Infatti all’inizio della valutazione OUT1=1 (precarica). Tale valore potrebbe fare commutare OUT2 a 0 se la PDN1 non è abbastanza veloce nello scaricare OUT1 Courtesy of Massimo Barbaro Logiche dinamiche in cascata (2) Esempio OUT1 = (AB)’ OUT2 = ( OUT1 + C)’ = ( (AB)’ + C)’ Questo circuito ha dei potenziali problemi per alcune combinazioni in cui l’uscita deve essere l’uscita alta. Ad esempio, la combinazione A=1, B=1, C=0. In tali condizioni dovrebbe essere OUT1=0 e OUT2=1. Courtesy of Massimo Barbaro Logiche dinamiche in cascata (3) A=1, B=1, C=0 In precarica risulta OUT1=1 e OUT2=1. Al termine della precarica inizia la valutazione. All’inizio della valutazione si chiudono M4 e M8. Poiché OUT1 è precaricato a 1 si chiude il percorso M6-M8 che tende a scaricare OUT2. Contemporaneamente si chiude il percorso M2-M3-M4 che scarica OUT1. Nel funzionamento corretto, quando OUT1 va a 0 apre il percorso M6-M8 lasciando OUT2 a 1 come deve essere. Courtesy of Massimo Barbaro Logiche dinamiche in cascata (4) Possibile malfunzionamento Se la scarica attraverso il percorso M6-M8 è più veloce della scarica attraverso M2- M3-M4 il nodo OUT2 si scarica prima che OUT1 vada a 0. Una volta che OUT2 si è scaricato, l’uscita risulterà 0 e non sarà più possibile riportarla é M5 è spento. Dunque nel momento in cui OUT1 arriverà finalmente a 0, l’uscita OUT2 sarà erroneamente pari a 0. Courtesy of Massimo Barbaro Logica DOMINO Una possibile soluzione al problema è offerta dalle logiche DOMINO La presenza dell’inverter impedisce che OUT1=1 in precarica scarichi inavvertitamente OUT2. Infatti quando OUT1 è precaricato a 1 in ingresso alla PDN di OUT2 c’è uno 0 che NON può chiudere due percorsi di scarica. La logica è detta domino perché la valutazione della prima PDN innesca l’eventuale commutazione della seconda PDN e così via Courtesy of Massimo Barbaro Logiche DOMINO: caratteristiche Possono implementare solo funzioni non invertenti (per la presenza dell’inverter) Sono molto compatte e veloci Vengono utilizzate nella realizzazione di blocchi logici critici (ALU di processori ad alte prestazioni) Courtesy of Massimo Barbaro