Estratto del documento

Progettazione di sistemi digitali sincroni

In questa sezione lavoreremo a livello gate. La differenza tra il livello logico e livello gate è che a livello gate

le porte logiche non sono più semplici operatori ma sono le porte logiche che abbiamo progettato e quindi

dobbiamo mappare le nostre reti logiche su una libreria di componenti che abbiamo e di cui conosciamo

anche la natura fisica e quindi siamo in grado di riconoscere anche delle proprietà, oltre che logiche e

funzionali, parametriche. Dal livello gate ci alzeremo ancora arrivando a lavorare al livello register transfer

cioè il livello dove guarderemo il trasferimento di dati tra i registri e considereremo i componenti come interi

blocchi di logica combinatoria progettata a livello gate che svolgeranno delle macrofunzioni (esempio:

somma algebrica, non OR, cioè somma logica).

Livello gate

Metriche di progetto

Le metriche di progetto che ci interessano lavorando a livello gate sono:

1. Area (A). La prima delle metriche storicamente utilizzate. È la misura della complessità circuitale. Si

chiama area perché tutta questa disciplina di progettazione ha a che fare con i circuiti integrati e

quindi il numero di componenti si rispecchiava nell’area che la superficie di silicio occupata dai

componenti stessi nel momento in cui venivano fabbricati i circuiti integrati. La complessità circuitale

è una misura di area. Per stimare l’area ci mancano molti elementi perché quando noi progettiamo

una porta logica non sappiamo quante sia grande perché non conosciamo la tecnologia di riferimento

e nono facciamo neppure un’operazione che data la tecnologia di riferimento dimensionare i

transistor. I transistor non sono tutti uguali in un circuito ma possono avere un rapporto tra la

larghezza e la lunghezza del canale (quello che collega source e drain) che dipende dalla resistenza

elettrica che devono avere quando sono accesi. Quando noi progettiamo una porta logica non

sappiamo dire quanta area occuperà nel silicio. Non sappiamo dimensionare i transistor rispetto a

tutti gli altri componenti del circuito. Se infatti pensiamo a un inverter e un NAND, un inverter ha

solo un transistor di pull-up e uno di pull-down, un NAND ha due transistor in parallelo di pull-up e

due in serie nel pull-down. Se noi avessimo il transistor del pull-down dell’inverter della stessa

dimensione dei transistor di pull-down del NAND vorrebbe dire che se il primo ha una sua resistenza

R allora il secondo avrà una resistenza doppia 2R perché messi in serie. Dal punto di vista

prestazionale il secondo sarebbe più lento del primo. Possiamo compensare questa natura intrinseca

facendo in modo che ognuno dei transistor di pull-down del NAND abbiamo una resistenza dimezzata

rispetto a quella del transistor di pull-down dell’inverter. Per dimezzare la resistenza si allarga il

canale. Ad un livello così astratto possiamo stimare l’area contando il numero di gate. Se un circuito

ha quattro porte logiche diciamo che A = 4, se ne ha 15 allora A = 15. Una stima più ragionevole si fa

portando tutto a delle porte logiche che hanno la stessa dimensione. Infatti, un NAND ha dimensioni

doppie rispetto ad un inverter. Abbiamo visto che la famiglia {NAND} ci permette di fare tutto e allora

potremmo sviluppare circuiti utilizzando solo porte NAND che hanno la stessa dimensione. Se

vogliamo affinare ulteriormente la stima possiamo contare il numero di input delle porte logiche. Se

abbiamo un circuito con un inverter e un NAND a due ingressi avremo tre ingressi quindi A = 3. Questa

tecnica è più accurata perché è come se di desse il conteggio dei transistor.

2. Prestazioni. Le prestazioni consistono nel tempo che un circuito impiega, dati gli ingressi, a produrre

le uscite. Per questa metrica ha senso distinguere due altre metriche:

a. Tempo di propagazione (Tp). Rende conto del fatto che i segnali, all’interno di un qualunque

circuito, si propagano. Ci sono dei casi in cui dopo aver applicato nuovi ingressi ad un circuito

iniziamo a veder variare le uscite e dopo un po’ le vediamo stabilizzarsi. Questo vuol dire che

quello che facciamo accadere agli ingressi non produce l’effetto sulle uscite in modo

istantaneo e che non lo produce tutto in una volta, specialmente se un circuito ha molti

segnali di uscita. È il tempo in cui l’uscita diventa stabile. È il tempo che intercorre tra

l’applicazione di una configurazione degli ingressi e la stabilizzazione delle uscite.

b. Tempo di contaminazione (Tc). Il tempo che intercorre tra l’applicazione di una

configurazione degli ingressi e i primi effetti che osserviamo sulle uscite. È il tempo che

