Esercitazione 5 – Logica Sequenziale: circuiti

Transcript

Esercitazione 5 – Logica Sequenziale: circuiti
Università degli Studi di Cagliari
Dipartimento di Ingegneria Elettrica ed Elettronica
Laboratorio di Elettronica
Corso di Elettronica dei Sistemi Digitali 1
Anno Accademico 2004/2005
Esercitazione 5 – Logica Sequenziale: circuiti
Dato il flip-flop C2MOS in Figura 1 e sapendo che è realizzato in un processo CMOS 0.5
µm.
a) Dire se il circuito è sensibile ai fronti positivi o negativi del clock
b) Calcolare i tempi di setup, hold e propagazione sapendo che:
a. Il tempo di propagazione dell’inverter M9-M10, ossia dal segnale CLK al
segnale CLKN, è pari a 50psec
b. Il tempo di propagazione dei blocchi C2MOS (M1-M4 e M5-M8), ossia dal
segnale D a Q1, e da Q1 a Q, è pari a 200psec
c) Proporre una modifica al circuito per rendere il latch sensibile al fronte opposto del
clock
Figura 1: Schematico del FF C2MOS
a) Fronte
Il circuito è evidentemente sensibile ai fronti negativi del clock, ossia Q cambia quando
CLK diventa basso. Questo perché finché CLK=1 (e quindi CLKN=0) il master (M1-M4) è
trasparente e lo slave (M5-M8) in memorizzazione. Quando poi CLK va basso (e CLKN va
alto), il master si interdice (lasciando memorizzato su Q1 l’ultimo valore precedente il
fronte) e lo slave diventa trasparente aggiornando l’uscita Q.
b) Tempi
- Il tempo di setup, in questo circuito, dipende evidentemente dalla propagazione del
segnale D attraverso il master (M1-M4). Il dato D, quindi, deve restare costante almeno
per un tempo pari a 200psec prima che il fronte negativo del clock consenta
l’aggiornamento del dato Q in uscita. Se D restasse costante per un tempo inferiore al
tempo di propagazione da D a Q1, quest’ultimo non riuscirebbe a raggiungere il valore
desiderato quindi il flip-flop non riuscirebbe a memorizzare (la memorizzazione avviene
appunto in modo dinamico nella capacità parassista associata al nodo Q1) il nuovo valore.
In Figura 2 è mostrato il funzionamento corretto del FF, quando cioè viene rispettato il
tempo di setup (D cambia 500psec prima del fronte negativo del clock). In questo caso,
fintanto che CLK=1, il master è trasparente quindi non appena D va alto (t=3.5nsec) il
segnale Q1 comincia a commutare ed andare basso. Il segnale Q1 ha tutto il tempo per
andare basso che arrivi il fronte di CLK che disabilita il master.
In Figura 3 è mostrato il caso in cui il tempo di setup non viene rispettato ed il flip-flop ha
un comportamento errato. In questa seconda simulazione D va alto solo 200psec prima
del fronte del clock (t=3.8nsec). Il segnale Q1 inizia a commutare ed andare basso, ma
quando arriva il fronte di CLK non è ancora sceso al di sotto della soglia logica (VDD/2).
Quando CLK diventa 0, però, il pull-down del master si interdice e non è più possibile fare
scendere Q1 che resta al di sopra della soglia logica e quindi alto, di conseguenza Q
risulta basso ed il flip-flop non è riuscito a memorizzare lo 1 in ingresso.
- Il tempo di hold è 50psec che è il tempo necessario perché l’inverter M9-M10 commuti
portando a 1 il segnale CLKN e prevenendo quindi un eventuale erronea memorizzazione,
sul nodo Q1 di un dato sbagliato (che verrebbe poi portato in uscita dallo slave). Infatti,
poiché il segnale CLKN è generato da M9-M10, è necessario che passi un tempo pari
almeno al tempo di propagazione dell’inverter perché finalmente il CLKN vada a 1 (sul
fronte negativo di CLK) spegnendo così il transistor M2. Il problema infatti potrebbe
verificarsi quando il dato da memorizzare è D=1 e rimane costante PRIMA del fronte di
CLK solo per un tempo pari al tempo di setup (200psec). In tale situazione il nodo Q1
sarebbe portato (sul fronte) appena al di sotto di VDD/2. Se D andasse a 0 prima di
50psec dopo il fronte, ossia quando CLKN è ancora 0, il nodo Q1 potrebbe erroneamente
risalire ad un valore superiore di VDD/2 a causa dell’attivazione del pull-up costituito da
M1 e M2 (M1 si accenderebbe perché D è diventato 0 e M2 non sarebbe ancora interdetto
perché CLKN non è ancora andato a 1). Se ciò accadesse ovviamente il dato
memorizzato su Q1 sarebbe sbagliato (1) e di conseguenza sbagliato anche il dato in
uscia Q (0). Il fenomeno è rappresentato in Figura 4 e Figura 5 che rappresentano la
simulazione spice del circuito in queste condizioni, come si vede Q1 scende al di sotto di
VDD/2 ma non appena D torna basso (20psec dopo il fronte, quindi meno del tempo di
hold) rincomincia a salire e torna ad un valore superiore a VDD/2 prima che CLKN riesca
ad andare alto. E’ importante sottolineare che questo fenomeno si verifica solo se D è
rimasto costante PRIMA del fronte solo per un tempo appena superiore al tempo di setup;
in caso che il tempo di setup fosse stato abbondantemente superato, Q1 si troverebbe, al
fronte di CLK; ben al di sotto di VDD/2 (prossimo allo zero) ed il pull-up non riuscirebbe
sicuramente a riportare alto Q1 (processo che richiede circa 200psec) prima della
commutazione di CLKN (che richiede soli 50psec).
- Il tempo di propagazione è dato dalla somma del tempo di propagazione attraverso M5M8 e del tempo che ci vuole per abilitare al funzionamento M5-M8 (ossia il tempo
necessario perché CLKN commuti, quindi il tempo di propagazione di M9-M10). In totale si
ha quindi un tempo di propagazione di 250psec.
20 Ottobre 2003
ESD1 - Massimo Barbaro
2
1
Figura 4: Mancato rispetto del tempo di hold quando il tempo di setup è al limite
Figura 2: Funzionamento corretto del FF
Figura 5: Mancato rispetto del tempo di hold (zoom)
Figura 3: Mancato rispetto del tempo di setup
20 Ottobre 2003
ESD1 - Massimo Barbaro
3
1
20 Ottobre 2003
ESD1 - Massimo Barbaro
4
1
c) Modifica del circuito
Per rendere il circuito sensibile al fronte positivo ci sono diverse possibili soluzioni. Si può,
ad esempio, invertire il ruolo di CLK e CLKN nel master e nello slave quindi pilotare M2 e
M7 con CLK e M3 e M6 con CLKN. In questo modo (Figura 6) il master sarebbe
trasparente con CLK=0 e si interdirebbe (con lo slave che diventa trasparente) quando
CLK=1.
Figura 6: FF sensibile ai fronti positivi del clock
20 Ottobre 2003
ESD1 - Massimo Barbaro
5
1