cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft...

24
65 CAPITOLO 3 Questo capitolo presenta l’architettura del processore fuzzy HEPE96 progettato all’interno del gruppo di ricerca dal dottor Gabrielli e realizzato alla fine del ’96, con particolare attenzione alle caratteristiche di funzionamento ed ai motivi che ne hanno portato alla realizzazione. Di questo progetto ho personalmente assistito alla fase finale di modellazione del layout e alla fase di collaudo del chip con un ASIC Tester LV500 di proprietà dell’Università di Bologna. Vengono anche date alcune informazioni preliminari sul chip HEPE97 con particolare riguardo alle differenze strutturali e funzionali rispetto al processore precedente. Una descrizione più dettagliata di ogni blocco che compone il chip e di tutti i passi seguiti durante la fase di progettazione é riportata nel prossimo capitolo. 3.1 Perché un processore fuzzy Un algoritmo fuzzy progettato per risolvere un particolare problema può essere implementato su una piattaforma software o hardware. E’ ovvio che l’implementazione più semplice di un algoritmo é via software attraverso la stesura di codice in un qualsiasi linguaggio di programmazione che viene fatto girare su un processore tradizionale. Sebbene questa sia la soluzione più economica e semplice da implementare può non essere adatta per molti tipi di applicazioni dove la velocità é un fattore determinante. Per questo motivo un passo ulteriore consiste nel fare girare questi programmi su coprocessori progettati esplicitamente per eseguire velocemente le operazioni di un algoritmo fuzzy, i quali interagiscono con un processore tradizionale che provvede al salvataggio dei dati prodotti su una memoria esterna. Un esempio famoso di questo tipo di applicazione é il coprocessore fuzzy WARP 2.0 della SGS- Thomson. Se la velocità non é ancora sufficiente occorre utilizzare un processore dedicato che sia l’effettiva implementazione di tutto l’algoritmo fuzzy in hardware. Dati gli ingressi da analizzare il chip deve essere in grado di portare avanti tutta l’elaborazione in base al sistema fuzzy memorizzato in una RAM o ROM interna. Nel caso di una ROM il sistema fuzzy memorizzato rimane fisso mentre nel caso di una RAM o di una ROM programmabile (PROM) qualsiasi sistema fuzzy desiderato dall’utente può essere caricato all’interno. Una soluzione del genere presenta caratteristiche di maggiore compattezza e velocità, ma il problema vero sta nel fatto che sul mercato non si trovano processori di questo tipo. Le applicazioni industriali dei processori fuzzy sono molto sviluppate e tuttora in continua crescita soprattutto nel campo del controllo e del riconoscimento di immagini dove il vincolo principale non é la velocità ma il risparmio. Per applicazioni in cui la velocità é l’obiettivo primario come negli

Transcript of cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft...

Page 1: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

65

CAPITOLO 3

Questo capitolo presenta l’architettura del processore fuzzy HEPE96 progettatoall’interno del gruppo di ricerca dal dottor Gabrielli e realizzato alla fine del ’96,con particolare attenzione alle caratteristiche di funzionamento ed ai motivi chene hanno portato alla realizzazione. Di questo progetto ho personalmente assistitoalla fase finale di modellazione del layout e alla fase di collaudo del chip con unASIC Tester LV500 di proprietà dell’Università di Bologna. Vengono anche datealcune informazioni preliminari sul chip HEPE97 con particolare riguardo alledifferenze strutturali e funzionali rispetto al processore precedente. Unadescrizione più dettagliata di ogni blocco che compone il chip e di tutti i passiseguiti durante la fase di progettazione é riportata nel prossimo capitolo.

3.1 Perché un processore fuzzy

Un algoritmo fuzzy progettato per risolvere un particolare problema può essereimplementato su una piattaforma software o hardware. E’ ovvio chel’implementazione più semplice di un algoritmo é via software attraverso lastesura di codice in un qualsiasi linguaggio di programmazione che viene fattogirare su un processore tradizionale. Sebbene questa sia la soluzione piùeconomica e semplice da implementare può non essere adatta per molti tipi diapplicazioni dove la velocità é un fattore determinante. Per questo motivo unpasso ulteriore consiste nel fare girare questi programmi su coprocessoriprogettati esplicitamente per eseguire velocemente le operazioni di un algoritmofuzzy, i quali interagiscono con un processore tradizionale che provvede alsalvataggio dei dati prodotti su una memoria esterna. Un esempio famoso diquesto tipo di applicazione é il coprocessore fuzzy WARP 2.0 della SGS-Thomson.Se la velocità non é ancora sufficiente occorre utilizzare un processore dedicatoche sia l’effettiva implementazione di tutto l’algoritmo fuzzy in hardware. Datigli ingressi da analizzare il chip deve essere in grado di portare avanti tuttal’elaborazione in base al sistema fuzzy memorizzato in una RAM o ROM interna.Nel caso di una ROM il sistema fuzzy memorizzato rimane fisso mentre nel casodi una RAM o di una ROM programmabile (PROM) qualsiasi sistema fuzzydesiderato dall’utente può essere caricato all’interno.Una soluzione del genere presenta caratteristiche di maggiore compattezza evelocità, ma il problema vero sta nel fatto che sul mercato non si trovanoprocessori di questo tipo. Le applicazioni industriali dei processori fuzzy sonomolto sviluppate e tuttora in continua crescita soprattutto nel campo del controlloe del riconoscimento di immagini dove il vincolo principale non é la velocità mail risparmio. Per applicazioni in cui la velocità é l’obiettivo primario come negli

Page 2: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

66

esperimenti di fisica delle alte energie per il riconoscimento on-line di traccel’unica soluzione possibile é quella di progettare interamente un chip fuzzy chepossieda tutte le caratteristiche richieste in relazione all’applicazione finale.Sin dalla prima implementazione di un chip fuzzy veloce che risale al 1986(Togai e Watanabe) molti ricercatori hanno migliorato le prestazioni hardwareadottando soluzioni di tipo analogico, digitale e misto analogico - digitale. Tuttequeste considerazioni hanno portato il gruppo di ricerca ad iniziare laprogettazione di una famiglia di processori fuzzy molto veloci in grado diprendere delle decisioni in meno di 1 microsecondo. I prossimi paragraficontengono una descrizione dell’architettura del chip HEPE96 e di quali sceltesono state necessarie per renderlo il più veloce possibile.

3.2 Caratteristiche generali del processore fuzzy

