A.A 2002/2003 (ESEMPIO) RELAZIONE SULLE ESERCITAZIONI DI LABORATORIO Corso di laurea in Ingegneria Informatica Esame di ELETTRONICA II Docente: Ing. Vittorio PASSARO Di Umberto GRECO 1 Indice Invertitore CMOS….…………………………………………………………….pag. 1 Descrizione comportamentale…………………………………………………………...pag. 1 Descrizione a livello transistor…………………………………………………………..pag. 2 Descrizione a livello lay-out…………………………………………………………....pag. 5 Oscillatore ad anello……………………………………………………………………….……pag. 7 Multiplexer a porte di trasmissione…………………………………………….pag. 10 Descrizione comportamentale………………………………………………………….pag. 10 Descrizione a livello transistor…………………………………………………………pag. 12 Descrizione a livello lay-out…………………………………………………………..pag. 13 Multiplexer a porte di trasmissione (topologia ad albero)……………………...pag. 15 Descrizione a livello transistor…………………………………………………………pag. 15 Descrizione a livello lay-out…………………………………………………………..pag. 17 Flip-Flop JK………………………………………………………………….…pag. 19 Descrizione comportamentale…………………………………….……………………pag. 20 Descrizione a livello lay-out………………………………………………………......pag. 21 Decodificatore…………………………………………………………….…….pag. 25 Descrizione comportamentale………………………………………………………….pag. 25 Descrizione a livello transistor…………………………………………………………pag. 26 Descrizione a livello lay-out…………………………………………………………..pag. 29 2 Invertitore CMOS L’invertitore CMOS rappresenta la più semplice delle porte logiche sia dal punto di vista circuitale che dal punto di vista del funzionamento: infatti fornisce un’uscita alta in corrispondenza di un ingresso basso e un’uscita bassa quando l’ingresso è alto. Il simbolo circuitale che rappresenta l’invertitore è: Funzione NOT: out = in Per analizzare tale porta logica a diversi livelli utilizzeremo dei software di simulazione circuitale. Descrizione comportamentale Per descrivere questo aspetto utilizzeremo il programma DSCH2. Creo un semplice circuito composto da un clock, un invertitore e un LED. Imposto il clock in modo che generi un’onda quadra con periodo 8ns e una pulsazione di ampiezza di 4ns. Posso simulare il funzionamento del circuito e elaborare la tensione in ingresso e in uscita: Dal grafico ottenuto si vede chiaramente che l’uscita cambia stato con un certo ritardo rispetto al cambiamento di stato dell’ingresso. Il ritardo di propagazione può essere calcolato con la formula: Tp = TDelay + TWireDelay x N dove: “TDelay” è il tempo intrinseco di propagazione di una generica porta, mentre “TWireDelay” è il ritardo introdotto dal fan-out (N). 3 In questo caso “TDelay” è stato impostato a 0.1ns mentre “TWireDelay” a 0.05ns. Inoltre il fan-out è unitario (il solo LED). Quindi Tp = 0.15ns. Descrizione a livello transistor Dal punto di vista circuitale l’invertitore CMOS è composto da due MOSFET ad arricchimento accoppiati: uno a canale n,che funge da pilota, e l’altro a canale p, che funge da carico attivo. VDD Qp Carico Vi Vo Vi Pilota Vo Qn 0 La tensione in ingresso modifica lo stato dei due transistori. In particolare quando Vi è allo 0 logico Qn risulta interdetto mentre Qp è in conduzione: non scorrerà corrente quindi Vo assumerà la tensione Vdd (1 logico). Al contrario quando Vi è alta Qp risulta interdetto mentre Qn è in conduzione: il collegamento tra Vo e la massa farà sì che Vo sia bassa. Passiamo alla realizzazione del circuito con il programma Linear SwitcherCAD III 4 Nella fase di progettazione possiamo operare soltanto sui parametri geometrici dei transistor. In particolare quando utilizziamo la logica CMOS è opportuno scegliere le lunghezze di canale pari alla dimensione più piccola consentita dalla tecnologia costruttiva. Inoltre per garantire la simmetria dell’invertitore si pone la condizione (W/L)p =2.5 (W/L)n in modo da avere correnti di pull-down e pull-up uguali. Per semplicità poniamo anche le tensioni di soglia uguali VTN=|VTP|=VT . Fatte queste premesse possiamo avviare la simulazione circuitale. Da questa simulazione possiamo estrapolare il grafico Vi-Vo . Per ricavare questa caratteristica facciamo in modo che il generatore di tensione Vin si porti dal valore iniziale basso di 0V a quello alto VDDV con intervalli di 10mV. Questo è il grafico che ci aspettavamo: è la tipica funzione di trasferimento di un invertitore. Si può inoltre osservare che VOH= VDD mentre VOL=0,e il grafico risulta simmetrico per Vo=VOL. Possiamo distinguere 5 diverse regioni: fin quando la tensione si mantiene costante a 5V Qn è interdetto; quando inizia a discendere Qn entra in saturazione mentre Qp è in triodo; nella regione con pendenza quasi infinita entrambi i transistors sono in saturazione; quando la pendenza inizia a diminuire Qn entra nella regione triodo mentre Qp rimane in saturazione; infine quando la tensione diventa costante e pari a 0V Qp si interdice e Qn rimane in conduzione. Dal grafico possiamo anche ricavare analiticamente VIH e VIL e i margini di rumore: Per due transistor accordati si utilizzano le formule 1 VIH = (5VDD − 2VT ) = 2.925V 8 1 VIL = (3VDD + 2VT ) =2.075 V 8 Di conseguenza i margini di rumore sono: NMH=VOH-VIL=2.075 NML=VIL-VOL=2.075 Come era prevedibile i due margini di rumore sono uguali. Per studiare le caratteristiche dinamiche dell’Invertitore CMOS creiamo un circuito partendo dal precedente in cui un invertitore deve pilotare un carico che il questo caso è un altro invertitore CMOS. 5 Poniamo in ingresso un segnale ad onda quadra di periodo 3ns con tempi di salita e discesa di 0.1ns. Il grafico risultante è: Questo grafico mostra l’andamento della variabile di ingresso e di uscita e la potenza dissipata(5*Id). Si vede che la potenza dissipata è diversa da zero solo durante i cambiamenti di stato: infatti negli invertitori CMOS la potenza statica è sempre nulla, mentre quella dinamica è positiva. Possiamo anche calcolare i tempi di propagazione, definiti come gli intervalli di tempo tra il segnale di ingresso e quello d’uscita calcolati al passaggio per il 50% del loro valore finale. Da un’analisi del grafico tPHL e tPLH sono approssimativamente di 50ps. Possiamo però calcolarli analiticamente 0.8C conoscendo il valore del carico capacitivo rappresentato attraverso la formula t PHL = t PLH = KV DD dal secondo invertitore. Possiamo anche calcolare la potenza istantanea media attraverso una elaborazione della forma d’onda 5*Id: infatti ricaviamo rapidamente PD = 0.1591mW. La potenza istantanea dipende dalla tensione di alimentazione: infatti PD = f*C*(Vdd)2. 6 Descrizione a livello Lay-out Il tracciato dell’invertitore, che dà informazioni sulla struttura fisica della porta, verrà costruito con il layout editor Microwind2 Per questa analisi abbiamo posto che i MOS abbiano una lunghezza di canale pari a 1 µm e una tensione di alimentazione VDD=5V. Per il MOS a canale N: (W/L)=(3/2), mentre per il PMOS: (W/L)=(7/2). Le altre grandezze, come valori di K, tensioni di soglia, sono invariate rispetto all’analisi precedente. Il layout è compreso fra due linee orizzontali di metal1: quella superiore è dedicata alla tensione di alimentazione (VDD), mentre quella inferiore rappresenta la linea di massa. Il MOS a canale N è posto in prossimità della linea di massa, mentre quello a canale P è nelle adiacenze della linea di alimentazione. Questa disposizione è dettata sia dalla necessità di semplificare i collegamenti, sia della necessità di disporre un numero adeguato di prese di substrato in prossimità dei dispositivi, al fine di prevenire fenomeni di aggancio (latch-up): si possono formare due transistors “parassiti”in cui può scorrere una corrente indesiderata. Questi fenomeni sono da evitare perché possono portare alla distruzione del dispositivo. Durante il progetto si è fatta attenzione a non violare le regole di progetto come per esempio l’eccessiva vicinanza tra due N-well. Ora possiamo ripetere le analisi fatte precedentemente ed in particolare quelle relative al calcolo dei tempi di propagazione e della potenza dissipata in presenza di un carico rappresentato da un secondo invertitore CMOS posto all’uscita del primo. 7 Nell’analisi a livello layout vengono introdotti dei parametri parassiti (generalmente capacità). Questi parametri modificano il funzionamento della porta, soprattutto per quello che riguarda i tempi di propagazione e la potenza dissipata. Dal grafico si vede che il tempo di propagazione rimane uguale sia per la commutazione alto-basso che per quella basso-alto, però il suo valore cresce fino a circa 70ps. Inoltre la potenza dissipata raggiunge 0.3139mW. 8 Oscillatore ad anello L’oscillatore ad anello costituisce un’interessante applicazione dell’invertitore CMOS. Infatti consiste di una serie di N invertitori (N deve essere dispari): in questo caso il fan-out del dispositivo è maggiore di uno. Passiamo alla realizzazione a livello comportamentale con Dsch2 : La particolarità di questo oscillatore è la porta NAND che consente di controllare la partenza delle oscillazioni: quando il segnale di ingresso in1 è basso, infatti, l'oscillatore e' bloccato, mentre le oscillazioni hanno inizio quando il segnale di ingresso alto. Dal grafico possiamo calcolare i tempi di oscillazione delle due uscite: sia per out1 che per out2 è di circa 2ns. A causa del fan-out maggiore di 1 i tempi di propagazione saranno maggiori di quelli visti in precedenza. Per l’analisi a livello transistor creo il modello con Switcher Cad III. 9 Si nota subito che non ci sono generatori in ingresso. Il generatore di alimentazione fornisce una funzione a gradino: assume il valore 0 in zero e dopo 2ns si porta a VDD =3.3V. Dopo il transitorio iniziale di 2ns tutte le variabili di uscita si portano al valore di circa 1.6V (VDD/2). Questa condizione presenta un punto di equilibrio instabile: un disturbo dovuto all’azione del rumore - sempre presente - o dei parametri parassiti comporta l’allontanamento dal punto di equilibrio e l’innesco delle oscillazioni, che avviene dopo circa 5ns. Infine studiamo l’oscillatore dal punto di vista del lay-out costruendo il suo modello con Microwind2. 10 Si possono distinguere chiaramente i 5 invertitori e del collegamento che porta in ingresso l’uscita. Il numero di invertitori è importante: deve essere dispari e maggiore di tre per permettere uno sfasamento di 180° ad una frequenza finita. Ripetiamo l’analisi utilizzando il tracciato e otteniamo il seguente grafico: Misurando poi il periodo di oscillazione si ricava un valore di circa 1.9ns, un valore molto prossimo a quello ottenuto attraverso l’analisi a livello transistor. 11 Multiplexer a porte di trasmissione Un multiplexer è un commutatore digitale che ha n linee di ingresso e una uscita; un insieme di ingressi di selezione indicano quale tra i segnali di ingresso deve essere trasmesso in uscita. Un multiplexer con n ingressi di selezione può scegliere tra 2n segnali di ingresso quale trasmettere all’uscita. Questo circuito è molto utilizzato nell’ambito dell’elettronica digitale, specialmente nelle memorie RAM e ROM. Inoltre è un dispositivo molto versatile: un multiplexer con n ingressi di selezione permette di realizzare qualsiasi funzione logica di n+1 ingressi. In questa esercitazione utilizzeremo multiplexer 4 a 1, ovvero con quattro ingressi e 1 uscita, il cui simbolo schematico è: 12 In funzione dei segnali S1 e S0 Y può assumere i valori I1, I2, I3 o I4 secondo la seguente tavola della verità: S1 S0 Y 0 0 I0 0 1 I1 1 0 I2 1 1 I3 Simulazione logica Per questa esercitazione realizzerò con il software DSCH un circuito, composto da porte AND e OR che realizzi la funzione logica: Y = /S1 /S0 I0 + /S1 S0 I1 + S1 /S0 I2 + S1 S0 I3. Il circuito richiede quindi 4 porte AND e una OR a quattro ingressi. Poiché la libreria di componenti del programma non contiene la porta Or a 4 ingressi dobbiamo costruirla prima di realizzare il circuito Creata la porta possiamo realizzare il circuito: 13 Per poter realizzare la funzione logica precedentemente illustrata pongo degli ingressi opportuni: collego il terminale dei segnali posti a 0 alla massa, mentre quelli posti all’1 logico alla tensione di alimentazione; quindi creo i collegamenti opportuni con i segnali di selezione e i segnali di selezione negati. Possiamo procedere alla simulazione: Ho impostato gli ingressi di selezione con segnali di clock con periodi diversi: S0 ha periodo 80ns mentre S1 160ns. In questo modo si possono far vedere tutte le varie combinazioni dei segnali di selezione. I risultati sono coerenti con quanto detto in precedenza. 14 Descrizione a livello transistor Possiamo costruire con il programma Switcher CAD 3 un modello di multiplexer 4 a 1 con porte di trasmissione con un architettura non a albero. Si è ipotizzato che i MOS che costituiscono le T-gates abbiano le dimensioni canoniche, ovvero per il PMOS W=3.5um L=1.0um e per l’NMOS W=1.5um L=1.0um. Per la simulazione pongo come ingressi di selezione dei segnali a gradino con periodo diverso: per S0 di 200ns e per S1 di 400ns. Inoltre ho modificato il grafico, traslando i vari segnali, in modo da renderlo più leggibile. La prima e la seconda forma d’onda sono gli ingressi di selezione; la terza rappresenta l’uscita; le ultime quattro sono gli ingressi. Dopo aver effettuato la simulazione si ottiene il seguente grafico: 15 Per effettuare un’analisi del transitorio inseriamo una capacità di carico si 50fF. Inoltre poniamo le frequenze dei segnali di selezione quadruplicate rispetto all’analisi precedente. Il grafico che si ottiene è: Dall’analisi dei tempi di propagazione si nota che per una variazione dei segnali di selezione si hanno: TPLH=195ps TPLH=165ps. Descrizione a livello Lay-out Per descrivere il multiplexer a livello layout utilizzeremo uno schema in cui utilizziamo come interruttore una porta di trasmissione complementare: 16 Procederemo nella costruzione del tracciato in modo graduale: realizzeremo prima una singola porta di trasmissione, quindi duplicheremo la struttura e aggiungeremo i collegamenti opportuni per giungere al tracciato completo che è: Le misure utilizzate per i transistori sono 4λ*2λ per l'NMOS e 7λ*2λ per il PMOS. Dal tracciato si può vedere che il circuito è molto compatto. Le porte di trasmissione sono state disposte come in una matrice 4x4. Per diminuire le dimensioni del circuito si utilizza uno stratagemma: i pass-transistors della seconda e quarta riga sono ribaltati per poter condividere la zona di drogaggio n ed eliminare lo spazio tra gli NMOS e la n-well. Una caratteristica particolare dei circuiti basati sulle porte di trasmissione è la funzione dell’alimentazione: in questo caso soltanto le prese di substrato delle n-well sono collegate a VDD +. 17 Nessun transistor ha alcun terminale collegato all’alimentazione o a massa, che è una cosa molto insolita. L’area totale del multiplexer così ottenuto è 112λ*130λ= 14560λ2 . Dopo aver creato il tracciato passiamo alla simulazione : Da questa seconda analisi otteniamo dei nuovi tempi di propagazione: TPLH=419ps TPHL=214ps. Poiché l’analisi a livello lay-out tiene conto dei parametri parassiti i tempi saranno diversi da quelli ricavati in precedenza: infatti prima avevamo ottenuto tempi di circa il 50% più bassi. Inoltre in questo caso i valori dei tempi di propagazioni per variazioni 0-1 e 1-0 sono molto diverse. Multiplexer con topologia ad albero E’ possibile realizzare il multiplexer utilizzando uno schema diverso da quello utilizzato in precedenza, ovvero lo schema ad albero: Ogni interruttore può essere implementato come una porta di trasmissione complementare e tutto il circuito è composto da soltanto 6 interruttori, al posto degli otto utilizzati prima. Ciò vuol dire che verranno utilizzati in tutto 12 transistors, di cui sei a canale n e sei a canale p. Rispetto alla precedente topologia si usano ben 4 transistors in meno! Quindi lo schema ad albero è senz’altro più conveniente. Inoltre il circuito risulterà ancora più compatto. Realizziamo il circuito tramite Switcher CAD 3 : 18 Le porte di trasmissione hanno le stesse caratteristiche delle porte di trasmissione precedentemente usate per la topologia non ad albero. Questo grafico è indubbiamente più semplice del precedente. Effettuando la simulazione ricaviamo il seguente grafico: Nel grafico le prime due forme d’onda sono gli ingressi di selezione, la terza rappresenta l’uscita, mentre le altre quattro gli ingressi. 19 Per effettuare l’analisi del transitorio colleghiamo una capacità di carico all’uscita Y di 50fF. Analizzando le prime variazioni dell’uscita (a 50ns e 80ns) troviamo che i tempi di propagazione sono: TPLH=178ps TPHL=170ps. Questi tempi sono più bassi di quelli ricavati con lo stesso tipo di analisi, segno della migliore configurazione del circuito. Descrizione a livello Lay-out Con una procedura analoga a quella utilizzata per realizzare il tracciato del multiplexer con topologia non ad albero costruisco il lay-out : In questo tracciato le porte di trasmissione sono ribaltate per consentire di avere due n-well (strisce verdi) comuni a tutti i transistors. Le linee di trasmissione attraversano verticalmente il tracciato. Come nel lay-out precedente alla linea di alimentazione VDD + sono collegate soltanto le prese di substrato dei transistors e nessun terminale dei transistor è collegato all’alimentazione o alla massa. In questo caso l’area del multiplexer è 118λ e 112 λ =13260λ2 . Questa area è più piccola di quella ottenuta costruendo il multiplexer con uno schema non ad albero. Però ci aspettavamo una diminuzione dell’area maggiore. Infatti utilizzando 2 transistors in meno l’area dovrebbe ridursi di circa il 25%, cosa che in realtà non avviene. Questo è dovuto alla disposizione dei transistors: infatti nello schema non ad albero i transistors erano disposti secondo una matrice 4x4 riducendo al 20 massimo lo spazio vuoto;in questo caso i transistors sono disposti secondo uno schema a triangolo, per cui si spreca necessariamente spazio. Possiamo procedere alla simulazione: Analizzando i tempi di propagazione ricaviamo: TPLH=286ps TPHL=284ps Notiamo subito che, al contrario di quanto avevamo ricavato in precedenza, i tempi di propagazione sono quasi uguali. Come era prevedibile anche in questo caso introducendo nell’analisi parametri parassiti i tempi di propagazione sono aumentati. Flip-Flop JK 21 Il Flip-flop è uno dei circuiti sequenziali più semplici: è costituito da un latch sincronizzato e da un clock, con due ingressi che forzano il dispositivo a cambiare stato. Il latch è un semplice circuito bistabile composto da due porte NOT collegate formando un ciclo a controreazione positiva. Ogni latch è in grado di memorizzare un bit di informazione. Si definisce flip-flop un circuito in cui la commutazione degli stati logici in uscita avviene in istanti determinati solo dal segnale di clock, e non dai segnali in ingresso. Per sincronizzare un latch è necessario aggiungere un clock attraverso una porta AND. Il tipo di flip-flop più semplice è il tipo SR (Set-Reset): quando l’ingresso S è portato a 1 l’uscita è forzata a 1, mentre quando l’ingresso R è portato a 1 l’uscita è forzata a 0; la combinazione S=0 e R=0 non cambia lo stato del dispositivo; la combinazione S=1 eR=1 non è invece permessa perché si giunge a uno stato instabile in cui entrambe le uscite assumerebbero il valore 0, contraddicendo alla considerazione di avere uscite complementari negli stati stabili. Quando poi S e R si annullano il dispositivo tornerà in uno dei due stati stabili, ma non si potrà prevedere quale. Quindi la combinazione SR=11 è da evitare e le sue uscite non sono utilizzate. Altra situazione da evitare è la variazione contemporanea dei due ingressi, che porta a uno stato metastabile, ovvero le uscite si pongono entrambe a uno stato intermedio dal quale escono per portarsi a stati stabili non predicibili. Con il Flip-Flop JK è possibile utilizzare tutti gli stati: infatti lo stato SR=11 può essere sostituito da uno stato utile mediante il riporto degli stati delle due uscite alla sezione logica di ingresso, in modo da effettuare un’operazione di AND tra gli ingressi e le uscite corrispondenti. Infatti nel caso in cui sia S che R siano alte l’uscita tra Q e /Q che è alta abiliterà la porta AND corrispondente, mentre quella bassa disabilita la seconda. La combinazione SR=11 serve quindi per scambiare gli stati Q e /Q. 22 Il problema che si presenta per il FFJK è un problema di temporizzazione dovuto alla durata critica del clock: ponendo che il tempo di propagazione per ogni porta sia tp, il FF commuta dopo 2tp, quindi il clock deve essere necessariamente 2tp<tck<3tp per consentire al dispositivo di commutare ed evitare inversioni successive di S’. Vedremo infatti che se il tempo di clock non rispetta queste regole si verificano dei malfunzionamenti. Descrizione Comportamentale Procediamo alla costruzione del modello con DSCH e otteniamo: In particolare questo flip-flop è costituito da sole porte NAND: due a 3 ingressi e due a 2 ingressi. Il clock è impostato per avere un periodo di 20ns. Eseguendo la simulazione possiamo notare come questa configurazione risolva i problemi di metastabilità di flip-flop SR. L’ingresso in3 che è posto sempre allo zero logico serve soltanto per far accendere le porte NAND a due ingressi. Infatti senza quell’ingresso entrambe le uscite rimangono indefinitamente allo 0 logico. In questo caso, con la frequenza di clock impostata, vediamo però che il circuito non risolve il problema della metastabilità, probabilmente perché non è rispettata la relazione tra il tempo di clock e i ritardi generati dalle porte logiche. 23 Descrizione a livello Lay-out Per realizzare il lay-out del flip-flop occorre prima dimensionare i MOS che compongono le porte logiche presenti a seconda delle esigenze; in particolare dobbiamo fare in modo che : 1. La porta NAND a due ingressi presenti un tPLH non superiore a 1ns, quando caricata da una capacità di 0.5pF. 2. La porta NAND a tre ingressi presenti un tPHL (caso peggiore) non superiore a 200ps, considerando come carico uno degli ingressi della porta NAND a 2 ingressi. 3. Le singole porte presentino caratteristiche elettriche “simmetriche” nel caso peggiore di combinazione degli ingressi. Quindi tramite le formule teoriche ricaviamo le seguenti misure: Porta Nand NMOS PMOS 3 ingressi W 3λ 8λ L 2λ 2λ Porta Nand NMOS PMOS 2 ingressi W 3λ 8λ L 2λ 2λ Cercherò inoltre di posizionare i vari MOS in modo da occupare meno spazio possibile: 24 Un modo per risparmiare spazio è quello di posizionare i MOS in modo da avere una n-well comune( come per il MUX a porte di trasmissione). Procediamo quindi con la simulazione grazie al programma MicroWind2, impostando i valori di K e della tensione di soglia Vt dei MOS; inoltre impostiamo un clock con periodo opportuno (circa 2.5ns) e facciamo in modo che i segnali di ingresso J e K siano distinti e non sovrapposti. Si ottiene un grafico del tipo: I risultati che si ottengono sono coerenti con quanto detto precedentemente e sono simili a quelli ottenuti con l’analisi comportamentale. 25 Vogliamo ora vedere gli effetti degli ingressi sovrapposti. Per fare ciò effettuiamo una nuova simulazione: In questo caso gli ingressi risultano sovrapposti per due cicli di clock, in modo da poter far notare le commutazioni. Come ci aspettavamo dalla tavola della verità le uscite commutano due volte in corrispondenza degli impulsi del clock. Effettuiamo una nuova simulazione per vedere gli effetti di un segnale di clock troppo “corto”.Per fare ciò poniamo il periodo del clock a circa 1.2ns e notiamo che si ha ancora una commutazione corretta: 26 Se proviamo a ridurre ulteriormente il periodo di clock a 1ns osserviamo che la commutazione inizia ma non si completa, lasciando invariato lo stato del dispositivo: Per superare tale problema si ricorre a soluzioni circuitali più complesse come il flip-flop master/slave. 27 Decodificatore Il decodificatore è un dispositivo che seleziona una particolare uscita in funzione di una particolare combinazione dei segnali di ingresso, secondo una predeterminata legge di decodifica. Il circuito presenta tanti ingressi quanti sono i bit della parola da decodificare e tante uscite quante sono i valori differenti assunti in base al codice scelto. Generalmente gli ingressi sono inferiori alle uscite in quanto le possibili codifiche di un bit sono più numerose del numero di bit della parola. La codifica più usata è sicuramente quella dei numeri binari, per cui ogni parola di N bit sarà rappresentata da un numero tra 0 e 2N-1. Descrizione comportamentale In corrispondenza di ogni possibile combinazione degli ingressi, una sola delle uscite e' a livello logico alto, mentre le rimanenti 2N-1 (15 in questo caso) sono a livello logico basso. Inoltre per velocizzare la decodifica è meglio disporre degli ingressi e dei loro negati, utilizzando soltanto 2N porte AND a N ingressi e 2N invertitori. Realizziamo il circuito con l’ausilio del software DSCH2: Questo dispositivo è detto 4->16 perché ha quattro ingressi e sedici uscite. E quindi composto da 16 porte AND a 4 ingressi e da 8 invertitori. 28 La creazione del circuito è molto semplice, a dispetto dell’apparenza, perché si realizza a partire da una singola porta AND che si ripete 16 volte. Ogni ingresso è costituito da un interruttore che può essere commutato dall’utente. Sono stati inoltre effettuati gli opportuni collegamenti per realizzare la funzione logica richiesta. Per la simulazione partiamo da una situazione in cui tutti gli ingressi sono allo stato logico basso. Quindi il pulsante C viene commutato. Vediamo che, con un ritardo, commutano anche due uscite. Dalla commutazione di C alla commutazione di Y0 passano circa 1.2ns, mentre la commutazione di Y4 avviene con un ritardo di circa 2.1ns. La differenza tra i due ritardi è dovuta al fatto che il tempo di propagazione di Y0 risente dell’invertitore, con fan-out 9, e della porta AND, con fan-out unitario; il tempo di propagazione di Y4 dipende non solo dall’invertitore con fan-out 9 e dalla porta AND con fan-out unitario, ma anche dal secondo invertitore con fan-out unitario. Descrizione a livello transistor Nella realizzazione del circuito con SwCAD 3 dobbiamo cercare di occupare meno area possibile, cercando di utilizzare meno transistor possibili. Scegliamo quindi di utilizzare una matrice di porte NOR in tecnologia pseudo-NMOS. Gli invertitori che pilotano gli ingressi saranno costruiti in tecnologia CMOS. E’ fondamentale anche definire le dimensioni dei transistors; per quanto riguarda gli invertitori sceglieremo di realizzare gli NMOS con larghezza di canale doppia rispetto al valore minimo consentito dalla tecnologia per limitare il ritardo dovuto al fon-out elevato: quindi W/L=6/2 per gli NMOS e W/L=15/2 per i PMOS. Per le porte NOR abbiamo la necessità di minimizzare la dissipazione di potenza, quindi per il transistor PMOS di carico W/L=3/3. Imponendo poi la tensione VOL=0.5V ricaviamo i parametri dell’NMOS, ovvero W/L= 4/2. Anche in questo caso la realizzazione del circuito avviene a partire dalla realizzazione di una singola riga della matrice che viene duplicata 16 volte. Per non rendere confusionario il disegno è possibile collegare i vari ingressi (con relativi invertitori) e l’alimentazione attraverso le etichette 29 Per la simulazione utilizzeremo come ingresso ai morsetti A, B, C e D segnali ad onda quadra di periodo rispettivamente di 8ns, 16ns, 32ns e 64ns. Questa scelta serve per mostrare tutte le diverse combinazioni di ingressi e quindi verificare il coretto funzionamento del decoder. Benché il circuito sia composto di 96 MOS la simulazione in transitorio avviene in pochi secondi. Le forme d’onda sono state traslate per rendere più comprensibile il grafico. Inoltre per semplicità 30 visualizziamo solo tre uscite (Y0, Y7 e Y15). Tali uscite si verificano quando in ingresso ci sono le combinazioni 0000, 0111 e 1111. Il funzionamento corretto è verificato. Osservando più in dettaglio la forma d’onda di Y0 si vede che il valore di VOL dipende dalla particolare parola in ingresso. Comunque nel caso peggiore si può osservare che è minore di 0.5V, in accordo con le specifiche iniziali. Il grafico successivo mostra la corrente assorbita dal decoder: Si può notare come la corrente si mantenga quasi sempre costante a un valore molto elevato (circa 7.8mA). Ciò è dovuto al fatto che per qualsiasi combinazione degli ingressi 15 delle 16 porte NOR in tecnologia pseudo-NMOS hanno uscita bassa. A questa corrente costante si assomma un termine variabile, in corrispondenza delle transizioni dei segnali di ingresso, necessario alla carica delle capacità parassite presenti nel circuito e quindi responsabile di una parte della potenza dinamica dissipata. I risultati della simulazione dicono che la corrente media assorbita dal dispositivo è circa 8mA, quindi molto vicina al “plafond” costante. Quindi la potenza dissipata dal decodificatore è dominata dalla dissipazione di potenza statica delle porte NOR. Per valutare i tempi di propagazione manteniamo gli ingressi B, C e D costanti al livello basso e facciamo commutare A in modo da avere 0->1->0. 31 Per questa particolare combinazione di ingressi Y0 ha un ritardo maggiore di Y1. Questo è dovuto, come detto in precedenza, al fatto che devono commutare due invertitori prima che commuti Y0. Il tempo di propagazione ricavato è 187ps. Descrizione a livello Lay-out La realizzazione del tracciato è divisa essenzialmente in due: la matrice delle porte NOR e le coppie di invertitori per ogni ingresso. Possiamo ora effettuare la simulazione, modificando la NetList in modo da inserire gli ingressi così come considerati nella parte precedente dell’esercitazione. 32 In questo grafico V(28) corrisponde all’ingresso C, V(20) a Y7, V(12) a Y15, V(27) a Y0, V(30) all’ingresso B, V(31) ad A ed infine V(29) corrisponde all’ingresso D. Il grafico risulta molto simile a quello ottenuto con la simulazione a livello transistor. Ora consideriamo il grafico della corrente assorbita Dall’analisi si vede che anche in questo caso il grafico ottenuto è molto simile a quello ottenuto con l’analisi a livello transistor. Il valor medio della corrente è circa 8.12mA, molto prossimo a quel “plafond” costante a 7.8mA, da cui si conferma che la potenza dissipata dal decoder è dovuta fondamentalmente alla dissipazione di potenza statica delle porte NOR. Confrontando questa simulazione con quella precedente si nota un lieve aumento della potenza dinamica dissipata dovuta alle capacità parassite trascurate in precedenza. Per valutare i tempi di propagazione poniamo gli ingressi B,C e D al valore costante basso e facciamo commutare due volte A( 0->1->0). 33 Calcoliamo i tempi di propagazione: ricaviamo circa 392ps, che è più del doppio del tempo ricavato in precedenza (187ps). L'aumento del tempo di propagazione deve attribuirsi essenzialmente ad una stima più corretta del ritardo delle porte pseudo-NMOS. Inoltre gli invertitori introducono un ritardo molto maggiore rispetto alla precedente analisi. 34