SECONDA UNIVERSITA DEGLI STUDI DI NAPOLI. Facoltà di Ingegneria

Documenti analoghi
senza stato una ed una sola

Componenti notevoli combinatori

Reti combinatorie. Reti combinatorie (segue)

Reti combinatorie (segue) Reti combinatorie. Lezione 2. Architettura degli Elaboratori A. Sperduti 1

4 STRUTTURE CMOS. 4.1 I componenti CMOS

Le porte logiche. Elettronica L Dispense del corso

SisElnF1 12/21/01. F CIRCUITI COMBINATORI E SEQUENZIALI F1 Circuiti combinatori

Prima esercitazione. a.a

anno scolastico 2009 / 2010 ELETTRONICA per Elettrotecnica ed Automazione

SisElnF1 17/12/2002. E CIRCUITI COMBINATORI E SEQUENZIALI E1 Circuiti combinatori

Reti Logiche 1. Prof. B. Buttarazzi A.A. 2009/2010. Circuiti Addizionatori

Circuti AND, OR, NOT Porte logiche AND

Porte logiche di base. Cenni circuiti, reti combinatorie, reti sequenziali

Multiplexer. Multiplexer 2 a 1 (a 1 bit) e sua implementazione. Multiplexer 2 a 1 (a 32 bit) e sua implementazione

SISTEMI. impostazione SISTEMI. progettazione. Saper utilizzare modelli di circuiti combinatori

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 30/3/2015

Esercitazione del 21 Maggio 2008

Circuiti combinatori notevoli

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 5/9/2016

Esercitazione del 23/03/ Soluzioni

Circuiti e reti combinatorie. Appendice A (libro italiano) + dispense

Porte logiche di base. Cenni circuiti, reti combinatorie, reti sequenziali

Tecnologia CMOS. Ing. Ivan Blunno 21 aprile 2005

Esame Elettronica T-1 Prof. Elena Gnani 19/09/2014

Un contatore è un registro che evolve secondo una sequenza predefinita di stati ordinati all applicazione di un impulso di ingresso

Fondamenti di Informatica

Elettronica dei Sistemi Digitali Registri di memoria CMOS e reti sequenziali

Calcolatori Elettronici

. Nota: le tensioni dono riferite all'ingresso ed all'uscita dello stesso circuito. G. Martines 1

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 18/1/2016

Elettronica digitale

ESERCITAZIONE 4.5. Approfondimento Circuiti Logici e Sequenziali

Reti Logiche Combinatorie

Circuiti sincroni circuiti sequenziali:bistabili e latch

Lezione 7 Sommatori e Moltiplicatori

Componenti per l aritmetica binaria

Logica binaria. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Fondamenti di Elettronica Ing. AUTOMATICA e INFORMATICA - AA 2010/ Appello 09 Febbraio 2012

I sommatori S R. R in. Full. Adder

I circuiti logici: definizione delle funzioni logiche

PORTE LOGICHE. Si effettua su due o più variabili, l uscita assume lo stato logico 1 se almeno una variabile di ingresso è allo stato logico 1.

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 17/6/2015

PSPICE simulazione di circuiti digitali Flip Flop M/S, Moltiplicatore parallelo, Memoria SRAM, sommatore, comparatore

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino. Gruppo B: Famiglie logiche Lezione n. 9 - B - 5:

Tecniche di Progettazione Digitale Elementi di memoria CMOS e reti sequenziali p. 2

Note sul dimensionamento delle porte CML ed ECL.

Riassunto tecnica digitale

Architettura degli Elaboratori, Esercitazione 1

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 8/9/2015

Logica Digitale. Fondamenti di Informatica - Prof. Gregorio Cosentino

Fondamenti di Informatica B

Esercizio Il circuito in figura denominato ADD4 effettua l operazione di addizione su numeri binari interi senza segno di quattro bit (S = A + B).

Moltiplicatori HW e ALU

Struttura di un circuito dinamico

Richiami di Algebra di Commutazione

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

(HIGH) 0 (LOW) Porte logiche. Porte Logiche. L inverter. Rappresentazione dei segnali

Seconda esercitazione

Circuiti Combinatori

Algebra e circuiti elettronici

I circuiti digitali: dalle funzioni logiche ai circuiti

Architettura degli Elaboratori A Modulo 2

RELAZIONE DEL PROGETTO DI UN CONTATORE BINARIO UP/DOWN MODULO 4 PER IL CORSO DI APPARATI ELETTRONICI 1. INTRODUZIONE

Esercitazione 11. Control-Unit. Data-Path

Circuiti digitali combinatori

I circuiti binari: definizione delle funzioni logiche

architecture tipo_architettura of nome_del_modulo is begin architecture tipo_architettura of nome_del_modulo is

Unità Aritmetico-Logica

Capitolo 1 Circuiti integrati digitali. Capitolo 2 L invertitore CMOS. Introduzione

pdseln 1 SISTEMI ELETTRONICI Ingegneria dell Informazione Modulo Obiettivi del gruppo di lezioni D Obiettivi di questa lezione (D2)

I circuiti digitali: dalle funzioni logiche ai circuiti (le SOP)

Circuiti di base e ALU. Lorenzo Dematte

Circuiti combinatori notevoli

Esercizi Risolti RETI LOGICHE T (Modulo 2)

Forme canoniche, circuiti notevoli, criteri di ottimizzazione

Tecniche di semplificazione. Circuiti digitali notevoli

I CONTATORI. Definizioni

(HIGH) 0 (LOW) Porte logiche. Porte Logiche. L inverter. Rappresentazione dei segnali

Circuiti statici, dinamici e circuiti sequenziali. Esercizio A 15/07/2007

Progetto di Circuiti Aritmetici

Dalla tabella alla funzione canonica

06AZN - Fondamenti di Informatica (GES, LOP, ORG) - esercitazione del 8/10/08 - v ā b + b c + ā c =...

Page 1. SisElnE1bis 1/10/ DDC 1 SISTEMI ELETTRONICI. Ingegneria dell Informazione. Modulo. Obiettivi del gruppo di lezioni E

Esercitazione dell 11 Giugno 2008

Elettronica Digitale. 1. Sistema binario 2. Rappresentazione di numeri 3. Algebra Booleana 4. Assiomi A. Booleana 5. Porte Logiche OR AND NOT

Elettronica Inverter con transistore MOS; tecnologia CMOS e porte logiche combinatorie CMOS

Logica binaria. Cap. 1.1 e 2.1 dispensa

Architettura degli Elaboratori. Davide Bertozzi Dipartimento di Ingegneria Università of Ferrara. Componenti Combinatori Standard