La caratteristica innovativa del chip HEPE96, di cui é riportato uno schema ablocchi in fig. 3.1, é quella di avere una velocità di elaborazione indipendentedal sistema fuzzy : infatti poiché nella soluzione adottata ogni sistema fuzzy ésempre composto da tutte le possibili combinazioni dei fuzzy set degli ingressi, ilnumero totale di regole da memorizzare in una memoria interna al processore(Ramrule) è fisso e dipende dal numero di ingressi e dal numero di fuzzy set perogni ingresso.L’architettura del chip é di tipo pipeline / parallela per incrementare al massimole prestazioni : la velocità di elaborazione é di 320 ns quando vengono processatitutti e quattro gli ingressi qualunque sia il sistema fuzzy memorizzato all’interno,mentre si possono incrementare ulteriormente le prestazioni utilizzando unnumero minore di ingressi. Il chip é stato realizzato con la tecnologia ES2 0.7µm CMOS di tipo SPDM (Single Poly Double Metal) : il numero 0.7 µm indicala larghezza minima del canale di un transistor CMOS che può essere realizzata,mentre la sigla SPDM indica che i collegamenti fra le celle vengono realizzaticon un singolo strato di polisilicio e con due strati metallici che si trovano aprofondità diverse. L’area del chip é di circa 60 mm2, il numero di piedini usatié 82 ed il package utilizzato é del tipo JLCC a 84 piedini.Ecco le caratteristiche più importanti del processore fuzzy :• da 2 a 4 ingressi codificati come numeri di 7 bit ;• una uscita a 7 bit ;• fino a 7 membership function (MF) trapezoidali per ogni ingresso ;• sovrapposizione consentita, al massimo, di due MF adiacenti ;• fino a 2401 regole fuzzy ;• 128 funzioni di appartenenza crisp Zi per l’uscita zeta_out;• 4 bit per il grado di verità di un antecedente e della premessa di una regola,

chiamati rispettivamente α e θ ;• metodo di defuzzificazione di Sugeno di ordine 0 ;• operazione T-norm implementata con il minimo o il prodotto per ottenere il

valore θ ;

Page 3: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

67

• velocità di 50 MFLIPS (Mega Fuzzy Logic Inferences Per Second) quando ilprocessore é pilotato con un clock della frequenza di 50 MHz.

Gli ingressi e l’uscita del processore sono codificati come numeri di 7 bit, cioè idati in ingresso al chip sono già digitalizzati : l’opera di conversione del segnaleanalogico da portare in ingresso al processore viene effettuata esternamente da unconvertitore A/D molto veloce che si trova sulla scheda madre. Dire che larisoluzione di un ingresso é di 7 bit significa che l’intervallo di tensioni in cuipuò variare il segnale in input viene scomposto in 128 (27=128) parti. Oltre agliingressi e all’uscita tutti i segnali interni al processore sono di tipo digitale, cioèogni valore numerico calcolato all’interno é espresso come un numero di più bit

Fig. 3.1: Schema a blocchi del processore fuzzy.

a seconda della risoluzione desiderata. Così il grado di appartenenza α ad unafunzione di appartenenza ed il grado di verità della premessa di una regola θ sonoespressi come variabili di 4 bit.Inoltre così come la velocità di un processore tradizionale si misura in MIPS(Mega Instruction Per Second, cioè il numero di milioni di istruzioni elaborate inun secondo) la velocità di un processore fuzzy si misura in MFLIPS cioè ilnumero di milioni di processi di inferenza fuzzy effettuati ogni secondo. PoichéHEPE96, nella fase di elaborazione vera e propria, esegue un’inferenza fuzzy inun periodo di clock e quindi in 20 ns, in un secondo vengono effettuate 50milioni di inferenze logiche.L’architettura del chip può essere suddivisa logicamente nei seguenti blocchi :1) il blocco della premessa : contiene le parti di un algoritmo fuzzy che

riguardano la fuzzificazione degli ingressi e l’inferenza. Quattro generatori difunzioni di appartenenza trapezoidali MF Gen compiono il calcolo di α in basealla geometria trapezoidale di ogni fuzzy set (contenuta all’interno dellememorie Rammf) ; quindi in base ai valori assunti gli operatori di minimo e di

Se le ttore d i reg o le a tt iv e

M em o ria de lle reg o le R am ru le

R am m f 0

R am m f 1

R am m f 2

R am m f 3

M F gen . 0M F gen . 0

M F gen . 1

M F gen . 2

M F gen . 3M F gen . 3

D ec 0

D ec 1

D ec 2

D ec 3

M in im o oP rodotto

D efu zzificatore

R egola

FR PC (4 b it) C R C(7 b it)

α0

α1

α2

α3

X 0X 1X 2X 3

ind irizzo de llerego le attive

ind irizzo d i R am m f

(11 b it)

Z out

Page 4: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

68

prodotto producono il valore di θ che viene poi inviato al blocco successivo.Tutti i calcoli che avvengono all’interno di questo blocco richiedono 10 fasi dipipeline.

2) la memoria delle regole Ramrule : contiene al suo interno tutte le regolefuzzy usate per descrivere e risolvere qualsiasi tipo di problema. Come giàmenzionato questa memoria è composta da 2401 parole per tenere inconsiderazione il caso in cui 4 ingressi contemporaneamente siano elaborati.

3) il blocco della defuzzificazione : esegue le due addizioni Σ(Zi*Θi) e ΣΘi

tramite due sommatori pipelinizzati che lavorano in parallelo. Una volta chetutte le regole attive, cioè quelle che danno un contributo non nullo, sono stateprocessate le somme finali sono date in ingresso al divisore che calcola ilvalore finale di zeta_out in base alla seguente formula di Sugeno di ordine 0 :

(3.1)

La divisione fra le due somme qui sopra é eseguita da un circuito combinatorioin meno di 80 ns mentre il processore comincia a elaborare un nuovo insieme didati. Visto che ogni regola é processata in un periodo di clock e visto che con 4variabili in ingresso si hanno solo 16 regole attive (come spiegato più sotto) siottiene che il tempo totale di elaborazione si compone nel seguente modo :• il numero di regole attive : 16 x 20 ns = 320 ns• il numero di fasi di pipeline : 12 x 20 ns = 240 ns ;• il tempo che occorre per la divisione : 90 nsper un tempo totale di 650 ns dall’ingresso all’uscita.

3.3 Fase di fuzzificazione : i fuzzy set

Il processo di fuzzificazione consiste nel calcolo del grado di appartenenza α perogni variabile di ingresso. Questo valore indica quanto un ingresso appartiene adun dato insieme fuzzy mediante un numero compreso fra 0 e 1 : nel nostro caso lavariabile α è rappresentata come un numero di 4 bit.I quattro ingressi X0, X1, X2, X3, codificati come numeri di 7 bit, entrano nellostesso istante all’interno del processore. Il blocco Selettore di Regole Attiveseleziona, ingresso per ingresso, gli insiemi fuzzy coinvolti dai valori in ingresso.Più in particolare nell’ipotesi che la massima sovrapposizione consentita frainsiemi fuzzy adiacenti sia 2, si ha una situazione quale quella illustrata in fig.3.2 dove si suppone di avere 7 insiemi fuzzy per ogni variabile. Come si vede infigura l’ingresso X0 coinvolge i due insiemi Molto Piccolo e Piccolo mentrel’ingresso X1 coinvolge gli insiemi Piccolo e Quasi Medio : il grado diappartenenza di X0 e X1 a tutti gli altri gli insiemi è 0. Per questo motivo leregole che includono gli insiemi fuzzy coinvolti si dicono regole attive ; tutte lealtre regole danno un contributo nullo e perciò possono essere trascurate. Quindi

zeta outZi i

i_

*=

∑∑

Θ

Θ

Page 5: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

69