impiega l’ingresso a contaminare le uscite, cioè a far succedere qualcosa. È sempre più breve

o uguale al tempo di propagazione.

Entrambi questi parametri sono riferibili all’intero circuito oppure al pin-to-pin dove un pin è una

porta di ingresso o uscita. Se noi prendiamo un input, e quindi una singola porta di ingresso, e un

output, e quindi una singola porta di uscita, possiamo chiederci quanto tempo intercorre affinché la

variazione che ho applicato in input si ripercuota sull’output. Questo si dice pin-to-pin.

Siccome parliamo di circuiti sincroni, che quindi hanno un clock che scandisce il tempo di

elaborazione, dopo che una configurazione di ingresso ha prodotto i suoi risultati e questi sono stati

campionati da un registro, allora il circuito può ricevere nuovi ingressi per produrre nuovi risultati.

La frequenza con cui un circuito riesce a farlo lo chiamiamo throughput. Quindi il throughput, che è

una misurazione di frequenza, ci dice quante elaborazioni al secondo riusciamo a fare. Per esempio,

se consideriamo un circuito che fa la somma, il throughput è quante somme al secondo riesce a fare.

3. Consumo di potenza. Si divide in:

a. Statico (W). È un consumo di potenza che dipende dal passaggio di corrente tra

l’alimentazione e la massa all’interno di tutti i componenti. La tecnologia FCMOS non ha

consumo di potenza statico perché i transistor nei gate sono FC (Fully Complementary) quindi

se il pull-up è acceso, e fa passare corrente, il pull-down è spento e non fa passare corrente

quindi non c’è mai un percorso conduttivo tra alimentazione e massa. Questo vuol dire che i

CMOS azzerano il consumo statico. Questo vuol dire che alimentare un circuito ma senza

modificare i suoi ingressi non comporta consumo. Nella realtà, non avendo circuiti ideali, un

po’ di corrente passa e quindi il consumo statico non è totalmente pari a 0.

b. Dinamico (W). Il consumo dinamico avviene quando all’interno di un circuito c’è bisogno di

corrente per far passare un valore da 0 a 1 e viceversa. Cioè il consumo dinamico avviane

quando la variazione delle condizioni di ingresso fa commutare gli interruttori. Solo nelle

transizioni dei segnali c’è consumo di potenza. All’aumentare della frequenza operativa il

consumo dinamico si alza perché cresce linearmente con la frequenza operativa. Se

raddoppio la frequenza, cioè il numero di commutazioni per unità di tempo, raddoppio il

consumo di potenza.

In un circuito elettrico a consumare potenza è il passaggio di corrente su una resistenza. La potenza,

che si misura in Watt, è data dal prodotto tra la corrente che passa nel circuito e la tensione, ovvero

al differenza di potenziale, ai suoi capi. In un circuito, Vdd è la differenza di potenziale tra il valore

logico alto e il valore logico basso, cioè tra l’alimentazione e la massa. Il consumo di potenza in un

circuito si misura moltiplicando la differenza di potenziale per la corrente che il circuito assorbe.

Sapendo che il nostro circuito è composto da gate CMOS, sappiamo che ogni porta logica ha un

collegamento a Vdd e un collegamento a massa (anche se non lo rappresentiamo perché lo diamo

per scontato). In origine c’erano tecnologie che avevano il problema principale del consumo di

potenza statico. Gli FCMOS hanno risolto questo problema. Non hanno potuto eliminare il consumo

di potenza dinamico. Attualmente la metrica più importante è il consumo di potenza anche perché

essendo i circuiti molto densi si fa fatica a dissipare il calore generato dal consumo di potenza. Il

circuito di potenza produce calore. Il consumo di potenza beneficia della riduzione dell’area, cioè se

i componenti sono di meno il circuito consuma meno. All’aumentare delle prestazioni il consumo di

potenza aumenta.

Esempio 1

Esempio circuito a due ingressi e due uscite. La seguente immagine mostra cosa succede quando l’ingresso

A passa da 0 a 1 avendo l’ingresso B sempre alto. La linea tratteggiata verticale rappresenta l’istante in cui

avviene la transizione di ingresso ed è l’istante dal quale iniziamo a calcolare i tempi per vedere quanto tempo

intercorre prima della prima variazione osservata in uscita e prima della stabilizzazione delle uscite.

Se noi immaginassimo che ogni porta logica introduca un ritardo, l’uscita Out2 sarà la prima a risentire della

variazione di ingresso perché da A a Out2 il segnale attraversa una sola porta logica mentre da A a Out1 ne

attraversa due. La stima di questi tempi è legata ad un modello di ritardo che noi dobbiamo attribuire ad

ognuna delle porte logiche. Il modello più semplice che possiamo usare è quello che si chiama ritardo

