Logica CMOS dinamica - Corsi di Laurea a Distanza

Logica CMOS dinamica
Ing. Ivan Blunno
21 aprile 2005
1
Introduzione
In quessta dispensa verrà presentata la logica CMOS dinamica evidenziandone
i principi di funzionamento, la tecnica di progetto i vantaggi e gli svantaggi
rispetto alla logica CMOS statica.
2
Principio di funzionamento
In figura 1 è mostrato lo schema di principio di un circuito in logica dinamica.
In questo particolare esempio la funzione logica viene implementata da un blocco di logica composto da transistor NMOS (n-logic block). Il funzionamento
dell’equivalente circuito implementato con transistor PMOS è analogo. La logica dinamica si basa su due elementi fondamentali: la presenza di una capacità
sull’uscita e di un segnale di clock. In generale la capacità di carico non sarà
un condensatore aggiunto appositamente, ma più semplicemente la capacità parassita della logica che segue il circuito in esame. Più precisamente si tratterà
della capacità di gate del transistor MOS di ingresso del dispositivo successivo.
Analizziamo ora il funzionamento del circuito di figura 1 mettendo in evidenza
due fasi: quella di precarica e quella di valutazione (precharge e evaluation
in inglese).
• clk = 0: PRECARICA. In questa fase il transistor NMOS è interdetto e
pertanto non vi è alcun possibile cammino verso massa (qualunque sia la
il comportamento del blocco n-logic. Il transistor PMOS, viceversa, è in
conduzione. Il circuito si comporta pertanto come l’equivalente di figura
2.a ed il condensatore si carica alla tensione di alimentazione. Durante
tutta la fase di precarica Y = 1.
• clk = 1: VALUTAZIONE. Durante la fase di valutazione il PMOS è interdetto mentre il NMOS conduce. Il circuito si comporta come l’equivalente
di figura 2.b dove il blocco n-block è stato sostituito da un interruttore
controllato dai segnali di input. Durante la fase di valutazione possono
succedere due cose:
1
Y
input
n−logic
block
clk
Figura 1: Logica CMOS dinamica: schema di principio.
Y
Y
a)
b)
Figura 2: Circuito equivalente durante la fase di a) precarica e b) valutazione.
2
– Il blocco n-block è in conduzione (per effetto degli ingressi) e la
capacità si scarica verso massa. In questo caso, trascorso il breve
transitorio, si avrà Y = 0.
– Il blocco n-block è interdetto. In questo caso il nodo Y risulterà
scollegato sia dall’alimentazione che da massa e manterrà pertanto
la carica accumulata durante la fase di precarica. Si avrà dunque
Y = 1.
2.1
Logica dinamica tipo P
Il caso in cui il blocco di logica fosse di tipo P, è assolutamente analogo. In questo
caso però si avrebbe una fase di prescarica in corrispondenza del clock a valore
1, ed una fase di valutazione, in corrispondenza del clock a 0, dove il nodo di
uscita verrebbe condizionalmente portato a valore logico alto dipendentemente
dal valore degli ingressi.
3
Progetto della rete del n-block
Abbiamo visto come il valore dell’uscita Y dipende, nelle varie fasi, dal segnale
clk (clock) e dalla rete interna al n-block pilotata dagli ingressi della porta logica. Questa rete coincide esattamente con il blocco di pull-down di una porta
in logica CMOS statica e pertanto per il suo progetto si utilizzeranno le stesse
tecniche viste per quei tipi di circuiti. In modo analogo nel caso di logica di
tipo P la rete interna al p-block coinciderà con il blocco di pull-up di una porta
logica CMOS statica. A scopo di esempio, supponiamo di voler progettare un
circuito realizzante la seguente funzione logica:
Y = A · (B + C) + D · E
Si noti come, anche nel caso di logica CMOS dinamica, le funzioni che si
possono realizzare sono solo funzioni negate (a meno di utilizzare un ulteriore
inverter in cascata).
Il risultato sarà quello mostraato in figura 3 dove è stato omesso il condensatore in quanto, essendo intrinsecamente presente in ogni circuito, non deve
essere considerato in fase di progetto.
È importante sottolineare che i segnali di ingresso devono stabilizzarsi durante la fase di precarica, perché eventuali variazioni durante la fase di valutazione
potrebbero portare alla metastabilità o addirittura a dei valori inesatti di Y.
Si supponga, ad esempio, che nel circuito di figura 3, A, B, C e D siano tutti
posti a 0, mentre E sia posto a 1. Evidentemente, in questa condizione, ci si
aspetterebbe una uscita Y = 1. Se però durante la fase di valutazione anche
solo per un istante D passa ad 1, il condensatore comincia a scaricarsi perdendo
presto la carica immagazzinata nella precedente fase di precarica e portando
3
clk
Y
D
E
A
B
C
clk
Figura 3: Ciurcuito che implementa la funzione Y = A · (B + C) + D · E.
cosı̀ l’uscita Y a valore 0 o ad un valore indeterminato (metastabilità). Un altro
problema deriva dal fatto che la capacità parassita è molto piccolo (nell’ordine
di pochi fF) e inoltre presenta inevitabilmente delle perdite. Per questa ragione,
se il tempo che intercorre tra la fase di precarica e quella di valutazione è troppo
lungo il valore di Y finirà sempre per essere nullo, a prescindere dal valore dei
segnali di ingresso.
4
Charge sharing
È il fenomento che si verifica quando, a seguito della chiusura di un interruttore,
due capacità con tensione diverse vengono a trovarsi in parallelo. Il risultato
è che le due capacità si porteranno ad un valore di tensione uguale ed intemedio tra i valori che avevano prima della chiusura dell’interrutore. Per meglio
comprendere questo fenomeno, analizziamolo riferendoci alla figura 4
Si ricordi che in un condensatore, capacità, quantità di carica immagazzinata e tensione sono legati dalla relazione Q = CV . Siano Vi e Vz i valori di
tensione iniziale. Le quantità di carica immagazzinate nei due condensatori saranno allora
4
t=0
Vi
Ci
Cz
Vz
Figura 4: Fenomeno del charge sharing.
Qz = Cz Vz e Qi = Ci Vi
Al momento della chiusura dell’interrutore la quantità di carica totale sarà
data dalla somma delle due quantità di carica
QT = Qz + Qi = Cz Vz + Ci Vi
Inoltre i due condensatori si troveranno in parallelo, formando un unico condensatore di capacità equivalente
CT = Cz + Ci
La tensione dopo la chiusura dell’interruttore sarà dunque
VT =
QT
C Z VZ + C i Vi
=
CT
Cz + Ci
Supponiamo, a titolo di esempio, Vi = 0 e Vz = VDD
Alla chiusura dell’interrutore
VT =
Cz VDD
Cz
= VDD
Cz + Ci
Cz + Ci
In pratica si ha un partitore capacitivo. In una porta logica dinamica il
variare di un ingresso può portare in conduzione un transistor mettendo in
parallelo al condensatore parassita di uscita, un altro condensatore, andando
cosı̀ ad abbassarne, anche notevolmente la tensione e rendendo irriconoscibile
(o addirittura sbagliato) il valore logico dell’uscita come mostrato in figura 5.
5
T
5V
T
5V
0V
a)
T
0V
b)
?
?
c)
Figura 5: Charge sharing in una porta logica dinamica (a), con interrutori
equivalenti e T aperto (b) e con T chiuso (c).
5
Confronto tra logiche CMOS statiche e dinamiche
L’esigenza di utilizzare la logica dinamica nasce dal desiderio di ridurre l’area
necessaria all’implementazione di una certa funzione logica. La logica CMOS
statica è fortemente ridondante: per ogni segnale di ingresso è necessario inserire un transistor NMOS ed uno PMOS. La logica dinamica è invece decisamente
più compatta. In questo secondo caso i transistor utilizzati sono solo la metà più
2 (i due pilotati dal clock). Evidentemente il vantaggio diventa tanto maggiore
quanto più sono i segnali di ingresso impiegati. A fronte di questo evidente vantaggio c’è però lo svantaggio di dover gestire e distribuire un segnale di
clock. La fase di progetto inoltre viene a complicarsi notevolmente, dovendo
essere affrontate problematiche di temporizzazione dei segnali di ingresso che,
come già detto, non devono variare il loro valore durante la fase di valutazione. La convenienza di una dell’altra famiglia logica dipenderà pertanto dalle
applicazioni.
6
Connessione di porte logiche dinamiche
Nei paragrafi precedenti è stato descritto il funzionamento delle logiche dinamiche in generale. In realtà, per potere completare l’analisi di questa famiglia di
circuiti è necessario analizzare anche l’interconnessione tra blocchi di logica.
A questo propossito si esamini l’esempio di figura 6. Consideriamo il caso
6
Y1
Y2
IN1
clk
clk
Figura 6: Cascata di due celle di logica dinamica.
semplice in cui i blocchi abbiano un solo ingresso. In particolare la seconda cella
dipende solo dalla prima (anche se le conclusioni a cui arriveremo valgono per
qualunque caso). Poiché i blocchi che realizzano le due celle sono composti solo
di transistor NMOS, è evidente che, qualunnque sia la funzione che implementano, se l’ingresso è a 1 logico l’uscita dovrà essere, a regime, di zero logico.
Analogamente se l’ingresso è a 0 logico l’uscita sarà pari a 1 logico (ovviamente,
trantandosi di porte ad un solo ingresso che implementano funzioni invertenti,
non è possibile ottenere altro che un inverter!). Il funzionamento, che per una
porta sola “isolata” dal mondo esterno è già stato analizzato, in questo caso non
è quello previsto. Infatti durante la fase di precarica entrambe le uscite (Y1 ed
Y2) sono ad 1 logico. Quando poi si passa alla fase di valutazione, Y1 dovrebbe
scaricarsi e diventare uno 0 mentre Y2 dovrebbe mantenere il suo valore di 1
logico. Quello che in realtà succedde è che all’inizio della fase di valutazione
Y1 è ancora ad 1 e pertanto porta in conduzione il n-logic block della seconda
cella che comincerà pertanto a scaricare Y2. La scarica di Y2 continuerà fin
tanto che Y1 non avrà raggiunto un valore sufficientemente prossimo allo 0. In
generale potrebbe essere totale. In ogni caso si verifica esattamente ciò che nel
paragrafo precedente avevamo detto essere proibito: gli ingressi di una porta
cambiano di valore durante la fase di valutazione. Questo fenomeno si presenta a prescindere dalla funzione logica implementata dalla porta e dal numero
di ingressi. La natura stessa della rete logica (implementata da NMOS) che
conduce sicuramente quando tutti gli ingressi sono ad 1 (ed all’inizio della fase
di valutazione è sempre cosı̀) rende questo tipo di connessione in cascata non
attuabile nei casi reali, rendendo necessario il ricorso ad alcune piccole varianti.
7
Y1
Z1
d1
clk
Y2
Z2
d2
clk
Y3
Z3
d3
clk
Figura 7: Logica domino.
6.1
Logica domino
Una prima possibile soluzione al problema visto nel paragrafo precedente consiste nell’inserire un inverter all’uscita di ogni stadio della cascata. Il risultato
è che al termina della fase di precarica, tutte le uscite sono allo zero logico e
non portando pertanto in conduzione lo stadio successivo fin tanto che la valutazione non sia terminata ed abbia determinato un 1 (che però a questo punto
è corretto) sull’uscita. Analizziamo allora l’esempio di figura 7 dove d1 , d2 ed3
rappresentano i ritardi (in fase di valutazione) dei tre stadi di logica dinamica.
Supponiamo che a regime l’uscita Z1 del primo stadio debba valere 1. Durante
la fase di precarica tutti i nodi Yi sono ad 1 e di conseguenza tutti i nodi Zi
sono a 0. Al tempo t = 0 inizia la fase di valutazione che però ha effetto solo sul primo stadio in quanto tutti quelli successivi hanno gli ingressi a 0 che
interdicono il blocco NMOS. Dopo un tempo t = d1 l’uscita Z1 sarà salita ad
1 ed anche il secondo stadio comincerà a scaricare il nodo Y2 . Stesso discroso
può essere ripetuto al tempo t = d1 + d2 e t = d1 + d2 + d3 . In pratica, quello
che succede, è che il termine della fase di valutazione di uno stadio fa partire
(se necessario) la fase di valutazione dello stadio successivo. Si ottiene cosı̀ una
propagazione in cascata dei risultati proprio come nel gioco del domino (da cui
il nome di questa particolare implementazione di logica dinamica). Sebbene il
problema iniziale sia stato risolto, sono ancora presenti alcuni inconvenienti:
• Ogni porta ha bisogno di una inverter aggiuntivo (al costo di due transistor
in più).
• Resta ancora il problema de charge sharing.
Per risolvere il problema del charge sharing è possibile aggiungere un transistore PMOS di pull-up “debole” (vedi figura 8.a) cioè a basso guadagno che
8
Y
inputs
n−logic
block
Y
inputs
clk
n−logic
block
clk
a)
b)
Figura 8: Possibili soluzioni al problema del charge sharing.
interviene a ripristinare la carica persa solo nel caso che l’uscita debba rimanere a 1. Lo stesso transistor, proprio perché debole, non riuscirà a contrastare
l’azione della rete di pull-down nel caso questa cercasse di portare l’uscita a 0.
Alternativamente è possibile collegare il pmos debole all’uscita dell’inverter in modo che, nel momento in cui la rete di pull-down comincia a portare
l’ingresso dell’inverter a livello basso, l’uscita sale a 1 spegnendo il transistor
di pull-up (figura 8.b). Il transistor cosı̀ aggiunto permette inoltre di lavorare
anche a frequenze più basse compensando le correnti di perdita.
6.2
Logica domino NP
Un’idea alternativa alla precedente è qulle mostrata in figura 9 dove le porte in
logica N si alternano a quelle in logica P.
In questo caso, al fine di sincronizzare tra di loro le fasi di precarica e prescarica, i blocchi in logica P avranno il clock negato. Il vantaggio di questo
tipo di architettura è che si risparmia l’inverter da interporre tra una porta e
la successsiva, lo svantaggio è che bisognerà di stribuire due segnali di clock (il
negato ed il non negato).
7
Logica a 2 fasi
L’ultima architettura di logica dinamica che viene presentata in questa dispensa
è la logica a 2 fasi, il cui schema elettrico è mostrato in figura 10 nel caso di
un solo ingresso. Ancora una volta si fa notare che i condensatori evidenziati
esplicitamente nello schema elettrico sono in realtà condensatori parassiti.
Esaminiamo il funzionamento di questo tipo di logica.
9
Y1
Y2
N
logic
IN1
clk
Y3
P
logic
clk
N
logic
clk
Figura 9: Logica domino NP.
Φ1
Φ2
Φ1
Φ2
T1
N
logic
Φ1
T2
L1
N
logic
Φ2
Φ1
Φ2
Figura 10: Logica a 2 fasi: schema circuitale.
10
L2
Φ1
Φ2
Figura 11: Logica a 2 fasi:segnali di clock.
• φ1 = 1.
T1 fa passare il dato mentre L1 è in precarica. Il dato viene memorizzato
nel condensatore.
• φ1 = 0.
T1 si apre garantendo che l’ingresso non cambi più. Contemporaneamente
L1 va in valutazione.
• φ2 = 1.
T2 fa passare il dato mentre L2 è in precarica. Il dato viene memorizzato
nel condensatore.
• φ2 = 0.
T2 si apre garantendo che l’ingresso non cambi più. Contemporaneamente
L2 va in valutazione.
È molto importante che le due fasi del clock (φ1 e φ2 ) non siano mai ad 1
contemporaneamente, come mostrato in figura 11 per evitare che gli ingressi di
uno stadio possano cambiare valore durante la fase di valutazione.
Ogni blocco comandato dalla fase φ1 è preceduto e seguito da uno comandato
dalla fase φ2 e viceversa.
11