si è dedicata molta attenzione alla progettazione di un circuito per la selezionedelle sole regole attive e cioè il selettore di regole attive : per opera di una seriedi confronti successivi fra i punti d’inizio e di fine di ogni fuzzy set questoblocco fornisce in uscita i codici dei 2 insiemi fuzzy coinvolti. In base a questicodici ed ai quattro parametri che caratterizzano ogni insieme trapezoidale igeneratori di membership function devono poi calcolare i due valori di αcorrispondenti ad ogni ingresso. Questi 4 parametri (vedi fig. 3.3) sono il puntodi partenza e di arrivo dei lati obliqui del trapezio e le rispettive pendenze. Nelprossimo paragrafo viene spiegato dettagliatamente come funzionano i quattrogeneratori dei gradi di appartenenza α che si trovano nel processore.

3.4 Generatori di funzioni di appartenenza trapezoidali

I due modi più usati per fuzzificare gli ingressi, cioè per associare un α ad ogniingresso X, sono la look-up table ed il generatore di membership function.

Fig. 3.2: Insiemi fuzzy.

Una look-up table è costituita da uno o più blocchi di memoria indirizzabile inbase al valore assunto dalla variabile di ingresso. In questo modo qualunquevalore assuma l’ingresso X i sette bit che lo codificano vengono messi sul bus diindirizzi della look-up table e ciò che esce dal bus di dati della memoria sonoproprio i due valori di α corrispondenti. I vantaggi che presenta questo tipo disoluzione sono la semplicità logica e circuitale, la possibilità di avere insiemifuzzy di qualsiasi forma e la velocità totale del processo di fuzzificazione che siriduce ad un accesso in memoria e quindi ad un solo periodo clock. Per controuna look-up table di questo tipo occupa un’area molto estesa : nel caso del fuzzy

M o lto P icco lo

P icco lo

Q ua si M e d io

M ed io

G ra nd e

A b bastanz a G ra nd e G rand iss im o

X 1

M o lto P icco lo P icco lo

Q uasi M ed io M ed io

G ra nd e A bb as tan za G ran de

G ran d iss im o

Page 6: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

70

chip con 4 variabili d’ingresso che hanno una risoluzione di 7 bit occorrono 4blocchi di memoria contenenti ciascuno 128 parole di 8 bit (4 bit + 4 bit per i duevalori di α), il che corrisponde ad una memoria totale di 512 byte. Inoltrevolendo aumentare la risoluzione degli ingressi o degli α le dimensioni dellamemoria esploderebbero : occorre quindi trovare una soluzione alternativa. Lasoluzione adottata in HEPE96 é un generatore di membership functiontrapezoidali : questo circuito approssima una generica funzione di formatrapezoidale con due linee oblique e tre zone in cui α è fissato o al valore minimoo massimo (zona alta e zona bassa). E’ ovvio che per definire una formatrapezoidale sono necessari quattro parametri : come si vede in fig. 3.3 sono statiscelti il punto di salita A e il punto di discesa B e i due coefficienti angolari deilati obliqui K1 e K2. Vediamo più da vicino come

Fig.3.3: Funzione di appartenenza trapezoidale.

funziona il generatore nel caso di variabili d’ingresso di 7 bit e gradi di verità αdi 4 bit. Le due zone denominate zona alta e zona bassa possono essere generatecon dei comparatori digitali. Ogni comparatore verifica se la variabile Xappartiene ad una di queste zone: in caso affermativo il grado di verità α é postoo a 0 o a 15. Il resto della funzione di appartenenza deve essere generato inun’altra maniera. Per calcolare α lungo i lati obliqui in base a X deve essereimplementata in hardware una semplice formula di trigonometria piana.Definiamo le seguenti grandezze in base alla fig. 3.3:

Salita = X - A; Discesa = X - B; K1 = 128 / (A1 - A); K2 = 128 / (B1 - B)

(A1-A) e (B1-B) sono gli intervalli di salita e discesa dei lati obliqui del trapezio:in base al loro valore sono calcolati i valori K1 e K2 che sono numeri intericompresi fra 0 e 127. Anche le variabili Salita e Discesa possono variare in tuttol’universo del discorso di X e quindi sono codificate come variabili a 7 bit.Usando queste notazioni valgono le seguenti formule:

Z o na b assa

α

Z o n a a lta

Z o n a b assa

X

0

15

12 7

K 1 K 2

A BA 1 B 1

Page 7: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

71

α=(∆Y/(A1-A))*Salita; 8*α=8*( ∆Y/(A1-A))*Salita; 8*α=(128/(A1-A))*Salita;8*α=K1*Salita Î α = (K1 * Salita)/8

(3.3)

In queste formule ∆Y é stato posto uguale a 16 anche se il suo valore correttosarebbe 15 ma, poiché 15 / (A1-A) non é un numero intero e dovrebbe quindiessere arrotondato, l’approssimazione fatta é ragionevole. Stesso discorso va fattoper il numero 127 che é stato rimpiazzato con 128. Tutte le formule soprapossono essere applicate anche per il lato discendente sostituendo le opportunevariabili ma si può notare che i valori di α relativi al lato discendente sono ugualial complemento a 1 degli α corrispondenti ad una retta dalla pendenza opposta.Grazie a questa osservazione le due rette possono essere generate con lo stessohardware riducendo di molto l’area globale effettivamente necessaria.In questo modo, con la scelta operata dei 4 parametri che definiscono la formatrapezoidale, il calcolo di α si riduce ad una moltiplicazione fra due numeri di 7bit e ad una divisione per il numero 8 che viene effettuata tramite un semplicetroncamento delle ultime 3 cifre. Tutto questo ragionamento é stato ideatoappositamente per evitare un’operazione di divisione fra numeri diversi dapotenze di 2 in quanto una divisione in hardware é un processo che impiegamolto tempo rispetto alle altre operazioni. Il generatore di membership functionche si trova sul processore ha un’area di circa 2 mm2 e funziona correttamentecon un clock di 50 MHz grazie ad una struttura di tipo pipeline.

3.5 Organizzazione della memoria delle regole

Oltre alla codifica in hardware degli insieme fuzzy occorre porre particolareattenzione alla gestione delle regole del sistema fuzzy. Appare evidente findall’inizio che occorre un altro blocco di memoria RAM (che d’ora in poi saràchiamata memoria delle regole) per memorizzare tutte le regole fuzzy, ilproblema che si pone ora sta nel come organizzare la memoria. Se ad esempiouna regola fuzzy é strutturata nel seguente modo :

se (X0 é Piccolo) e (X1 é Medio) allora (Z é Grande)

e gli insiemi fuzzy Piccolo, Medio e Grande sono codificati rispettivamente con ibit 00, 01 e 10 un modo per esprimere la regola può essere il seguente : 00-01-10.Inoltre può succedere che una variabile d’ingresso non sia presente in una regola,é perciò necessario utilizzare un codice adatto che tenga conto della suaesclusione, in questo caso é naturale scegliere 00.Il numero totale di regole di un sistema fuzzy dipende dal numero di ingressi N edal numero K di fuzzy set associati ad ogni ingresso. Poiché gli ingressi possonovariare ovunque nei rispettivi domini si possono avere tante regole quante sono lepossibili combinazioni di N gruppi di K elementi a N a N. In questo modo ilnumero totale di regole é dato da KN che, a seconda dei valori di K e di N, può