unitario. Questo significa che ogni porta logica introduce un ritardo di una unità di tempo. Quindi a questo

livello non ci interessa l’unità di misura ma contiamo solo il numero di porte logiche. Per vedere quali sono i

tempi di propagazione e di contaminazione ci costruiamo una tabella che abbia da una parte gli ingressi (in

questo caso A e B) come etichette di riga e dall’altra le uscite (in questo caso Out1 e Out2) come etichette di

colonna: OUT1 OUT2

A 2 1

B 2 1

Tra il segnale A e il segnale Out1 quante porte logiche attraversiamo (esempio: da A a Out1 due porte quindi

nella tabella scrivo 2) e quindi qual è il tempo di propagazione e contaminazione? In questo esempio, a livello

pin-to-pin questi due tempi sono diversi. La tabella ci mostra i tempi di propagazione e di contaminazione

pin-to-pin, quindi da ogni porta di ingresso ad ogni porta di uscita. Il tempo di contaminazione sarà 1 perché

esso è il tempo più breve tra i tempi di contaminazione, cioè tra tempi che intercorrono tra l’applicazione

degli ingressi e la loro manifestazione in uscita. La prima manifestazione la abbiamo quando cambia il primo

dei segnali di uscita. Il tempo di propagazione del circuito è 2 perché esso è il più lungo dei tempi di

propagazione pin-to-pin. Applicati gli ingressi la parola di uscita, dopo una unità di tempo avrebbe cominciato

a variare e dopo due unità di tempo si sarebbe stabilizzata.

Esempio 2

Ora semplifichiamo il circuito precedente in modo apparente. In realtà il tempo di propagazione e di

contaminazione continuano ad essere diversi anche se il circuito ha una sola uscita.

Infatti, se A e B valgono 0, il segnale n vale 1 perché è un uscita di un inverter, e il segnale B forza a 1 anche

il valore dell’uscita Out. Se il segnale A e B valgono passano da 0 a 1 succede che n vale 0 ma il NAND si trova

in ingresso n che vale 1 che non era ancora arrivata prima e il nuovo segnale B che vale 1 quindi il NAND

restituisce un valore basso. L’unita di tempo successiva arriverà in entrata al NAND n che vale 1 e il nuovo

segnale di B che vale 0 e quindi il NAND avrà come ingrassi 10 e quindi il valore di Out torna alto. Tutto questo

succede in diverse unità di tempo ma all’interno dello stesso istante. Questa variazione temporanea di un

segnale che poi si riporta al valore precedente si chiama glitch ed è una transizione spuria, cioè qualcosa che

avviene in transitorio ma che non è motivato dalla funzione logica che questo circuito svolge. Quando A e B

valgono 0 l’uscita vale 1. Quando A e B valgono 1 l’uscita vale ancora 1. Quindi, dal passaggio da 00 a 11 in

ingresso non ci aspetteremo una variazione dell’uscita e in realtà abbiamo un glitch per colpa di come il

circuito è stato implementato. In questo caso il tempo di propagazione è 2 e il tempo di contaminazione è 1.

Questo è motivato dal fatto che dall’ingresso A all’uscita Out si attraversano due porte logiche mentre

dall’ingresso B all’uscita Out se ne attraversa una sola.

Esempio 3

Semplifico ancora una volta il circuito precedente e questa volta ho in ingresso un solo segnale A e una sola

uscita Out.

Anche in questo circuito ci ritroviamo ad avere un glitch anche se il segnale è uno solo perché A arriva al

NAND sia in forma vera che in forma negata. Dal punto di vista logico questo circuito non ha senso perché

corrisponderebbe all’espressione logica A+A’ che fa sempre 1, quindi è una costante e l’uscita non dipende

dagli ingressi. Nella pratica, l’uscita non è sempre costante perché quando il segnale A passa per l’inverter si

verificano le stesse circostanze che abbiamo visto nel circuito precedente. Il tempo di propagazione vale 2 e

il tempo di contaminazione vale 1.

Esempio 4

In questo esempio introduco un secondo segnale B e un secondo NAND.

Se B vale 1 allora rappresenta un valore neutro per il NAND, quindi, è come se non ci fosse trasformando quel

primo NAND in un inverter. Allora se B vale 1 questo circuito si riduce al precedente e il comportamento è lo

stesso, allora Out è sempre uguale ad A+A’. Quando invece B vale 0 allora rappresenta l’elemento forzante

per il NAND quindi n è fisso a 1 e allora sarà il secondo NAND a comportarsi come un inverter, e allora Out è

sempre uguale a A’. Il fatto che un certo percorso che attraversa due porte logiche sia logicamente attivo,

cioè potremmo avere un cammino lungo due porte logiche ma potrebbero non verificarsi mai le condizioni