I circuiti digitali: dalle funzioni logiche ai circuiti (le SOP)

Esercitazione III Simulazione PSpice dell invertitore CMOS

INVERTER IN CASCATA. Ponendo. t f = A N C L /β n = R n C L. e analogamente per t r per la coppia di inverter si ha. Se W p =2W n

Architettura degli Elaboratori

Introduzione ed elementi dell'algebra di Boole

Corso di Circuiti Logici Appunti e Approfondimenti A. Di Stefano

Elettronica I Porte logiche CMOS

Modello sequenziale. Modello sequenziale: i Process 13/11/2014. ENTITY ffsr IS Port ( s,r: IN std_logic; q, qn: OUT std_logic); END ffsr;

Transcript:

SECONDA UNIVERSITA DEGLI STUDI DI NAPOLI Facoltà di Ingegneria Corso di Laurea Magistrale in Ingegneria Informatica Corso di Elettronica dei Sistemi Digitali Progetto Progettazione di un IC per la risoluzione di disequazioni di primo grado in Pipeline Docente Prof. Aldo Minardo Studenti Andrea Cirillo Matr. A18000046 Pasquale Cirillo Matr. A18000045 Anno Accademico 2011-2012

1 Introduzione Nel corso del progetto ci si è rivolti alla progettazione e alla simulazione di un IC per la risoluzione di disequazioni di primo grado sfruttando la tecnica della Pipeline. L obiettivo è quello di ottenere, dati tre ingressi A, B, C su quattro bit, il risultato delle disequazioni: A + B C A + B C (1) Il layout del sistema è stato realizzato seguendo un approccio modulare per cui, di seguito, si procederà illustrando singolarmente il funzionamento dei diversi dispositivi per passare, infine, alla composizione degli stessi. In particolare, i dispositivi sono stati progettati in tecnologia CMOS da 0.25µm con 6 livelli di metal con l ausilio del software Microwind 3.1 : esso consente al progettista di simulare e progettare un circuito integrato a livello fisico. La struttura in Pipeline è stata progettata con la tecnologia a Pass-Transistor seguendo lo schema generale riportato in Figura 1, dove la logica combinatoria contrassegnata con F corrisponde ad un Adder Ripple Carry a 4 bit realizzato sfruttando la tecnologia a Gate di Trasmissione, mentre quella contrassegnata con G corrisponde ad un Comparatore a 4 bit. In realtà, alla struttura basilare illustrata sono state apportate alcune modifiche che verrano descritte nei paragrafi successivi. 2 Invertitore La Figura 2(a) mostra lo schema circuitale di un invertitore CMOS statico. Il suo funzionamento è facilmente intuibile a partire dal modello a interruttore del transistor MOS mostrato in Figura 2(b). In prima approssimazione, il transistor può essere rappresentato da un interruttore con una resistenza infinita quando è aperto ( V GS < V T ) e una resistenza finita quando è chiuso ( V GS > V T ). Ciò si traduce nella seguente interpretazione dell invertitore: se V in ha un valore logico alto uguale a V DD, il transistore NMOS è attivo e il transistor PMOS è interdetto. In queste condizioni esiste un cammino diretto tra l uscita e la massa del circuito; a regime l uscita assume una tensione V out = 0 V. Figura 1: Pipeline 1

(a) (b) Figura 2: Invertitore statico CMOS: (a) Schema circuitale, (b) rappresentazione dell invertitore mediante interruttori. Figura 3: Analisi della risposta dinamica dell invertitore CMOS Invece, quando la tensione di ingresso ha un valore logico basso (0 V ) i transistor NMOS e PMOS sono rispettivamente spento e acceso; l uscita è connessa attraverso il PMOS all alimentazione e assume un valore di tensione V out = V DD. Questa porta realizza la funzione logica NOT. Utilizzando lo stesso modello ad interruttore del transistore MOS, è possibile fare un analisi qualitativa del comportamento dinamico della porta logica (Figura 3). La risposta dinamica è dominata principalmente dalla capacità di uscita C L, che è composta dalle capacità parassite dei drain dei due transistor, dalla capacità delle piste di interconnessione e dalle capacità di ingresso delle porte logiche che l invertitore sta pilotando. Supponendo che la tensione di ingresso commuti istantaneamente e considerando una transizione basso-alto, avremo che la risposta dinamica è determinata dal tempo che la porta impiega a caricare la capacità C L attraverso la resistenza R p. La dipendenza della resistenza e della capacità dalla tensione V out può essere eliminata rimpiazzando entrambi gli elementi con i loro corrispondenti lineari. In questo modo, il calcolo del tempo di propagazione del circuito si semplifica in un analisi di una rete RC. Per cui: 2

Figura 4: Invertitore statico CMOS: Layout realizzato in Microwind 3.1 t p = t phl + t plh 2 t phl = 0, 69R eqn C L t plh = 0, 69R eqp C L = 0, 69C L ( Reqn + R eqp 2 ) (2) Per avere che i tempi di propagazione di una porta logica siano gli stessi per entrambe le commutazioni del segnale di ingresso è necessario realizzare i due transistor in modo che abbiano approssimativamente lo stesso valore di resistenza equivalente. A tale scopo, la realizzazione riportata nella Figura 4 mostra un invertitore composto da un transistor PMOS con un rapporto di aspetto ( ) W L = 1.5 0.25 e da un transistor NMOS con un rapporto di aspetto ( ) W L = 0.5 0.25. Considerando un carico sul nodo di uscita di 0.01 pf, la porta logica mostra un tempo di ritardo per le due transizioni molto simili tra loro (Figura 5): per la transizione basso-alto la porta mostra un ritardo di circa 22 ps, mentre per la transizione alto-basso il ritardo è di circa 34 ps. 3

Figura 5: Invertitore statico CMOS: test del dispositivo 3 Il sommatore L addizione è l operazione aritmetica usata più frequentemente e costituisce spesso il fattore limitante per la velocità computazionale di un sistema. Dunque, l ottimizzazione accurata dei blocchi sommatori riveste il ruolo di massima importanza nel progetto di un unità di elaborazione. L ottimizzazione procede sia a livello logico sia a livello circuitale. A livello logico è possibile riorganizzare la struttura delle varie relazioni booleane in modo da ottenere un circuito più piccolo e veloce. D altra parte, a livello di circuito è possibile manipolare le dimensioni dei transistor e la topologia delle porte logiche in modo tale da ottimizzare ciascun elemento che compone il sommatore. La Tabella 1 mostra la tabella di verità di un sommatore binario (full adder): A e B sono i due bit da sommare, C i è il riporto in ingresso, S rappresenta il risultato della somma e C o è il riporto di uscita risultante dalla somma A + B. Le relazioni booleane che legano gli ingressi A, B e C i alle uscite S e C o si possono esprimere come segue: S = A B C i = A B C i + ĀB C i + Ā BC i + ABC i (3) C o = AB + BC i + AC i Molto spesso è utile dal punto di vista dell implementazione definire i segnali di somma e riporto di uscita S e C o in funzione di tre segnali intermedi: G (Generate), D (Delete) e P (Propagate). G = 1 significa che il riporto in uscita (C o ) è generato, cioè posto a 1 indipendentemente dal valore di C i ; D = 1 rappresenta il caso opposto in 4