Page 8: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

72

essere un numero decisamente alto. Nel nostro caso avendo 4 ingressi con 7membership function ciascuno il numero complessivo di regole é 74=2401.Quindi il numero totale di regole che devono essere memorizzate internamente alchip é di 2401 in modo da tenere conto di un sistema fuzzy completo, cioè unsistema fuzzy dove tutte le regole possibili sono presenti. Ciononostante datol’insieme dei valori d’ingresso X0, X1, X2, X3 il numero di regole attive, cioè leregole che danno un contributo non nullo in uscita, é una frazione molto piccolarispetto al totale. Sotto la condizione di una sovrapposizione massima fra fuzzyset adiacenti di due il numero di regole che possono dare una uscita non nulla siriduce da KN a 2N. Nel nostro caso quindi la selezione delle regole attive riduce ilpeso computazionale del processore dal dovere analizzare 2401 regole fino a sole16 (=24). Il tempo dovuto all’inferenza fuzzy di ogni insieme di valori in ingressosi riduce quindi a 320 ns, cioè a 16 cicli di 20 ns ciascuno.Il modo più efficace per riempire la memoria delle regole é quello di inserire leregole negli indirizzi successivi di memoria in maniera ordinata : per esempio laprima regola fuzzy (che si trova all’indirizzo 1) é quella riguardante tutti i primiinsiemi fuzzy mentre l’ultima riguarda tutti gli ultimi insiemi fuzzy. La memoriadelle regole potrebbe quindi essere ordinata in questo modo :

PRIMA REGOLA (indirizzo 1):se(X0 é MF0) e (X1 é MF 0) e (X2 é MF0) e (X3 é MF0) allora (Z é MF1)SECONDA REGOLA (indirizzo 2):se(X0 é MF1) e (X1 é MF 0) e (X2 é MF0) e (X3 é MF0) allora (Z é MF2)...............ULTIMA REGOLA (indirizzo 2401):se(X0 é MF6) e (X1 é MF 6) e (X2 é MF6) e (X3 é MF6) allora (Z é MF2401)

In questo modo dato l’indirizzo é già noto a priori, a parte l’uscita Z, quale regolafuzzy si stia considerando : così il codice con cui si individua una regola fuzzynon deve essere memorizzato in quanto é già compreso nell’indirizzo. L’indirizzodi ogni regola attiva viene generato dal selettore di regole attive che metteinsieme i 3 bit dei fuzzy set coinvolti per ogni variabile dando luogo ad un

0

15

α

12 7I I I I I I I V V

Page 9: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

73

Fig. 3.4: I cinque punti necessari al selettore di regole attive.

indirizzo a 12 bit che definisce in maniera univoca quale fra le 2401 regoleandare a leggere. Nella parola di memoria vanno quindi memorizzati solamente ilCRC (il Consequent Rule Code, cioé il valore Z della MF di uscita) ed il codiceFRPC (il Fuzzy Rule Premise Code) il quale tiene conto della presenza o menodella regola fuzzy nel sistema fuzzy iniziale (prima di essere convertito viasoftware in un sistema fuzzy completo). Il seguente esempio può chiarire le idee :se l’FRPC vale 0110 ciò significa che la regola fuzzy deriva da una regolaoriginale dove solo gli ingressi X1 e X2 erano presenti e cioè i valori di X0 e X3erano ininfluenti. Se l’FRPC vale 0000 ciò vuole dire che non esiste nessunaregola corrispondente nel sistema fuzzy originario e quindi il suo contributo deveessere nullo.In questo modo la memoria delle regole del processore risulta composta di 2401parole da 11 bit. Infatti quattro bit sono usati per il codice FRPC, un bit perognuno degli ingressi, ed i rimanenti sette bit sono usati per il conseguente Zdella regola (CRC) che individua uno fra i 128 fuzzy set della variabile d’uscitazeta_out. La memoria che ne risulta é molto grande e per questo motivo,soprattutto per diminuire il tempo di accesso e la dissipazione, é stata divisa in 5blocchi di memoria separati, 4 blocchi contenenti 512 parole da 11 bit ciascunoed un blocco di 353 parole.

3.6 Funzionamento del processore

Vediamo come scorre il flusso di dati all’interno del processore durante la fase dirunning vera e propria, cioè una volta che il sistema fuzzy é stato memorizzatoall’interno. Non appena l’insieme di ingressi X0, X1, X2, X3 entra nelprocessore il primo blocco interessato é il selettore di regole attive, cheidentifica i fuzzy set interessati per ognuna delle 4 variabili. Per poter svolgerequesto compito il selettore contiene al suo interno una serie di registri dove sonostati memorizzati 5 punti per ogni ingresso. Come si vede in fig. 3.4 5 punti sonosufficienti a distinguere quali siano i due insiemi fuzzy interessati mantenendosempre l’ipotesi che al massimo due insiemi adiacenti possano sovrapporsi.Quindi se il valore reale del dato in ingresso é compreso fra il primo ed ilsecondo punto i due insiemi coinvolti sono il secondo ed il terzo, e così via.Questo blocco esegue tutti i confronti fra il valore dell’ingresso ed i cinque puntimemorizzati fino a trovare il codice del primo dei due insiemi coinvolti : ilsecondo codice viene generato banalmente sommando una unità al precedente.Individuati gli insiemi fuzzy due processi partono in parallelo : il primo é volto acomporre l’indirizzo di ognuna delle 16 regole attive, il secondo dà il via alla fasedi calcolo degli α attraverso i generatori di membership function. Il primoprocesso avviene mettendo insieme i 3 bit di codice di ogni fuzzy set coinvoltoper ogni ingresso fino a formare i 16 indirizzi di 12 bit delle regole attive facendotutte le possibili combinazioni; il secondo processo avviene come segue : unavolta determinato il codice di un fuzzy set viene indirizzata la memoria degli

Page 10: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

74

insiemi fuzzy Rammf per ricavare i dati della forma dell’insieme (A, K1, B, K2)in base ai quali il generatore produce il grado di appartenenza α dell’ingresso alcorrispondente insieme. Per ragioni di velocità la natura di questo processo é ditipo parallelo : per ognuno dei 4 ingressi l’accesso alla memoria Rammf avvienecontemporaneamente, uno per ciascuno dei 4 blocchi in cui é stata suddivisa ; inpiù quattro generatori di membership function lavorano in parallelo fino a fornirein uscita, ad ogni colpo di clock, i valori dei quattro α di ogni regola. Il passologico successivo é il processo di inferenza degli α tramite minimo o prodottodei 4 valori ottenuti : come visibile sempre in fig. 3.1 questo passo é vincolato alvalore degli FRPC ottenuti dalla lettura delle regole nella Ramrule. Grazie ai 4blocchi circuitali Dec se una variabile non é presente in una regola fuzzy ilcorrispondente grado di verità α viene settato al valore logico ‘1’ cioè 1111 inbinario, in modo tale da non dare alcun contributo alle operazioni di minimo e diprodotto. In questo modo grazie ad una architettura