logiche che lo rendono percorribile, cioè che consentono ai segnali di propagarsi dagli ingressi alle uscite

attraverso quel cammino. Quindi, quando B è uguale a 0 non vedremmo mai attivo il cammino lungo 2 che

va da B a Out. Se A e B sono uguali a 0 n vale 1 e Out 1. Se B passa da 0 a 1 sia n che Out continuano ad essere

1, quindi la variazione di B non si ripercuote sull’uscita.

Se A vale 1, quando B vale 0 allora n vale 1 e Out vale 0. Quando B passa da 0 a 1 allora n diventa 0 dopo una

unità di tempo e Out diventa 1 dopo due unità di tempo. Quando B torna basso n torna ad 1 dopo una unità

di tempo e Out torna a 0 dopo due unità di tempo, cioè il ritardo è di due unità di tempo.

Se noi volessimo ottenere il tempo di contaminazione e il tempo di propagazione pin-to-pin dovremmo

costruirci la tabella: OUT

A Tc=1 e Tp=2

B Tc=2 e Tp=2

Quindi questo circuito ha come tempo di contaminazione 1 e come tempo propagazione 2. Quando accade

che il tempo di contaminazione è diverso dal tempo di propagazione può significare che ci sia un glitch oppure

può dipendere dal fatto che condizioni logiche attivino un cammino anziché un altro, cioè possono esserci

condizioni logiche diverse che attivano un cammino più lungo o un cammino più breve. Quindi, quando dico

che il tempo di contaminazione è il più breve tra i tempi di contaminazione si intende di valutare tutti i pin-

to-pin in tutte le condizioni logiche in cui si possono trovare.

Esempio 5

Prendiamo per esempio il circuito combinatorio chiamato Multiplexer a due vie. Il suo scopo era prendere

uno dei due segnali di ingresso e copiarlo in uscita a seconda che il segnale di controllo valesse 0 o 1. La

= ’ + .

funzione era L’implementazione del circuito è:

Questo è un circuito che ha tre ingressi e una sola uscita, quindi, se vogliamo ottenere i ritardi pin-to-pin

dobbiamo costruire la seguente tabella chiedendoci per ogni segnali di ingresso quanto tempo impiegano

per arrivare all’uscita sia per contaminarlo sia per stabilizzare gli effetti:

Tc=2 e Tp=2

Tc=2 e Tp=2

Tc=2 e Tp=3

Quindi per questo circuito il tempo di propagazione vale 3 e il tempo di contaminazione vale 2. Per dire che questi

percorsi siano tutti percorribili dobbiamo trovare una condizione che abiliti il cammino. Possiamo vedere se esiste un

e ha lunghezza 3. Affinché questo avvenga bisogna che gli effetti del segnale riescano

cammino che vada da

a propagarsi fino a e quindi deve valere 1 così da essere l’elemento neutro del primo NAND e quindi

.

lasciar propagare il segnale L’uscita del NAND in basso deve valere 1 per lo stesso motivo, cioè deve essere

l’elemento neutro per l’ultimo NAND. Per valere 1 allora deve valere 0. Abbiamo dimostrato che la

condizione logica può esistere e allora il tempo di propagazione è 3. L’area del circuito è 4 perché ci sono

quattro porte logiche, ma se usiamo un modello più accurato possiamo contare gli ingressi delle porte logiche

che sono 7 e allora raddoppiando tale numero diciamo che il circuito è composto da 14 transistor e quindi

stimare così l’area. Dal punto di vista prestazionale possiamo dire Tc = 2 e Tp = 3, oppure dichiarare la

tabellina intera che mostra i tempi di contaminazione e propagazione pin-to-pin.

L’analisi che non guarda le condizioni di attivazione del circuito si dice analisi statica perché guarda soltanto quanto

sono lunghi i cammini senza preoccuparsi se possono essere davvero attraversati. L’analisi dinamica considera anche

se i percorsi possono essere attraversati e quindi è come se stessimo simulando il circuito.

Stile di progetto

Quello che abbiamo fatto finora a livello di logica combinatoria era seguire un procedimento di sintesi logica

cioè si parte da una specifica funzionale che si t

Anteprima
Vedrai una selezione di 7 pagine su 26
Sistemi digitali sincroni Pag. 1 Sistemi digitali sincroni Pag. 2
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Sistemi digitali sincroni Pag. 6
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Sistemi digitali sincroni Pag. 11
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Sistemi digitali sincroni Pag. 16
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Sistemi digitali sincroni Pag. 21
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Sistemi digitali sincroni Pag. 26
1 su 26
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher tommasop01 di informazioni apprese con la frequenza delle lezioni di Reti logiche e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi "Carlo Bo" di Urbino o del prof Bogliolo Alessandro.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community