A B C i S C o 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Tabella 1: Tabella di verità di un sommatore binario cui C o è posto a 0 indipendentemente da C i ; P = 1 significa che il valore del riporto di uscita sarà uguale a quello di ingresso, cioè che il valore del riporto all ingresso C i viene propagato verso l uscita C o. Dando uno sguardo alla tabella di verità, possiamo ricavare le espressioni booleane che legano i segnali G, D e P ai valori logici dei bit in ingresso A e B: G = AB D = Ā B P = A B (4) Da queste relazioni si possono ricavare S e C o in funzione di P e G: C o (G, P ) = G + P C i S (G, P ) = P C i (5) Notiamo che i segnali G e P sono funzione dei solo ingressi A e B, ma non del segnale di riporto C i. Un sommatore a N bit può essere realizzato nel modo più semplice mettendo in cascata N blocchi full-adder, connettendo l uscita del riporto del blocco k 1 (C o,k 1 ) al riporto di ingresso del blocco k (C i,k ), con k = 1, 2,... N 1, mentre il riporto di ingresso del primo blocco (C i,0 ) è costante a 0. Questo tipo di architettura è detta sommatore ripple-carry (sommatore a propagazione del riporto), poichè il riporto si propaga da uno stadio all altro. Il tempo di ritardo del circuito dipende dal numero di stadi logici che devono essere attraversati che a sua volta è funzione della configurazione dei bit in ingresso: per alcune coppie di ingressi non vi è alcuna propagazione, mentre per altre coppie il riporto deve propagarsi attraverso l intera catena dal bit meno significativo al bit più significativo. Il tempo di propagazione di questa struttura è definito come il ritardo calcolato in condizioni di caso peggiore tra tutte le combinazioni possibili degli ingressi. Nel sommatore ripple-carry, il caso peggiore si verifica quando il riporto è generato nel bit meno significativo e propagato lungo tutta la catena fino al bit più 5

Figura 6: Circuito a gate di trasmissione che realizza un full-adder con tempi di propagazione simili per il segnale di somma e riporto significativo. Il valore del riporto è usato, infine, nell ultimo stadio per calcolare il bit più significativo della somma. Il tempo di ritardo è, quindi, proporzionale al numero N di bit delle parole di ingresso ed è approssimativamente dato da: t add = (N 1) t C + t S (6) dove t C è il tempo per il calcolo del riporto (carry) da C i a C o e t S quello della somma da C i a S. Un full-adder può essere costruito usando multiplexer e porte logiche XOR. Sebbene questo approccio non sia facilmente praticabile in logica complementare, diventa abbastanza semplice usando la logica a gate di trasmissione. Una possibile implementazione di un full-adder basato su questa tecnica è mostrato nella Figura 6 e impiega 24 transistor. Questa realizzazione fa uso dei segnali intermedi di propagazione (P ) e generazione (G) del riporto presentati nelle (4). Il segnale P, che deriva dall operazione XOR tra A e B, è usato per selezionare il valore diretto o negato del riporto in ingresso come nuovo valore della somma. Inoltre, in funzione del valore del segnale P, il riporto in uscita assume il valore del riporto in ingresso oppure quello dell ingresso A (in alternativa è possibile usare anche B). Una delle caratteristiche più interessanti di questo tipo di realizzazione è la simmetria tra i tempi di propagazione della somma e del riporto in uscita. Seguendo un approccio modulare verranno di seguito illustrate le singole parti che compongono il sommatore partendo dall elemento principale, il gate di trasmissione, e procedendo gradualmente alla composizione delle funzioni più complesse utilizzate per il calcolo della somma e del riporto. 6

Figura 7: Gate di trasmissione CMOS 3.1 Il gate di trasmissione Il gate di trasmissione fonda il suo funzionamento sulle proprietà complementari dei transistor NMOS e PMOS: i dispositivi NMOS trasmettono bene gli 0 logici e male gli 1; invece, i dispositivi PMOS trasmettono correttamente gli 1 logici, ma male gli 0. Il gate di trasmissione sintetizza in un unico componente le proprietà migliori di entrambi i transistor, combinando un NMOS e un PMOS in parallelo come mostrato in Figura 7. I segnali di controllo, C e C, sono complementari: quando C = 1, entrambi i MOSFET sono attivi, permettendo al segnale di passare attraverso il gate di trasmissione, per cui: A = B se C = 1 Al contrario, con C = 0, entrambi i transistor sono interdetti e il gate di trasmissione diventa un circuito aperto tra A e B. Consideriamo il processo di carica del nodo B da 0 a V DD attraverso il gate di trasmissione in figura Figura 8a. Il nodo A è mantenuto a V DD e il gate di trasmissione è abilitato (C = 1 e C = 0). Se fosse presente il solo dispositivo NMOS, il nodo B sarebbe caricato solamente fino a V DD V T n, cioè fino al punto in cui il transistor NMOS si spegne. Tuttavia, essendo presente e acceso anche il transistor PMOS (V GSp V DD ), l uscita viene caricata fino a V DD. La Figura 8b mostra il caso opposto, cioè, la scarica del nodo B da V DD a 0. Il transistor PMOS da solo può scaricare il nodo B fino a V T p e poi si spegne. Il transistor NMOS in parallelo rimane comunque acceso (essendo V GSn = V DD ) e consente di scaricare completamente il nodo B a massa. Sebbene il gate di trasmissione richieda due transistor e due segnali di controllo, esso consente di ottenere l escursione logica massima tra massa e alimentazione. Nella Figura 9 è riportato il layout del gate di trasmissione implementato utilizzando un transistor PMOS con un rapporto di aspetto ( ) W L = 1.5 0.25 e un transistor NMOS con un rapporto di aspetto ( ) W L = 0.5 0.25. In queste condizioni, considerando una capacità di carico sul nodo di uscita pari a 0.01 pf, il tempo di propagazione per la transizione basso-alto è di circa 42 ps, mentre per la transizione alto-basso è di circa 46 ps. Dalla Figura 10 è possibile notare come sulla commutazione basso-alto del segnale di controllo Clock collegato al Gate del transistor NMOS (e la corrispondente transizione alto-basso del segnale Clock collegato al terminale Gate del PMOS) l impulso sull ingresso DataIn si propaghi sull uscita DataOut. 7