Fig. 3.5: Suddivisione interna del blocco di defuzzificazione.

fortemente parallelizzata e pipelinizzata in uscita dal blocco di inferenza si avrà,per ogni colpo di clock e per 16 periodi successivi, il grado di verità θ dellapremessa di ogni regola attiva e, contemporaneamente, dalla Ramrule il valore Zdell’uscita di ogni regola. I valori Z e θ che escono in maniera sincrona da questoblocco del processore vengono poi mandati in ingresso al terzo bloccofondamentale del chip : il Defuzzificatore. Questo blocco (vedi fig. 3.5) prende iningresso i valori Z e θ e ne esegue la moltiplicazione per ottenere il prodotto Z *θ di 11 bit. Due sommatori che lavorano in parallelo eseguono poi le sommatorieda 1 a 16 di tutti i prodotti Z * θ (per ottenere il numeratore della formula diSugeno) e di tutti i θ (per ottenere il denominatore). Quando anche l’ultimaaddizione é stata eseguita può partire in maniera asincrona il processo didivisione del numeratore e denominatore così ottenuti, mentre quattro nuovi

Θ

ZM o ltip licaz ione Θ * Z

Som m a de i Θ ΣΘ

Som m a de i prodo tt i ΣΘΖ

D iv iso re

15 b it

8 b it

N U M

D E N

Z eta_ou t ( 7 b it)

11 b it

( 7 b it)

( 4 b it)

Page 11: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

75

ingressi possono già essere introdotti all’interno del processore. In questo modol’inferenza di tutte le regole attive é realizzata attraverso blocchi di tipo pipelinementre la divisione finale che dà in uscita il risultato é eseguita in parallelo alprocesso di inferenza di un nuovo set di dati : tutto questo é fatto perincrementare il throughput totale del chip. Le prestazioni ottenute soddisfanoinfatti gli obiettivi proposti : ogni 320 ns si può presentare un nuovo set diingressi al chip ed ogni 320 ns si ha in uscita un valore utile.

3.7 Fasi di pipeline

L’architettura generale del processore fuzzy é di tipo pipeline come mostrato infig. 3.6 dove é visualizzato il flusso di dati all’interno del chip per ogni fase dipipeline. Come già detto però vi sono varie strutture di tipo pipeline che lavoranoin parallelo: questo perché diversi calcoli devono essere effettuaticontemporaneamente. Ne sono un esempio i due sommatori che si trovano nelblocco di defuzzificazione. Le 20 fasi di pipeline mostrate in figura sonocostituite da 12 fasi di pipeline vere e proprie e da 8 fasi dovute al numero diregole attive. Infatti la figura riporta il caso di soli 3 ingressi usati che dannoluogo a 23=8 regole attive. Nel caso di 4 ingressi alle 12 fasi standard vannoaggiunte 16 fasi dovute alle 16 regole attive per un totale di 28 passi totali.Dall’istante in cui un nuovo insieme di dati entra nel chip sono necessarie 12 fasidi pipeline per i processi di fuzzificazione e di inferenza. Più in dettaglio al primoperiodo di clock gli ingressi sono sincronizzati con il segnale di clock interno,quindi il selettore di regole attive comincia ad esaminare gli insiemi fuzzycoinvolti. Durante la seconda fase di pipeline é generato il primo indirizzo dimemoria (l’indirizzo della prima regola attiva) mentre durante la terza i 4parametri degli insiemi trapezoidali sono già pronti per i generatori dimembership function. Questi circuiti impiegano ciascuno 3 fasi di pipeline per ilcalcolo di α, dal quarto al sesto periodo di clock. Questo processo avviene mentrela memoria delle regole Ramrule viene indirizzata e letta ad ogni colpo di clock.Una volta che i tre α sono pronti devono essere selezionati in base all’FRPC dellaregola corrispondente e ciò avviene nella settima fase di pipeline. Quindi iquattro α (i tre selezionati più un quarto posto ad 1111 per non influenzare ilminimo o il prodotto) sono processati due alla volta fino ad ottenere il valore diΘ. Il primo Θ é prodotto nella decima fase di pipeline poiché durante l’ottava e lanona fase sono eseguiti il minimo ed il prodotto mentre nella decima viene sceltofra i due valori quello desiderato. Il primo prodotto Θ*Z é valido due periodisuccessivi durante la dodicesima fase di pipeline. Dopodiché é necessarioaspettare gli 8 periodi di clock dovuti alle 8 regole attive e finalmente sia lasomma ΣΘ*Z che ΣΘ sono completate : a questo punto parte la divisione. Quelloche é realmente interessante in una struttura pipeline di questo tipo é che ilprocessore a questo punto é in grado di ricevere un nuovo set di dati mentre staancora eseguendo la divisione dei dati precedenti. La fig. 3.6 riporta quanto oraesposto periodo clock dopo periodo.

Page 12: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

76

In un caso come questo il ritardo globale dalla fase di carica degli ingressi alrisultato finale corrispondente é di 480 ns se si usa un clock di 50 MHz : 12 x 20ns = 240 ns é il tempo dovuto alle vere e proprie fasi di pipeline; 8 x 20 ns = 160ns é il ritardo dovuto al numero di regole attive; 80 ns é il tempo dovuto alladivisione. Ciononostante il valore veramente interessante non é questo ma é ladistanza di tempo con cui si possono mandare nuovi ingressi al processore (inputdata set rate) che in questo caso é di 160 ns.

Fig. 3.6: Fasi di pipeline

3.8 Generazione del layout del processore

Per raggiungere gli scopi proposti di velocità e basso consumo oltre allo studio diuna architettura logica ottimizzata per l’elaborazione di algoritmi fuzzy occorrestudiare varie soluzioni hardware che permettano di raggiungere il migliorcompromesso fra gli obiettivi da raggiungere. Perciò prima di tutto la memoria

C lock

L oad_ In p u t

In g ressi asin cro n i

In g ressi s inc ron i

Inp u t_R eady

In d . d i R am m f

In d . d i R am ru le

U sc ita R am ru le

F R P C e C R C

va lo ri d i α

α se lezion at i

va lo ri d i Θ

ΣΘ

ΣΖ∗Θ

O u tp u t_R eady

Page 13: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

77

Ramrule é stata divisa in cinque blocchi più piccoli, come già descritto, perridurre sia il tempo d’accesso sia il consumo. Infatti sapendo quale parte dimemoria dovrà essere letta é possibile abilitare soltanto il blocco di memoriacorrispondente invece che abilitarli tutti. Questa soluzione riduce il consumodelle memorie ad un quinto del loro valore globale. In altre parole abilitando soloun blocco di memoria alla volta e lasciando gli altri blocchi in modalità stand-byla potenza dissipata é molto ridotta in confronto a quella di un unico blocco dimemoria equivalente. Inoltre generalmente più piccolo é il blocco di memoria eminore risulta il tempo di accesso. Tutte queste considerazioni danno luogo aduna maggiore area del chip ma ciò può essere accettato in virtù di una maggiorevelocità. In secondo luogo tutte le standard cell che sono state implementate nelresto del processore fuzzy, dal generatore di membership function al selettore diregole attive, dal blocco dell’inferenza a quello di defuzzificazione, sono statedivise in quattro blocchi principali in base alla funzione logica per la quale eranostati progettati. Più in dettaglio i blocchi sono i seguenti :