Figura 8: Il gate di trasmissione fornisce un escursione logica completa tra massa e alimentazione Figura 9: Layout del Gate di trasmissione realizzato in Microwind 3.1 3.2 Generazione del segnale di propagazione del riporto Come descritto precedentemente, il segnale di propagazione del riporto è calcolato applicando l operazione XOR tra il segnale A e B. La funzione logica XOR è facilmente implementabile con la tecnica a gate di trasmissione: la soluzione della Figura 6 fa uso di due gate di tramissione e due invertitori in modo da ottenere, oltre al segnale di propagazione P, anche il segnale P. Analizziamo, ora, il comportamento del circuito considerando l ingresso A = 1 (Ā = 0) e B = 0: il gate di trasmissione in alto risulta essere spento, per cui la tensione al nodo P è imposta dal primo invertitore pilotato dall ingresso B (il segnale Ā collega il transistor NMOS a massa) ed è uguale al valore logico 1; il gate di trasmissione in basso è acceso, mentre il secondo invertitore risulta essere spento, per cui il nodo P verrà scaricato dal gate di trasmissione e portato al valore logico 0. Quando l ingresso B commuta da 0 a 1, l invertitore in alto pone il nodo P al valore logico 0 e il gate di trasmissione in basso traferisce il valore logico alto sul nodo P. Analogamente, le stesse analisi possono essere effettuate quando l ingresso A è 8

Figura 10: Gate di trasmissione: test del dispositivo uguale a 0. Nella Figura 11 è riportato il layout del circuito implementato, mentre nella Figura 12 è riportato un test che illustra le analisi effettuate precedentemente. 3.3 Circuiti per la somma e per il riporto L implementazione di un sommatore con gate di trasmissione prevede tempi di propagazione simili per il segnale di somma e riporto perchè entrambi i segnali attraversano al massimo un gate di trasmissiione e un invertitore. Il segnale P, che deriva dall operazione XOR tra A e B, è usato per selezionare il valore diretto o negato del riporto in ingresso come nuovo valore dell uscita della somma. Inoltre, in funzione del valore del segnale P, il riporto di uscita assume il valore del riporto in ingresso oppure quello dell ingresso A. Il circuito che realizza tutto ciò, è formato da due multiplexer che realizzano le funzioni logiche seguenti: S = (C i P + C i P ) C o = ( C i P + Ā P ) (7) Nelle seguenti condizioni di funzionamento: 9

Figura 11: Layout del circuito per la generazione del segnale di propagazione realizzato in Microwind 3.1 C i = 1 ( C i = 0) A = 1 (Ā = 0) si ha: quando P = 1 il secondo gate di trasmissione (dall alto nella Figura 6) è acceso e lascia passare il valore in ingresso C i che, dopo essere stato negato dall invertitore in cascata, rappresenterà il nuovo valore della somma; il nuovo valore per il riporto di uscita sarà ottenuto negando il valore di C i in ingresso al quarto gate di trasmissione (in basso nella Figura 6). Nella Figura 13 è riportato il layout del circuito che calcola la somma e il riporto di uscita, mentre nella Figura 14 è mostrato un test che sintetizza l analisi appena effettuata. 3.4 Full-Adder a 1 bit Il Full-Adder per la somma di due operandi ad un bit viene ottenuto dalla composizione dei circuiti analizzati nelle sezioni precedenti. La Figura 15 mostra il layout del dispositivo, mentre la Figura 16 mostra un test realizzato inserendo in ingresso al sommatore dei segnali variabili per A, B e C in : in particolare la simulazione mette in evidenza come i tempi di propagazione per il segnale di somma e di riporto uscente siano molto simili tra loro. Da come è possibile notare il dispositivo risponde seguendo il comportamento atteso: quando i tre ingressi hanno un valore logico alto, sia il segnale di somma che di riporto uscente assumono un valore logico alto, mentre quando i tre ingressi sono bassi sia la somma che il segnale di riporto uscente commutano da 1 a 0. 10

Figura 12: Circuito per la generazione del segnale P: test del dispositivo 3.5 Full-Adder a 4 bit Un sommatore a 4 bit ripple carry (propagazione del riporto) è ottenibile collegando quattro full-adder a 1 bit in cascata connettendo l uscita del riporto del blocco k 1 (C o,k 1 ) al riporto di ingresso del blocco k (C i,k ). Come espresso dalla (6), il tempo di ritardo è proporzionale al numero N di bit delle parole di ingresso. Precedentemente è stato accennato che nel sommatore ripple carry il caso peggiore si verifica quando il riporto è generato nel bit meno significativo e propagato lungo tutta la catena fino al bit più significativo e, inoltre, il valore del riporto è usato nell ultimo stadio per calcolare il bit più significativo della somma. Un analisi sul caso peggiore richiede, quindi, che sia A 0 che B 0 siano uguali a 1, dato che il riporto in ingresso alla catena è sempre 0, mentre tutti gli altri stadi devono essere in stato di propagazione (uno e solo uno tra A i e B i deve essere 1). Infine, è necessario che l uscita della somma del bit più significativo esegua una transizione: se assumiamo che il valore iniziale di S N 1 sia 0, esso dovrà commutare a 1. A tale scopo è sufficiente che A N 1 e B N 1 siano entrambi alti o bassi in modo da ottenere un valore alto della somma quando arriva un riporto con valore 1. Ad esempio, i seguenti valori di A e B danno luogo al caso peggiore per la somma di due numeri interi a 4 bit (LSB a destra): A: 0001 B: 0111 Per misurare il tempo di propagazione al caso peggiore è sufficiente mantenere costanti tutti i bit ad eccezione di A 0 che può essere fatto commutare tra 0 e 1. La Figura 17 11

Figura 13: Layout del circuito per il calcolo di somma e riporto di uscita realizzato in Microwind 3.1 mostra il sommatore implementato, mentre nella Figura 18 è riportata la simulazione effettuata per il calcolo del ritardo di propagazione. Considerando i valori di A e B riportati nella (3.5) si ha: t plh = 944 ps t phl = 588 ps t p = t plh + t phl 2 = 766 ps Il ritardo di propagazione calcolato sarà utilizzato, in seguito, per calcolare la frequenza massima a cui il circuito completo in pipeline dovrà lavorare. 4 Il comparatore Un comparatore digitale o comparatore magnitudo (magnitude comparator) è un dispositivo elettronico che, presi due numeri in ingresso in formato binario, determina se un numero è maggiore, minore o uguale all altro. Il comparatore è uno dei dispositivi più usati nelle central processing units (CPU) e nei microcontrollori. Un comparatore è mostrato nella Figura 19 e si può notare come l uscita sia usualmente una variabile di tre bit. (8) 12

Figura 14: Circuito per il calcolo di somma e riporto di uscita: test del dispositivo A i B i E i 0 0 1 0 1 0 1 0 0 1 1 1 Tabella 2: Tabella di verità per la funzione di uguaglianza Per semplicità, la progettazione del dispositivo, come per il sommatore, è avvenuta seguendo un approccio modulare, ossia è stato prima progettato un comparatore ad 1 bit implementando la sola funzione di uguaglianza e poi, usando tale modulo come componente base, è stato progettato il comparatore di nibble (4 bit) completo. Le funzioni G (A > B), E (A = B) e L (A < B) sono state ricavate utilizzando le corrispondenti tabelle di verità e mediante la semplificazione delle funzioni logiche tramite la tecnica delle Mappe di Karnaugh. Viene riportato di seguito un esempio per il calcolo delle funzioni G, E e L basato su un comparatore a 2 bit (l estensione al caso generale risulta essere alquanto semplice). Un comparatore a 2 bit è un dispositivo con quattro ingressi (A 0, B 0, A 1, B 1 ). Si può affermare che A = B solo se tutti i bit della stessa posizione sono uguali, quindi A i = B i per ogni i. Dalla Tabella 2 si ricava, quindi, che E 0 = A 0 B 0 +Ā0 B 0 e che E 1 = A 1 B 1 + Ā1 B 1. Dire che A = B implica che A i = B i (E i = 1), ossia che E 0 E 1 = 1. Per cui si ricava che la funzione E = ( A 0 B 0 + Ā0 B ) ( 0 A1 B 1 + Ā1 B ) 1. Notando che 13

Figura 15: Layout del Full-Adder a 1 bit realizzato in Microwind 3.1 A i B i G i 0 0 0 0 1 0 1 0 1 1 1 0 Tabella 3: Tabella di verità per la funzione di maggioranza (x y) = (xy + xȳ) e notando che: E i = A i B i + Āi B i ( A i Bi + ĀiB i ) = = ( Ā i + B i ) ( Ai + B i ) = = ĀiA i + Āi B i + A i B i + B i Bi = = A i B i + Āi B i si può pensare di implementare la funzione E i con: la cascata di due invertitori che negano gli ingressi A i e B i ; due porte AND a due ingressi che effettuano la AND logica A i Bi e B i A i ; una NOR a due ingressi che effettua la somma ( A i Bi + A i Bi ). A > B se A 1 > B 1 o A 1 = B 1 AND (A 0 > B 0 ). Dalla Tabella 3 si può ricavare la funzione logica G come: 14

Figura 16: Full-Adder a 1 bit: test del dispositivo G = A 1 B1 + E 1 A 0 B0 = Y 1 + E 1 Y 0 Dualmente A < B se B 1 > A 1 o A 1 = B 1 AND (B 0 > A 0 ), ossia: L = Ā1B 1 + E 1 Ā 0 B 0 Le funzioni G, E e L, come detto, sono facilmente ricavabili anche per il comparatore a 4 bit seguendo le stesse considerazioni fatte. La Figura 20 mostra il comparatore a 4 bit realizzato. Il dispositivo ha otto ingressi (A 3 A 0, B 3 B 0 ) e restituisce il risultato su 3 bit. A = B se A 3 = B 3, A 2 = B 2, A 1 = B 1, A 0 = B 0 per cui la funzione logica E può essere facilmente espressa come: Le funzioni logiche G e L sono, invece: E = E 3 E 2 E 1 E 0 G = A 3 B3 + E 3 A 2 B2 + E 3 E 2 A 1 B1 + E 3 E 2 E 1 A 0 B0 L = Ā3B 3 + E 3 Ā 2 B 2 + E 3 E 2 Ā 1 B 1 + E 3 E 2 E 1 Ā 0 B 0 La Tabella 4 riporta la tabella di verità del dispositivo completo, mentre nella Figura 21 è mostrato il layout realizzato. L analisi effettuata tramite il test di Figura 22 mostra il comportamento del comparatore a 4 bit quando esso viene sollecitato dai seguenti ingressi: A = C000, B = 0000 (LSB a destra) dove C indica che il valore varia tra 0 e 1. Trascurando il transitorio iniziale, si può notare come i segnali E 0, E 1, E 2 e E 3 hanno una transizione 0-1 via via sempre più lenta: ciò è causato dalla struttura delle interconnesioni la cui lunghezza cresce (da sinistra a destra nella Figura 21 - E 0 vede un carico minore, mentre E 3 vede un carico maggiore) causando un aumento della capacità 15

A 3, B 3 A 2, B 2 A 1, B 1 A 0, B 0 A > B A < B A = B A 3 > B 3 X X X H L L A 3 < B 3 X X X L H L A 3 = B 3 A 2 > B 2 X X H L L A 3 = B 3 A 2 < B 2 X X L H L A 3 = B 3 A 2 = B 2 A 1 > B 1 X H L L A 3 = B 3 A 2 = B 2 A 1 < B 1 X L H L A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 > B 0 H L L A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 < B 0 L H L A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 = B 0 L L H Tabella 4: Tabella di verità per il comparatore 4 bit. H = High Voltage Level, L = Low Voltage Level, X = Don t Care. parassita che diventa sempre più importante. Sulla commutazione 0-1 del segnale A 3, il dispositivo risponde commutando le uscite in modo che la funzione A = B risulti falsa, mentre la funzione A > B diventa vera. In particolare, il ritardo di propagazione dell uscita A = B risulta essere t p = tphl+tplh 2 = 489+323 2 ps = 406 ps che è un tempo inferiore al ritardo calcolato nel caso peggiore per il sommatore a 4 bit. Questa analisi risulterà determinante per il calcolo della massima frequenza computazionale a cui potrà lavorare il circuito in pipeline. Verranno di seguito riportati alcuni dettagli implementativi utilizzati per la progettazione del comparatore a 4 bit in modo da ridurre le capacità parassite delle singole porte logiche. Un esempio molto significativo è rappresentato dalla porta AND a 4 ingressi utilizzata per il calcolo della funzione di uguaglianza. La Figura 23 mostra come per ridurre le capacità di diffusione siano state utilizzate diffusioni in comune sia per la connessione in serie dei transistor NMOS sia per la connessione in parallelo dei transitor PMOS. Per il secondo caso, le interconnessioni sono state realizzate utilizzando alternativamente i contatti collocati tra le piste di polisilicio: il primo come contatto di alimentazione, il secondo per l uscita della porta, il terzo per l alimentazione e così via. 5 Pipeline La pipeline è una tecnologia utilizzata nell architettura hardware dai microprocessori per incrementare il throughput, ovvero la quantità di istruzioni eseguite in una data quantità di tempo, parallelizzando i flussi di elaborazione di più istruzioni: essa aumenta lo sfruttamento delle risorse e il flusso di dati in uscita. Se si considera un blocco combinatorio formato da tre funzioni logiche più o meno complesse e tra di esse si interpongono dei registri che permettono di trattare i dati come un flusso continuo, il vantaggio rispetto all approccio convenzionale risulta evidente. Il blocco combinatorio viene, in questo modo, suddiviso in tre sezioni ciascuna delle quali ha un tempo di propagazione minore rispetto alla logica originaria. Questo riduce effettivamente il valore del minimo periodo 16