1) il blocco degli indirizzi che contiene tutti i circuiti per la selezione degliindirizzi delle memorie compreso pure il selettore degli intervalli ;

2) il blocco dei generatori di α che contiene i 4 generatori MF Gen;3) il blocco di defuzzificazione che contiene i due sommatori paralleli, il

moltiplicatore 7 x 4 bit ed il divisore finale ;4) il blocco della logica di controllo che gestisce la sincronizzazione di tutti i

segnali all’interno del processore.

Divise in questo modo tutte lecelle e megacelle del processorepossono essere disposte inmaniera razionale all’interno delchip come si vede in fig. 3.7.Una disposizione di questo tipopermette poi di tracciare inmaniera semplice una strutturaad albero per la pista del clock euna struttura tipo dita dellamano per le piste dialimentazione e di massa. Primaperò di passare ad unadescrizione delle piste interneconviene fare alcuneosservazioni sull’area occupatada ciascuno dei blocchi ora

descritti. L’area di un blocco circuitale prevista teoricamente in base alla sommadelle aree di tutte le porte logiche e l’area vera e propria del blocco nel layouthanno due valori molto diversi : ad esempio l’area teorica di un singologeneratore di membership function é 0.55 mm2, mentre quella effettiva sullayout é di circa 2 mm2. Questo é un fattore di cui é necessario tenere conto

R am ru le

R am ru le

R am ru le

R am ru le

R am ru le

Con

trol

loIn

diri

zzi

Def

uzz.

MF

Gen

R am m f

F ig . 3 .7 : G eom etria de l layou t de l ch ip.

Page 14: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

78

quando si passa dallo schematic al layout : l’area prevista a priori può diventaredue o tre volte più grande. Ad esempio l’area prevista a priori per il chip HEPE96era di circa 40 mm2 mentre in realtà si é oltrepassato questo valore di un fattore2/3 fino all’area finale di 60 mm2.Le memorie RAM occupano tutta la parte sinistra del processore : più indettaglio ogni memoria Rammf occupa 0.17 mm2 per un totale di 0.68 mm2. Lospazio necessario a queste RAM però é molto maggiore visto che, avendo bus didati di ingresso e uscita di 28 bit ciascuno, c’é bisogno di molto spazio per tuttele piste che si dipartono dalle memorie e vanno alle standard cell. Per quantoriguarda la memoria delle regole ogni blocco da 512 parole occupa 1.94 mm2

mentre il blocco di 313 occupa 1.59 mm2 per un totale di 9.35 mm2. In confrontoalla Rammf lo spazio fra due blocchi della Ramrule sembra molto minore inquanto i bus di dati sono più piccoli e la regione su cui si estendono é molto piùvasta. In ogni caso le memorie RAM portano via più spazio di tutte le altrestrutture poste sul chip, ma la loro presenza é necessaria se si voglionomantenere i tempi di elaborazione raggiunti. L’altro blocco molto grande del chipé dato dai 4 generatori di membership function i quali, insieme, occupano 5.5mm2. Il blocco degli indirizzi compreso il selettore delle regole attive occupa4.55 mm2, il blocco di defuzzificazione occupa 3.46 mm2. La logica di controlloche presiede al corretto funzionamento del processore occupa infine circa 4 mm2.Facendo la somma dei blocchi ora delineati si ottiene un’area di circa 28 mm2. Irimanenti 32 mm2 sono spartiti nel seguente modo : 12.50 mm2 é l’area dovuta aipad mentre i rimanenti 19 mm2 sono riservati ai canali per i bus di alimentazione,massa, clock, ecc. Questa é la conclusione abbastanza sorprendente che sideduce da un’analisi quantitativa del layout : circa un terzo dell’area totale éspesa per i collegamenti mentre un quinto é riservato ai soli pad di I/O.

Page 15: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

79

Fig. 3.8: Layout finale del processore fuzzy HEPE96.

La figura 3.8 mostra i dettagli il layout finale del processore come visualizzato daCadence mentre la successiva figura 3.9 mostra alcuni particolari moltointeressanti del layout e cioè la disposizione delle piste di alimentazione, dellamassa e del clock. Come si vede tutti i cinque piedini di alimentazione sono postisulla parte alta del chip e le piste di alimentazione si dipartono dall’alto in bassocon quattro piste diverse come le dita di una mano; nello stesso modo i cinquepiedini di massa sono posti in basso e quattro piste si dipartono verso l’altointerdigitate rispetto a quelle di VDD. Poiché il clock deve pilotare solo lestandard cell e non anche le memorie vi é un’unica pista del clock larga 15 µmche parte dall’alto e va in ingresso a tutti i flip-flop tipo D. La fig. 3.10 é unamicrofotografia in bianco e nero che mostra l’interno del chip e le microsaldatureche collegano i pad del nucleo ai piedini esterni dell’integrato.

Page 16: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

80

Fig. 3.9: Le piste di alimentazione, di massa e del clock nel layout del chip.

Fig. 3.10: Microfotografia del processore fuzzy HEPE96.

Page 17: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

81

3.9 Trattamento dei segnali di I/O

Come già spiegato varie volte la velocità del processore in termini di tempocomputazionale é un obiettivo primario : per questo oltre ad ottimizzarel’architettura e l’hardware é molto importante rendere il chip facile da usare perquanto riguarda il trattamento dei segnali di ingresso - uscita.Il processore fuzzy verrà posto su una scheda madre e sincronizzato con un clockesterno che si trova sulla scheda. La gestione della sincronizzazione dei segnali diingresso e uscita non é delegata a device esterni quali controllori o processoridedicati ma viene gestita interamente dal chip fuzzy tramite alcuni segnali dicontrollo appositamente progettati. Ecco una breve descrizione di questi segnali :• il segnale Input_Ready, sincrono con il clock esterno, viene usato per

abilitare il ciclo di scrittura sul chip da parte di un device esterno che lopilota. Questo segnale é un bit di uscita del processore fuzzy che si porta allivello logico 1 quando il chip é in grado di accettare un nuovo insieme didati in ingresso. Quindi Input_Ready si porta a livello logico 0 una voltaavvenuto il fetch degli ingressi, rimane a tale livello per 320 ns finché non éterminato il processo di inferenza di tutte le 16 regole e poi si porta al livellologico 1. In questo modo il device esterno può scrivere all’interno delprocessore fuzzy, per mezzo di un segnale pilotato dall’esterno Load_Input,solo quando l’uscita Input_Ready é attivata. Inoltre il device esterno devemantenere il nuovo set di dati ed il segnale di Load_Input per almeno dueperiodi clock. Grazie a questo artificio il processore fuzzy può riconoscere ilciclo di scrittura del device esterno e sincronizzare i dati in ingresso con ilclock che pilota tutta la scheda.