di clock ammissibile: T min,pipe = t c q + max {t p,logic1, t p,logic2, t p,logic3 } + t su (9) dove t c q è il tempo di progazione dei registri, t su è il tempo di setup dei registri e t p,logic1, t p,logic2, t p,logic3 sono i tempi di ritardo delle singole sezioni della logica combinatoria. Un sistema pipeline può essere realizzato usando latch positivi e negativi a passtransistor al posto di registri edge-triggered. Ad esempio, nella Figura 24, la logica è stata introdotta tra il latch master e quello slave in un sistema master-slave. I sistemi basati su latch offrono maggiore flessibilità per la realizzazione di un pipeline e permettono di ottenere prestazioni migliori. Quando i CLK e CLK sono non sovrapposti si ottiene il corretto funzionamento pipeline: il dato in ingresso viene campionato in C 1 sul fronte di discesa di CLK e l elaborazione del blocco logico F comincia; il risultato del blocco logico F viene immagazzinato su C 2 al fronte di discesa di CLK e quindi l elaborazione del blocco logico G comincia. Nella particolare applicazione presentata in questo progetto, il precedente circuito pipeline è stato leggermente variato: i pass-transistor lasciano passare un valore logico degradato (V DD V T n ) causando un consumo statico di potenza per i circuiti collegati in cascata e comportando una degradazione dei margini di rumore; inoltre, la logica implementata per il sommatore e il comparatore è stata pensata per funzionare su valori logici diretti e non negati, per cui i segnali di ingresso non possono essere prelevati dall uscita degli invertitore riportati in Figura 24, ma devono essere ritenuti validi all uscita dei pass-transistor. L idea sviluppata ha consentito il riutilizzo degli invertitori per pilotare un transistor PMOS di level restorer in modo da ripristinare il valore logico alto (risolvendo in questo modo anche i problemi legati al consumo statico di potenza). Per il corretto funzionamento del circuito, il transistor di level restorer deve essere dimensionato adeguatamente affinchè il pass-transistor possa, durante la fase di scarica, portare la tensione sul proprio nodo di uscita ad un valore inferiore alla tensione di commutazione dell invertitore. Avendo realizzato il pass-transistor con dimensioni minime, il level ) = ( 0.50 0.25). Nella Figura 25 e restorer è stato realizzato con un rapporto di aspetto ( W L nella Figura 26 sono riportati le simulazioni del pass-transistor senza e con level restorer: nel secondo caso il segnale p in uscita dal pass-transistor recupera la massima escursione logica a discapito di una piccola perdita di prestazioni. Inoltre, quando la tensione di controllo clock del pass-transistor assume il valore logico basso, l uscita p assume valori di tensione diversi da 0 a causa di correnti di sottosoglia del transistor NMOS. Ciò comporta delle correnti di cammino diretto tra alimentazione e massa nell invertitore posto in cascata causando un consumo statico di potenza. Sulla base delle considerazioni fatte nei paragrafi precedenti, il minimo periodo di clock usato per il controllo delle funzioni logiche in pipeline viene imposto dal ritardo di propagazione del sommatore che risulta essere più elevato del tempo di propagazione del comparatore (tali tempi di propagazione sono stati calcolati considerando i due dispositivi singolarmente e ponendo sul nodo di uscita una capacità parassita di 0.01 pf ). Quando, invece, i due dispositivi vengono inseriti all interno del circuito completo, essi vedranno un carico maggiore dovuto ai parassiti delle piste di interconnessione aggiuntive e al 17

fanout più elevato. Il periodo minimo di clock è stato tarato sulla base dei tempi di propagazione relativi al worst case verificati sperimentalmente inserendo come ingresso al dispositivo i valori di A e B tali da ottenere il maggior numero di riporti propagati all interno della catena di ripple-carry. In queste condizioni, il ritardo di propagazione del segnale Sum3 (il bit più significativo in uscita dal sommatore) è di circa 12 ns, come si può osservare dalla Figura 27. Sulla base di queste considerazioni, il periodo minimo del segnale di sincronizzazione è stato scelto di 30 ns. Nella figura Figura 29 è mostrata una simulazione del dispositivo completo dove gli ingressi sono stati scelti come segue: A 3 = 0, A 2 = 0, A 1 = 0, A 0 = V ariabile; B 3 = 0, B 2 = 0, B 1 = 0, B 0 = 0; C in = 0; C 3 = V ariabile, C 2 = 0, C 1 = 0, C 0 = 0. La scelta di tali ingressi ha permesso di ottenere uno scenario semplice da poter analizzare e nel contempo, ha permesso di mostrare il comportamento del dispositivo nel caso in cui gli input sollecitino tutte le uscite. A 0 e C 3 sono stati ottenuti con forme d onda le cui transizioni non avvengono in corrispondenza dei fronti di salita e di discesa dei segnali di sincronizzazione CLK e CLK, poichè essi devono essere mantenuti stabili nel momento in cui il latch commuta ed entra in memorizzazione. La Figura 28 mostra il layout del circuito completo: l occupazione di area non è stata una delle figure di merito principalmente prese in considerazione; tuttavia è possibile notare come l intero circuito occupi circa 94x100 µm 2. 6 La progettazione in VHDL Il VHDL, insieme al Verilog, è il linguaggio più usato per la progettazione di sistemi elettronici digitali. Esso rappresenta uno degli strumenti che ha consentito lo sviluppo di tecniche automatiche usate per la progettazione dei circuiti digitali dalle quali, oramai, non è possibile prescindere soprattutto a causa dell aumento, anno per anno, della complessità circuitale. Il VHDL permette di descrivere il circuito ad un più alto livello di astrazione tramite un approccio comportamentale, tramite funzioni logiche, o un approccio strutturale che fa uso di elementi più semplici ed elementari. Il successo delle tecniche automatiche è comunque dovuto allo sviluppo di strumenti di sintesi che permettono di tradurre questa descrizione in una rete di porte logiche, minimizzando una funzione di costo specifica, quale area, ritardo o potenza. L intero circuito in pipeline, è stato progettato in un secondo momento tramite una descrizione VHDL, per mostrare come un approccio di semi-automatico possa ridurre il tempo di progettazione e facilitare il lavoro del progettista di sistemi digitali rispetto ad un approccio puramente dedicato. Di seguito è riportato il codice per i vari moduli, mentre per brevità sarà effettuata un analisi dettagliata, tramite l ausilio di un testbench, solo del dispositivo completo. Di seguito è riportata l implementazione del Full-Adder a 1 bit con la tecnologia a gate di trasmissione, secondo l appoccio data-flow (ingressi ed uscite sono definiti come un 18

flusso concorrente di segnali). Il segnale di propagazione del riporto è calcolato mediante la funzione logica XOR tra i due operandi in ingresso al sommatore, mentre il segnale di somma e riporto uscente tramite la funzione logica che implementa un multiplexer. ENTITY f u l l a d d e r 1 b i t IS PORT( xi, yi, rip_in : IN s t d _ l o g i c ; rip_usc, somma : OUT s t d _ l o g i c ) ; END ENTITY; ARCHITECTURE f u l l a d d e r 1 b i t _ a r c OF f u l l a d d e r 1 b i t IS SIGNAL p, rip_usc_neg, rip_adder, somma_neg : s t d _ l o g i c := 0 ; BEGIN p <= x i XOR y i ; rip_usc_neg <= ( (NOT rip_in ) AND p ) OR ( (NOT x i ) AND (NOT p ) ) ; rip_ usc <= NOT rip_usc_neg ; somma_neg <= ( rip_in AND p ) OR ( (NOT rip_in ) AND (NOT p ) ) ; somma <= NOT somma_neg ; END ARCHITECTURE; Il sommatore a 4 bit è stato progettato tramite un approccio strutturale, dove l elemento basilare utilizzato è il full-adder a 1 bit. ENTITY sommatore4bitrc IS PORT( c_in : IN s t d _ l o g i c ; A, B : IN std_logic_vector (3 downto 0 ) ; c_out : OUT s t d _ l o g i c ; s : OUT std_logic_vector (3 downto 0 ) ) ; END ENTITY; ARCHITECTURE sommatore4bitrc_arc OF sommatore4bitrc IS COMPONENT f u l l a d d e r 1 b i t PORT( xi, yi, rip_in : IN s t d _ l o g i c ; rip_usc, somma : OUT s t d _ l o g i c ) ; END COMPONENT; SIGNAL co0, co1, co2, co3 : s t d _ l o g i c := 0 ; BEGIN c0 : f u l l a d d e r 1 b i t PORT MAP(A( 0 ), B( 0 ), c_in, co0, s ( 0 ) ) ; c1 : f u l l a d d e r 1 b i t PORT MAP(A( 1 ), B( 1 ), co0, co1, s ( 1 ) ) ; c2 : f u l l a d d e r 1 b i t PORT MAP(A( 2 ), B( 2 ), co1, co2, s ( 2 ) ) ; c3 : f u l l a d d e r 1 b i t PORT MAP(A( 3 ), B( 3 ), co2, co3, s ( 3 ) ) ; c_out <= co3 ; 19

END ARCHITECTURE; Il comparatore è stato implementato con un approccio data-flow sulla base delle funzioni logiche G, L ed E introdotte precedentemente. ENTITY comparatore4bit IS PORT( x1, x2 : IN std_logic_vector (3 downto 0 ) ; g, e, l : OUT s t d _ l o g i c ) ; END ENTITY; ARCHITECTURE comparatore4bit_arc OF comparatore4bit IS SIGNAL e0, e1, e2, e3 : s t d _ l o g i c := 0 ; BEGIN e0 <= ( x1 ( 0 ) AND x2 ( 0 ) ) OR ( (NOT x1 ( 0 ) ) AND (NOT x2 ( 0 ) ) ) ; e1 <= ( x1 ( 1 ) AND x2 ( 1 ) ) OR ( (NOT x1 ( 1 ) ) AND (NOT x2 ( 1 ) ) ) ; e2 <= ( x1 ( 2 ) AND x2 ( 2 ) ) OR ( (NOT x1 ( 2 ) ) AND (NOT x2 ( 2 ) ) ) ; e3 <= ( x1 ( 3 ) AND x2 ( 3 ) ) OR ( (NOT x1 ( 3 ) ) AND (NOT x2 ( 3 ) ) ) ; e <= e0 AND e1 AND e2 AND e3 ; g <= ( x1 ( 3 ) AND (NOT x2 ( 3 ) ) ) OR ( e3 AND x1 ( 2 ) AND (NOT x2 ( 2 ) ) ) OR ( e3 AND e2 AND x1 ( 1 ) AND (NOT x2 ( 1 ) ) ) OR ( e3 AND e2 AND e1 AND x1 ( 0 ) AND (NOT x2 ( 0 ) ) ) ; l <= ( (NOT x1 ( 3 ) ) AND x2 ( 3 ) ) OR ( e3 AND (NOT x1 ( 2 ) ) AND x2 ( 2 ) ) OR ( e3 AND e2 AND (NOT x1 ( 1 ) ) AND x2 ( 1 ) ) OR ( e3 AND e2 AND e1 AND (NOT x1 ( 0 ) ) AND x2 ( 0 ) ) ; END ARCHITECTURE; L ultimo modulo implementa il segnale di sincronizzazione clock, con un periodo di 30 ns, tramite un approccio comportamentale. Il VHDL tramite il costrutto Process, permette di descrivere il comportamento di un dispositivo tramite una serie di statement che verranno eseguiti sequenzialmente e non concorrentemente come, invece, avviene per l approccio data-flow. ENTITY c l o c k IS PORT( c l k : OUT s t d _ l o g i c ) ; END ENTITY; ARCHITECTURE clock_arc OF c l o c k IS 20

SIGNAL c l k _ s i g : s t d _ l o g i c := 1 ; BEGIN PROCESS( c l k _ s i g ) VARIABLE clock_val : s t d _ l o g i c := 1 ; BEGIN IF clock_val = 0 THEN clock_val := 1 ; ELSE clock_val := 0 ; END IF ; c l k _ s i g <= clock_val AFTER 15 ns ; END PROCESS; c l k <= c l k _ s i g ; END ARCHITECTURE; Ottenuti gli elementi che implementano la nostra logica funzionale, il dispositivo completo può essere ottenuto facilmente tramite un approccio strutturale, componendo i moduli presentati precedentemente. Il comportamento dei pass-transistor è stato modellato lasciando commutare gli ingressi alla logica combinatoria sugli opportuni livelli e fronti del segnale di sincronizzazione utilizzando usando la clausola W HEN del linguaggio VHDL. ENTITY p i p e l i n e IS PORT(Op1, Op2, Op3 : IN std_logic_vector (3 downto 0 ) ; gr, eq, l o : OUT s t d _ l o g i c ) ; END ENTITY; ARCHITECTURE p i p e l i n e _ a r c OF p i p e l i n e IS COMPONENT sommatore4bitrc PORT( c_in : IN s t d _ l o g i c ; A, B : IN std_logic_vector (3 downto 0 ) ; c_out : OUT s t d _ l o g i c ; s : OUT std_logic_vector (3 downto 0 ) ) ; END COMPONENT; COMPONENT comparatore4bit PORT( x1, x2 : IN std_logic_vector (3 downto 0 ) ; g, e, l : OUT s t d _ l o g i c ) ; END COMPONENT; COMPONENT c l o c k PORT( c l k : OUT s t d _ l o g i c ) ; END COMPONENT; SIGNAL in1, in2, in3, in4, r i s 1 : std_logic_vector (3 downto 0) := " 0000 " ; SIGNAL r i s g, r i s e, r i s l, clk_in, cout : s t d _ l o g i c := 0 ; BEGIN c0 : sommatore4bitrc PORT MAP( 0, in1, in2, cout, r i s 1 ) ; c1 : comparatore4bit PORT MAP( in3, in4, r i s g, r i s e, r i s l ) ; 21

TestBench VHDL Analisi in Microwind 3.1 clk_in op1 op2 op3 in1 in2 in3 in4 equal greater lower Clock A B C A-IN B-IN C-IN Sum-IN Out0 Out1 Out2 Tabella 5: Corrispondenza tra i segnali del testbench VHDL e i segnali dell analisi del layout completo c2 : c l o c k PORT MAP( clk_in ) ; in1 <= Op1 WHEN clk_in = 1 OR ( clk_in = 0 AND clk_in event ) ; in2 <= Op2 WHEN clk_in = 1 OR ( clk_in = 0 AND clk_in event ) ; in3 <= Op3 WHEN clk_in = 0 OR ( clk_in = 1 AND clk_in event ) ; in4 <= r i s 1 WHEN clk_in = 0 OR ( clk_in = 1 AND clk_in event ) ; gr <= r i s g WHEN clk_in = 1 OR ( clk_in = 0 AND clk_in event ) ; eq <= r i s e WHEN clk_in = 1 OR ( clk_in = 0 AND clk_in event ) ; l o <= r i s l WHEN clk_in = 1 OR ( clk_in = 0 AND clk_in event ) ; END ARCHITECTURE; Per analizzare il comportamento del dispositivo, è stato implementato tramite un testbench lo stesso esempio riportato per il circuito progettato in Microwind 3.1 (Figura 29). I segnali in1, in2, in3 e in4 (vettori di 4 elementi) sono rispettivamente: il primo operando del sommatore a 4 bit prelevato dopo il pass-transistor in ingresso; il secondo operando del sommatore a 4 bit prelevato dopo il pass-transistor in ingresso; il primo operando del comparatore a 4 bit prelevato dopo il corrispondente pass-transistor; il secondo operando in ingresso al comparatore a 4 bit prelevato dopo il pass-transistor il cui ingresso è collegato all uscita del sommatore. I segnali Op1, Op2 e Op3 sono gli operandi in ingresso al circuito in pipeline, quindi i segnali posti in ingresso ai pass-transistor. La Tabella 5 mostra la corrispondenza tra i segnali utilizzati nel testbench di Figura 30 e i segnali riportati nel test di Figura 29. ENTITY t e s t IS 22

END ENTITY; ARCHITECTURE test_arc OF t e s t IS COMPONENT p i p e l i n e PORT(Op1, Op2, Op3 : IN std_logic_vector (3 downto 0 ) ; gr, eq, l o : OUT s t d _ l o g i c ) ; END COMPONENT; SIGNAL op1_val, op2_val, op3_val : std_logic_vector (3 downto 0) := " 0000 " ; SIGNAL g r e a t e r, equal, lower : s t d _ l o g i c := 0 ; BEGIN c0 : p i p e l i n e PORT MAP( op1_val, op2_val, op3_val, g r e a t e r, equal, lower ) ; op1_val <= " 0001 " AFTER 0 ns, " 0000 " AFTER 33 ns, " 0001 " AFTER 66 ns, " 0000 " AFTER 99 ns, " 0001 " AFTER 132 ns, " 0000 " AFTER 165 ns ; op2_val <= " 0000 " ; op3_val <= " 1000 " AFTER 0 ns, " 0000 " AFTER 19 ns, " 1000 " AFTER 38 ns, " 0000 " AFTER 57 ns, " 1000 " AFTER 76 ns, " 0000 " AFTER 95 ns, " 1000 " AFTER 114 ns, " 0000 " AFTER 133 ns, " 1000 " AFTER 152 ns, " 0000 " AFTER 171 ns ; END ARCHITECTURE; 23

Figura 17: Layout del sommatore a 4 bit realizzato in Microwind 3.1 24

Figura 18: Sommatore a 4 bit: test del dispositivo Figura 19: Schematizzazione di un comparatore 25

Figura 20: 4-Bit Magnitude Comparator 26

Figura 21: 4-Bit Magnitude Comparator realizzato in Microwind 3.1 Figura 22: 4-Bit Magnitude Comparator: test del dispositivo 27

Figura 23: Dettaglio implementativo: AND a 4 ingressi Figura 24: Funzionamento del circuito pipeline a due fasi che utilizza registri dinamici 28

Figura 25: Layout Pass-Transistor: test del dispositivo Figura 26: Layout Pass-Transistor con level restorer: test del dispositivo 29

Figura 27: Worst Case usato per il calcolo dei tempi di ritardo 30

Figura 28: Layout del circuito completo in pipeline 31

Figura 29: Test del dispositivo finale 32

Figura 30: TestBench dell implementazione VHDL del dispositivo 33