• Altri due segnali di uscita chiamati rispettivamente Output_Ready1 eOutput_Ready2 sono stati implementati per abilitare il device esterno asalvare l’uscita una volta che questa é pronta. Poiché il processore fuzzy puòessere sincronizzato con un clock di 50 MHz e poiché il processo di divisionepuò durare fino ad 80 ns questi due segnali sono sincronizzati rispettivamentetre e cinque periodi dopo l’inizio della divisione. In questo modo se il clockcon cui viene pilotato il chip é di 50 MHz solo l’uscita Output_Ready2 hasenso in quanto Output_Ready1 é attivato prima che il dato in uscita siavalido. Se invece la frequenza di clock é inferiore può essere usata anchel’uscita Output_Ready1. Inoltre questi due segnali possono essere consideratisia nella fase di salita sia nella fase di discesa in quanto quando sono a livellologico 0 non sono attivi mentre hanno una transizione di stato quandodiventano attivi. Con tutti questi accorgimenti si é tentato di raggiungere lagestione della sincronizzazione dei segnali di I/O più flessibile possibile.

Nella fig. 3.11 é mostrata una possibile applicazione del processore fuzzy : ilchip può essere montato su una scheda pilotata direttamente dalla porta paralleladi un qualsiasi PC dal quale chiunque può caricare all’interno del processore unsistema fuzzy (tramite opportuno software) e farlo lavorare. Il PC carica il primo

Page 18: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

82

device esterno 1 con i dati desiderati dall’utente e, fatto ciò, il processore fuzzypuò cominciare a lavorare alla propria velocità.

Fig. 3.11: Implementazione del processore fuzzy su scheda.

3.10 Test del chip HEPE96

Una volta che il chip é stato realizzato dalla fonderia in numero di 20 pezzirimane solo una cosa da fare : il test di ogni chip su una scheda apposita. Inpratica grazie ad una apparecchiatura progettata appositamente per testare icircuiti integrati, un ASIC Tester LV500 della Tektronics, vengono forniti agliingressi i valori voluti e vengono studiate le uscite per verificare l’accordo con irisultati delle simulazioni software.Il lavoro di test di un chip si compone di due parti : la prima, che é di tipopratico, richiede l’allestimento della scheda su cui verrà inserito il chip. Ilprocessore, che si trova all’interno di un package di tipo JLCC a 84 piedini, vieneinserito all’interno di uno zoccolo a 84 pin. Ognuno di questi pin risulta collegatoattraverso la scheda ad una serie di contatti esterni contraddistinti da una lettera eun numero. I contatti corrispondenti all’alimentazione e alla massa del chipvengono collegati esternamente all’alimentazione e alla massa della schedamentre il segnale in ingresso a tutti gli altri contatti viene fornito direttamentedall’ASIC Tester.La seconda parte consiste nella programmazione del software della macchina inmodo da fornire in ingresso i dati desiderati con i relativi giusti template.Purtroppo il software che gestisce l’ASIC Tester non é direttamenteinterfacciabile con Cadence e quindi occorre scrivere tutti gli ingressi voluti amano e ciò può richiedere molto tempo visto che per un efficace test i vettorid’ingresso sono molti. Ciononostante il Tester é una macchina molto potente chepermette di testare qualsiasi chip fino alla frequenza massima di lavoro di 50MHz e permette di fornire gli ingressi con il template esatto pensato dalprogettista. Questo vuole dire che se il clock funziona a 50 MHz e cioé con un

Page 19: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

83

periodo di 20 ns l’ASIC Tester é in grado di variare gli ingressi all’interno diquesto periodo con una risoluzione di 2 ns.Per ora sono state effettuate due simulazioni sul processore HEPE96: nella primaper cominciare con un numero basso di vettori d’ingresso si é usato il chip nellaconfigurazione a due ingressi mentre nella seconda si é passati allaconfigurazione vera e propria di lavoro con 4 ingressi utilizzati. I templateutilizzati sono stati esattamente quelli pensati a priori con Verilog e Veritime ed éstato interessante iniziare la simulazione del chip partendo da una frequenza dilavoro bassa (qualche MHz) per poi arrivare un pò alla volta fino alla frequenzavera e propria di 50 MHz. Con l’ASIC Tester si potrebbe provare anche adaumentare la frequenza di lavoro oltre il valore stimato dai simulatori softwareper verificare se, nella realtà (e quindi non nel caso peggiore possibile comesempre stimato da Verilog e Veritime) il chip possa andare ancora più veloce.Rimane però il problema che il Tester non riesce a fornire gli ingressi con unafrequenza superiore a 50 MHz. Se però si osserva che l’unico ingresso che devevariare alla frequenza massima é il clock mentre tutti gli altri variano con unafrequenza inferiore (ad esempio gli ingressi X0, X1, X2, X3 variano solo ogni 16periodi di clock) basta fornire a parte un clock esterno ad una frequenza superioreper potere testare il funzionamento del chip a questa velocità.Una volta effettuati i primi test con successo occorre ripetere le stesse operazioniper tutti i 20 pezzi forniti dalla ES2 per verificare l’assenza di errori difabbricazione e fare lavorare ogni singolo chip per diverse ore consecutivamenteper vedere se si surriscalda eccessivamente o no.I risultati di test del chip HEPE96 sono stati ottimi : tutti e 20 i chip hannodimostrato di funzionare correttamente anche dopo ore di lavoro prolungato. Daquesti test sono stati poi desunti i template finali per tutti gli ingressi in ognunadella fasi di lavoro del chip (carica delle varie memorie, carica dei puntiintervallo, fase di running vera e propria) che saranno poi riportati nel datasheetfunzionale del processore . La fig 3.12 riporta le temporizzazioni degli ingressinella fase di carica delle memorie, nella fase di clear e nella fase di running verae propria. Il progettista che comincerà la fase di progettazione della scheda madresu cui dovrà poi lavorare permanentemente il chip non avrà bisogno di sapereesattamente tutti i dettagli interni ma si accontenterà di conoscere l’esattatemporizzazione esterna del chip per poi programmare accuratamente latemporizzazione della scheda che lo pilota.

3.11 Il processore fuzzy HEPE97

Il processore fuzzy HEPE97 ha un’architettura simile a quella di HEPE96 ma sidistingue perché é dotato di 2 ingressi invece che 4 e risulta quindi molto piùpiccolo e veloce. Le caratteristiche generali del chip sono riportate in fig. 3.14insieme ad una vista del layout finale in fig. 3.13. Poiché si hanno due soliingressi con al massimo 8 insiemi fuzzy ciascuno le regole fuzzy che dovrannoessere memorizzate in una memoria interna sono soltanto 82 = 64 mentre ilnumero di regole attive, con la solita ipotesi di una massima sovrapposizione

Page 20: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

84

consentita fra insiemi fuzzy adiacenti di 2, si riduce a 22 = 4. Da questi priminumeri si possono trarre due considerazioni : poiché devono essere memorizzate

Fig. 3.12: Temporizzazione degli ingressi del processore in tutte le fasi.

solo 64 regole la superficie occupata dalla Ramrule sarà molto piccola e diconseguenza lo sarà anche l’area totale del chip che infatti risulta essere di soli14 mm2; inoltre poiché si hanno solo 4 regole attive la frequenza con cui sipossono presentare nuovi valori in ingresso scende a soli 4 periodi di clock.Considerando poi che il chip può essere pilotato con una frequenza massima di

C K

X 0[6 :0 ] X 1 [6 :0 ]

X 2 [6 :0 ] X 3 [6 :0 ]

S E T _R A M [2 :0 ]

M E _L O A D

28ns

2 n s

c y c le = 4 0 n s

R E SE T

W E

12 ns2 0ns

cycle = 40ns

C L O C K

R ES E T

X 0[6 :0 ] X 1 [6 :0 ]

X 2 [6 :0 ] X 3 [6 :0 ]

1ns 10ns

cyc le = 2 0ns

C LO C K

L O A D _IN P U T

O U T P U T_ R EA D Y _0

Z E TA O U T [6 :0 ]

a lm en o 2 pe riod i d i c lock

O U T P U T D ATA

O U TP U T _R E A D Y _1

IN P U T _R EA D Y

12ns

Page 21: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

85

62.5 MHz (periodo clock di 16 ns) anche in considerazione del fatto che essendomolto piccolo le capacità parassite ed i relativi ritardi sono molto ridotti, unnuovo set di dati può essere preso in ingresso ogni 64 ns e quindi con unafrequenza di 15.6 MHz. Inoltre alla frequenza di lavoro di 62.5 MHz ilprocessore fuzzy é capace di processare i dati alla notevole velocità di 62.5MFLIPS , cioé 62.5 milioni di inferenze fuzzy al secondo. Viste questecaratteristiche innovative di HEPE97 rispetto al processore precedente si épensato che fosse importante realizzare a parte anche questo chip nonostante lesue funzionalità di base fossero già incluse nel precedente.

3.12 Caratteristiche principali di HEPE97

Le carattersitiche principali di HEPE97 sono le seguenti:• 2 variabili in ingresso X0 e X1 codificate come numeri di 7 bit;• 8 insiemi fuzzy per ogni ingresso;• 64 regole totali di cui solo 4 attive;• 4 bit per i gradi di verità di un antecedente e di una premessa, chiamati

rispettivamente α e θ;• 2 metodi di inferenza : minimo e prodotto;• 44 piedini di I/O.Lo schema a blocchi del processore é riportato in fig. 3.13 : come si vede lastruttura generale é molto simile a quella del processore a 4 ingressi. Infatti la sipuò dividere logicamente nelle solite tre parti :1) blocco di fuzzificazione ed inferenza;2) blocco della memoria delle regole Ramrule;3) blocco di defuzzificazione.La differenza sostanziale rispetto ad HEPE96 sta nella generazione dei valori diα: in questo progetto infatti il calcolo degli α é affidato ad una doppia look-uptable indirizzata dal contenuto degli ingressi X0 e X1. I questo caso infatti lamemoria mantiene delle dimensioni accettabili, anzi di molto inferiori a quelle diun generatore aritmetico di membership function: le dimensioni delle look-uptable Rammf_X0 e Rammf_X1 sono di circa 0.5 mm2 ciascuna contro i 2 mm2 diun generatore aritmetico. Inoltre l’uso di una memoria possiede anche i pregi dirichiedere un unico periodo di clock per la generazione di α e di essere piùflessibile : infatti una look-up table può memorizzare funzioni di appartenenza diforma qualsiasi (con il limite dato dalla risoluzione di α che é di 4 bit). Per ilresto il funzionamento logico di HEPE97 é molto simile al processore precedenteed é qui di seguito riassunto.I due ingressi X0 e X1 entrano contemporaneamente in ingresso al Selettore degliintervalli e alle memorie Rammf_X0 e Rammf_X1.Il Selettore degli intervalli seleziona i codici di 3 bit x e x+1 dei due insiemifuzzy coinvolti da X0 ed i codici y e y+1 per X1. Combinando a due a due questicodici con le combinazioni (x,y), (x,y+1), (x+1,y) e (x+1,y+1) si ottengono gli

Page 22: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

86

indirizzi a 6 bit delle 4 regole attive che si trovano nella memoria Ramrule. Unaparola di questa memoria é costituita da 9 bit di cui 2 individuano l’FRPC, cioé la

Fig. 3.13: Schema a blocchi del processore HEPE97.

presenza o meno di entrambe le variabili nella regola originale, e gli altri 7individuano la funzione di appartenenza Z dell’uscita zeta_out.Contemporaneamente dalla memoria Rammf_X0 vengono estratti i due valori α0e α1 corrispondenti ai valori di appartenenza di X0 ai due insiemi fuzzyinteressati e così i valori α2 e α3 per l’ingresso X1. Questi α vengono processatidue alla volta con le combinazioni (α0, α2), (α0, α3), (α1, α2) e (α1, α3) nellostesso ordine con cui sono stati generati gli indirizzi delle regole corrispondentiin base al valore del corrispondente FRPC: così se nella prima regola questocodice vale 01 α0 viene posto ad 1111 per non influenzare le operazioni diminimo e di prodotto. Così facendo in quattro periodi di clock si avranno ilvalore θ e l’uscita corrispondente Z pronti per entrare in ingresso al blocco didefuzzificazione dove verrà eseguita la solita formula di Sugeno di ordine 0 finoad ottenere il valore in uscita zeta_out.Nel prossimo capitolo viene data una descrizione dettagliata del procedimento daseguire per passare da una descrizione logica come quella data in questo capitoload una descrizione accurata di ogni blocco fisico che compone il chip fino allaprogettazione del layout finale.

b lo cco d i d efuzz if icaz ion e

X 1X 0

S e le tto red i in te rva ll i

R am m f_ X 0

R am m f_ X 1

R am ru le F R P CZ

M in im o oP ro d o tto

D iv iso re

6 b it

7

7

α0α1α2α3

Θ∗Ζ ΣΘ∗Ζ

ΣΘ

ze ta_ o u t

xx+ 1y

y+ 1

b locco d i d e fu zz if icaz ion e ed in fe renza

2

Page 23: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

87

Fig. 3.13: Vista del layout finale di HEPE97 (la scala é in µm).

CARATTERISTICHE DIPROGETTO

CARATTERISTICHE DELLAYOUT

Numero di ingressi 2 Tecnologia usata 0.7 µmFuzzy set per ingresso <= 8 Area totale (mm2) 14Numero di uscite 1 Nro di transistor 38000Nro di fuzzy set per uscita 128 Nro di standard cell 3500Nro di bit per ingresso 7 Nro di macrocelle 3Nro di bit per grado di verità 4 Nro di pad di I/O 44Nro totale di regole 64 Larghezza della pista clock 3 µmNro di regole attive 4 Larghezza della pista VDD 80 µmMetodo di inferenza 1 MIN Consumo in mA <= 100Metodo di inferenza 2 PROD Consumo in mW <= 430Frequenza di clock (MHz) <= 62.5 Package JLCCInput set rate (ns) >= 64 Temperatura di lavoro (°C) <= 100

Fig. 3.14: Tabella delle caratteristiche del processore a 2 ingressi.

Page 24: cap3 - Istituto Nazionale di Fisica Nuclearefalchier/tesifalchieri/cap3.pdf · Title: Microsoft Word - cap3.doc Created Date: 2/8/1999 4:54:01 AM

88