Disseny i implementació dels processos emocionals d'un agent software sobre hardware reconfigurable
Full text
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 1 DISSENY I IMPLEMENTACIÓ DELS PROCESSOS EMOCIONALS D’UN AGENT SOFTWARE SOBRE HARDWARE RECONFIGURABLE ÍNDEX Introducció…………………………………………………………………………………2 - Descripció - Context - Objectius del projecte - Estratègia de treball - Eines utilitzades Introducció teòrica als conceptes relacionats…………………….………4 - FPGAs - IEEE-754. Representació de nombres en coma flotant - VHDL - La funció tangent hiperbòlica. Cos del projecte……………………………………………………………………….14 - Anàlisi de la funció tangent hiperbòlica - Disseny del circuit de càlcul de la tangent hiperbòlica - La representació IEEE-754 elegida - Consideracions del nostre codi VHDL - El nostre fluxe de disseny - Les FPGA utilitzades Resultats i conclusions i possibles treballs futurs……………………..34 Referències……………………………………………………………………………..36
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 2 INTRODUCCIÓ DESCRIPCIÓ Aquest projecte tracta de dissenyar els processos o funcions per a que un agent emocional puga prendre les decisions necessàries per a dur a terme un objectiu. Amés es realitzarà una implementació sobre una FPGA. CONTEXT Este projecte s’emmarca dins un projecte més gran dut a terme en el DISCA, en el qual s’està desenvolupant un robot emocional, és a dir, una màquina que reaccionarà de manera diferent depenent dels estímuls externs que li arriben. Dins aquest projecte es vol avaluar i comparar la diferència de recursos emprats, tant temporals com espacials, per tal de dur a terme els càlculs necessaris. Aquestos càlculs es realitzaran mitjançant una FPGA i un processador multi-nucli per a que l’agent emocional decidisca la millor opció entre les disponibles. OBJECTIUS DEL PROJECTE Descripció general: es pretén realitzar la implementació sobre una FPGA dels processos emocionals de l’agent. Descripció detallada: les variables a avaluar una vegada obtinguda la implementació són els temps de còmput i els nombre de portes o recursos emprats. S’avaluarà els graus de llibertat disponibles i les diferents implementacions possibles depenent d’aquests: taules, funcions iteratives, funcions recursives, etc.. Es realitzarà un disseny genèric per tal de possibilitar una implementació independent del hardware i permetre diferents precisions d’entrades i eixides. Es programarà sobre un placa SmartFusion de Actel i s’avaluarà la possibilitat de programar-ho en altres tecnologies disponibles al mercat (Altera, Xillinx, etc).
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 3 ESTRATÈGIA DE TREBALL Analitzar les diferents funcions de càlcul. Aprendre les diferents ferramentes de treball. Implementar en VHDL el disseny escollit. Programar la placa SmartFusion de Actel. Veure altres opcions d’implementació sobre altres tecnologies disponibles al mercat i baremar les diferents opcions. EINES UTILITZADES Placa SmartFusion de Actel. Libero IDE v9.0 ModelSim (versió per a Actel, Xilinx i Altera) Synplify FlashPro Identify Debugger Llenguatge de descripció de hardwre VHDL-200X, compatible amb VHDL-93. Xilinx ISE Webpack 12.1 XST synthesyser Altera Quartus II 10.0
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 4 Introducció teòrica als conceptes relacionats FPGAs Abans de començar amb les nostres FPGA, revisarem els conceptes bàsics de les FPGA. Una FPGA (Field Programmable Gate Array) és un dispositiu construït principalment amb material semiconductor que conté blocs de lògica que permeten ser programats. La lògica programable pot reproduir des de funcions tan senzilles com les que realitza una porta lògica fins a sistemes complexos en un xip o SoC (System on a Chip). Les FPGAs s'utilitzen en aplicacions similars als ASICs, construïdes per a finalitats més específiques, encara que són més lentes, tenen un major consum de potència i no poden comprendre sistemes tan complexos. Encara així, les FPGAs tenen els avantatges de ser reprogramables (el que afegeix una gran flexibilitat al flux de disseny), els seus costos de desenvolupament i adquisició són molt menors per a petites quantitats de dispositius i el temps de desenvolupament és també menor. Certs fabricants compten amb FPGAs que només es poden programar un cop, pel que els seus avantatges i inconvenients es troben a mig camí entre els ASICs i les FPGAs reprogramables. Històricament les FPGAs sorgeixen com una evolució dels conceptes desenvolupats en les PLAs i els CPLDs. Tradicionalment, els enginyers han utilitzat les FPGA amb eines de programació fetes per experts. No obstant, com que les FPGA s'han tornat més ràpides i més rentables, els enginyers i investigadors amb poca o cap experiència en disseny de hardware digital estan buscant aprofitar les FPGA per crear solucions personalitzades. Per abarcar aquest creixent interés, els proveïdors estan creant eines de més alt nivell que fan més fàcil programar FPGAs i brindar els beneficis de la tecnologia FPGA a noves aplicacions. FPGAs respecte als ASICs Les FPGAs s'utilitzen en aplicacions similars als ASICs però tenen els següents inconvenients i avantatges respecte a ells. Inconvenients: • Son més lents. • Consumeixen més potència. • No poden realitzar sistemes tan complexos.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 5 Avantatges: • Son re-programables. • Costos de desenvolupament i adquisició molt més baixos. • Temps de desenvolupament menor. Consideracions de seguretat Pel que fa a la seguretat, les FPGAs tenen avantatges i desavantatges en comparació amb els ASICs o microprocessadors segurs. La flexibilitat FPGAs , fa que les modificacions malicioses que pugi haver durant la fabricació, siguin de menor risc. Per molts FPGAs, el disseny carregat està exposat mentre es carrega (en general en cada encesa del dispositiu). Per abordar aquesta qüestió, alguns FPGAs suporten el xifrat ‘bitstream encryption’. Programació i fluxe de disseny La feina del programador es definir la funció lògica que realitzarà cada un de les CLB (cel·la del bloc lògic), seleccionar el mode de treball de cada IOB (bloc d’entrada/eixida) e interconnectar-los. El fluxe de disseny d’un sistema podria ser: • Divisió del disseny principal en mòduls separats. La modularitat es un dels conceptes principals de tot disseny. Normalment es diferència entre dos metodologies de disseny: top-down i botton-up. La metodologia top-down consisteix en que un disseny complex es divideix en dissenys més simples que es puguen dissenyar (o descriure) més fàcilment. La metodologia botton-up consisteix en construir un disseny complexe a partir de mòduls, ja dissenyats, més simples. En la pràctica, un disseny usa generalment ambdues metodologies. • Per a l’entrada de dissenys, poden utilitzar-se diversos mètodes tal com VHDL, Verilog o ABEL.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 6 • Simulació funcional, és a dir, comprobarem que allò escrit en el punt anterior realment funciona com volem, si no ho fa tindrem que modificar-lo. En aquest tipup de simulació es comproba que el codi VHDL o Verilog (u otro tipo de lenguaje HDL) executa correctament el que es pretén. • Síntesis. En aquest pas s’adapta el diseny anterior (que sabem que funciona) a un hardware en concreto, ja siga una FPGA o un ASIC. Hi ha sentències del llenguatge que no són sintetitzables, com per exemple divisions o exponenciacions amb nombres no constants. El fet de que no totes les expressions en VHDL siguen sintetitzables és degut a que el VHDL és un llenguatge genèric per a modelat de sistemes (no sols per a disseny de circuits digitals), per això hi ha expressions que no poden ser transformades a circuits digitals. Durant la síntesis es té en compte l’estructura interna del dispositiu, i es defineixen restriccions, com l’assignació de pins. El sintetitzador optimitza las expressions lògiques amb la finalitat que ocupen menor àrea, o bé són eliminades les expressions lògiques que no són utilitzades pel circuit. • Simulació post-síntesis. En aquest tipus de simulació es comprova que el sintetitzador ha realitzat correctament la síntesis del circuit, al transformar el codi HDL en blocs lògics connectats entre sí. Aquest pas és necessari ja que, a vegades, els sintetitzadors produeixen resultats de síntesis incorrectes, o bé realitzen simplificacions del circuit al optimitzar-lo. • Placement i routing. El procés de placement consisteix en situar els blocs digitals obtinguts en la síntesis de forma òptima, de forma que aquells blocs que es troben molt interconnectats entre sí se situen pròximament. El procés de routing consisteix en enrutar adequadament els blocs entre sí, intentant minimitzar retards de propagació para maximitzar la freqüència màxima de funcionament del dispositiu. • Back-annotation. Una vegada ha sigut completat el placement & routing, s’extrauen els retards dels blocs i les sues interconnexions, amb la finalitat de poder realitzar una simulació temporal (també anomenada simulació post-layout). Estos retards són anotats en un fitxer SDF (Standart Delay Format) que associa a cada bloc o interconnexió un retard mínim/típic/màxim. • Simulación temporal. A pesar de la simulació anterior potser el disseny no funcione quan es programa. Una de les causes pot ser degut als retards interns
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 7 del xip. Amb esta simulació es pot comprovar, i si hi ha errors s’ha de tornar a un dels anteriors passos. • Programació en el dispositiu. S’implementa el disseny en el dispositiu final y es comprova el resultat. La programació consisteix en carregar una memòria RAM estàtica, una EEPROM o establint els antifusibles, que són com xicotets interruptors programables per tensió. Aplicacions Qualsevol circuit d'aplicació específica pot ser implementat en una FPGA, sempre i quan aquest disposi dels recursos necessaris. Les aplicacions on més comunament s'utilitzen les FPGA inclusiu els DSP (processament digital de senyals) són sistemes aeroespacials i de defensa, prototipus de ASICs, sistemes d'imatges per a medicina, sistemes de visió per a computadors, reconeixement de veu, bioinformàtica, emulació de hardware de computadora, etc. Hem de saber que el seu ús en altres àrees, es cada vegada major, sobretot en aquelles aplicacions que requereixen un alt grau de paral·lelisme. Existeix codi font disponible (sota llicencia GNU GPL) de sistemes com microprocessadores, microcontroladores, filtres, móduls de comunicacions i memòries, entre altres. Aquests codis s'anomenen cores. Tecnologia de la memòria de programació Les FPGAs també es poden diferenciar per utilitzar diferents tecnologies de memòria: Volàtils: Basades en RAM. La seva programació es perd al treure l' alimentació. Requereixen una memòria externa no volàtil per a configurar-les al arrancar (abans o durant el reset). No Volàtils: Basades en ROM. Hi ha dos tipus, les reprogramables, asades en EPROM o flash que es poden borrar i tornar a reprogramar, encara que amb un limit de uns 10.000 cicles, i les no reprogramables, basades en fusibles que només es poden programar una vegada, cosa que les fa poc recomanables per a treballs en laboratoris.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 8 Fabricants de FPGA A principis de 2007, el mercat de les FPGA s'havia col·locat en un estat on hi havia dos grans productors de FPGA de propòsit general i un conjunt d'altres competidors els quals es diferencien per oferir dispositius de capacitats úniques. Els dos grans són Xillinx i Altera. Altres fabricants són Lattice, Actel, QuickLogic, Atmel, Achronix Semiconductor, MathStar, Inc. IEEE-754. Representació de nombres en coma flotant L’estàndard de la IEEE para aritmètica en coma flotant (IEEE 754) és l’estàndard més estès per a la computació en coma flotant, i és seguit per moltes de les millores de CPU i FPU (unitat de coma flotant). El estàndard defineix formats per a la representació de números en coma flotante (incloent el cero) y valores desnormalitzats, així com valors especials com infinit i NaN (not a number), amb un conjunt d’operacions en coma flotant que treballa sobre aquestos valors. També especifica quatre modes d’arrodoniment y cinc excepcions (incloent quan ocorren dites excepcions y què passa en l’execució). IEEE 754 especifica quatre formats per a la representació de valores en coma flotant: precisió simple (32 bits), precisió doble (64 bits), precisió simple estesa (≥ 43 bits, no usada normalment) y precisió doble estesa(≥ 79 bits, usualment implementada amb 80 bits). Sols els valors de 32 bits són requerits per l’estàndard, els altres són opcionals. Molts llenguatges especifiquen quins formats y aritmètica de la IEEE implementen, a pesar de que a vegades són opcionals. Per exemple, el llenguatge de programació C, ara permet però no requerix la aritmètica de la IEEE (el tipus de C float és típicament usat per a la precisió simple de la IEEE i el tipus double usa la precisió doble del la IEEE). El títol complet del estàndard és IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985), i també és conegut per IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 9 Precisión simple 32-bits Un numero en coma flotant de precisió simple s’emmagatzema en una paraula de 32 bits. 1 8 23 <-- tamany en bits +-+-----+--------------------------+ |S| Exp | Mantissa | +-+-----+--------------------------+ 31 30 23 22 0 <-- índex del bit On S es el bit de signe i Exp és el camp exponent. (Per al signe: 0=Positiu ; 1= Negatiu). L’exponent és desplaçat en en número en precisió simple, un exponent en el rang −126 a +127 és desplaçat mitjançant la suma de 127 per a obtindre un valor en el rang 1 a 254 (0 i 255 tenen valors especials descrits més endavant). Quan s’interpreta el valor en coma flotant, el número és desplaçat de nou però a l’inversa per tal d’obtindre l’exponent real. El conjunt de valors possibles poden ser dividits en els següents: − zeros − números normalitzats − números desnormalitzats − Infinits − NaN Els casos següents poden generar l'estat de NaN en la majoria dels llenguatges de programació que accepten aquest estat com retorn d'una funció matemàtica: − Totes les operacions matemàtiques que tinguin NaN com operant matemàtic. − Les divisions indeterminades o per infinit (0 / 0, ∞ / ∞, ∞ / - ∞, - ∞ / ∞, ...) − Les multiplicacions de 0 per infinit (0 × ∞, 0 × - ∞) − Les sumes i restes de valors infinits (∞ + (- ∞), (- ∞) + ∞) − Aplicant funcions que excedeixin el domini de la mateixa. Per exemple, l'arrel quadrada d'un nombre negatiu, logaritme de qualsevol nombre menor o igual que 0, o la inversa d'un cosinus que sigui menor que -1 o major que +1.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 16 El desenvolupament en sèrie de Taylor per a la funció e x és: e ି୶ =−1 ୬ x ୬ n! ஶ ୬ୀ Per tant, combinant les tres fórmules anteriors obtenim: = ∑ ܖ ! ஶ ܖୀ − ∑ − ܖ ܖ ! ஶ ܖୀ ∑ ܖ ! ஶ ܖୀ + ∑ − ܖ ܖ ! ஶ ܖୀ =∑ ܖା +! ஶ ܖୀ ∑ ܖ ! ஶ ܖୀ = ܖା +! ܖ ! ஶ ܖୀ
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 17 Disseny del circuit de càlcul de la tangent hiperbòlica Si observem el resultat del desenvolupament en sèrie, veiem que es tracta de calcular potències d’x i dividir-les pel factorial del nombre al qual hem elevat l’x. Així doncs, podem pensar en que un dels mòduls del nostre disseny consistirà en un multiplicador per una constant, que serà x, amb l’entrada realimentada obtenint així les potències. I un altre dels mòduls serà un multiplicador d’enters, una de les entrades del qual serà la realimentació del resultat i l’altra provindrà d’un comptador ascendent, així que d’aquest tindrem els factorials d’n. Veiem-ho a les següents il·lustracions: Mòdul per a calcular les potències d’x Mòdul per a calcular n!
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 18 Connectant les eixides d’ambdós mòduls a un divisor, obtindrem factors de la forma ௫ ! i ja estarem més pròxims del disseny complet. Mòdul per al càlcul dels factors ௫ ! Una vegada obtinguts aquestos factors, el que farem serà dur-los a dos sumadors diferents amb acumulador, per tal d’obtindre d’una banda el sumatori dels factors parells (de potència i factorial parell) i per altra banda els factors d’index imparell. Per a separar els factors parells dels imparells, utilitzarem l’eixida del comptador ascendent utilitzat per al càlcul del factorial. Representarem els mòduls anteriors amb caixes amb menys detall que a les anteriors il·lustracions per tal de clarificar el disseny. Quedaria com segueix: Càlcul dels factors parells i senars
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 19 Sols ens falta, doncs fer la divisió dels sumatoris dels factors parells i imparells més algunes senyals de control. La entrada n, és el nombre de factors a calcular, ja que el sumatori és infinit però amb uns quants factors obtindrem la resolució necessària per als nostres càlculs. Aquesta entrada es passa als mòduls x n i n! per a indicar, quan han de parar de calcular potències i fatorials respectivament. També es passa a l’entrada del comptador per a que quan arribe a n-1, el compte es reinicie. El disseny complet del circuit és el següent (s’han deixat de representar algunes senyals, com per exemple, el rellotge que controla tot el circuit o el reset assíncron): Algún dels avantatges que té aquest disseny és que el càlcul de cadascuna de les potències i els factorials, i amb això els factors de potència entre factorial, es calcula a partir dels termes anteriors, amb la qual cosa l’eficiència augmenta. Amés, l’entrada n, ens permet ajustar la resolució tant com ens siga necessari, encara que aquest ajust s’haurà de fer abans de sintetitzar el circuit (s’explicarà més endavant).
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 20 La representació IEEE-754 elegida Una vegada entesa la representació de nombres en coma flotant proposada per l’IEEE, veiem quina és la representació més adequada als nostres interessos. Veiem que el circuit està dissenyat de forma genèrica sense definir cada entrada quina grandària ha de tindre, així l’elecció, del tamany de l’entrada “x” ha d’estar estudiada. Per tal d’escollir bé la nostra representació, s’han tingut en compte diversos factors. El principal factor a tindre en ment és la presició dels resultats que es volen obtindre. Per això, s’han estudiat diferents longituds per a la grandària en nombre de bits tant de la mantissa com de l’exponent. Un altre dels factors a tenir en compte és com varia la freqüència dels circuits en cada FPGA. Tenint en compte aquestos dos factors, s’ha estimat que la representació més adequada per a nosaltres és una representació on la mantissa té un tamany de set bits i l’exponent un tamany de quatre bits, obtenint en total una representació basada en l’IEEE-754 però amb només dotze bits. Aquesta forma escollida de representació dels nombres és un balanç entre una representació amb el mínim possible nombre de bits, per tal de minimitzar el període de funcionament del circuit i així maximitzar la freqüència, però amb el nombre suficient de bits per tal de que l’error estiga en la quarta xifra decimal. A més, els DSPs que incorporen algunes de les FPGAs que utilitzem, incorporen multiplicador, sumadors i acumuladors de almenys 18 bits, així que seran suficients per a no disminuir de forma innecessària la freqüència màxima a la que pot funcionar el circuit. Consideracions del nostre codi VHDL Una altra de les entrades que no està definida en quan tamany al circuit, és l’entrada “n”, que com ja s’ha comentat abans servix per a indicar al circuit el nombre de termes de la sèrie de Taylor, que en principi és infinita i per tant hem de truncar. Per tant, s’ha realitzat un altre estudi, que podeu seguir al fitxer d’excel inclós en el CD del projecte, on es representa en tot el domini [-1, 1], l’error que es produix per truncament en funció del nombre de termes de la suma infinita escollits. Aquesta vegada s’ha determinat que el nombre de termes més adequat per a que l’error no influisca en els resultats que volem obtindre és de vuit. Tenint en compte que tant el nombre de termes com la representació per als nombres, és a dir, les entrades “x” i “n” podrien canviar en un futur, s’ha utilitzat en el codi VHDL de l’entrada de disseny el que s’anomenen els paràmetres genèrics. Aquests tipus de paràmetres són utilitzats en VHDL per a escriure models flexibles utilitzant una llista de constants, de manera que el codi que genèric és reutilitzable. Es pot utilitzar, per exemple, per definir un bus general d’amplada variable.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 21 En el nostre cas, hem fet el codi en genèric, per tal de que no s’hagi de reescriure el codi en cas de que es desitge canviar la representació de l’entrada “x” o el nombre de termes a calcular “n” del desenvolupament en sèrie de la tangent hiperbòlica. Hem definit n com a una entrada de 3 entrades, la qual podrà representar valors en binari natural entre 0 i 7. A banda d’aquestes consideracions, el nostre codi ha estat codificat com una màquina d’estats fent ús de la seua descripció comportamental. Els estats estan controlats pel rellotge, i s’han afegit alguns estats d’espera després de realitzar operacions costoses. Una altra cosa a tindre en compte és que el llenguatge VHDL-93 no incorpora suport per aritmètica en coma flotant, així que s’ha fet ús d’unes llibreries, que poc a poc van incorporantse als compiladors més recents de VHDL-200X, amb una versió compatible per a VHDL-93. Els codis font s’incorporaran al CD. Per a fer ús d’aquests fitxers font, s’ha de crear una llibreria d’usuari en cada un dels entorns anomenada ieee_proposed i afegir els tres fonts del CD (fixed_float_types_c.vhd, fixed_pkg_c.vhd i float_pkg_c.vhd). La documentació està disponible al següent enllaç: http://www.vhdl.org/fphdl/ S’ha de tindre en compte també, que per a que el ModelSim puga utilitzar també aquesta llibreria, s’ha de compilar prèviament amb el comandament “vlib”. El nostre fluxe de disseny El fluxe de disseny, junt a cadascuna de les ferramentes que hem utilitzat és el següent: 1. Hem dissenyat el circuit electrònic capaç de calcular la tangent electrònica d’un nombre real. El procés està descrit amb més detalls al capítol “Disseny del circuit de càlcul de la tangent hiperbòlica”. Bàsicament el que s’ha fet és dividir en mòduls sencills, utilitzant la realimentació d’entrades per a millorar la eficiència. 2. L’entrada del disseny ha estat duta a terme mitjançant una descripció comportamental del circuit dissenyat a l’anterior punt. S’ha utilitzat per a això el llenguatge de descripció de hardware VHDL. La ferramentes utilitzades han estat els editors de HDL integrats amb cadascun dels entorns de desenvolupament de cada fabricant, el Libero v9.0 per a les FPGA d’Actel, el Xilinx ISE WebPack 12.1 per a les FPGA de Xilinx i l’Altera Quartus II per a les de Altera. 3. La simulació funcional es va portar a terme amb el ModelSim en les diferents versions segons el fabricant de la FPGA. Amb el Libero hem utilitzat el ModelSim Actel 6.5d, amb el Xilinx ISE el ModelSim Xillinx Edition - III Starter, i el ModelSim-Altera Starter Edition amb el Quartus II. Per a comprovar el correcte funcionament del circuit, hem creat una taula excel amb els valors esperats de la
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 22 tangent hiperbòlica depenent del nombre de termes agafats en el desenvolupament de la sèrie de Taylor per a la funció. Ací tenim una captura de pantalla d’una de les simulacions. Totes elles provocaren el mateix resultat, així que comprovarem que el comportament del circuit era l’esperat. 4. La síntesi es va dur a terme amb la ferramenta synplify, que es pot integrar en tots els tres paquets distribuits pel fabricant d’FPGAs. Depenent de la FPGA utilitzada, els resultats eren molt diferents, degut a les diferents prestacions de cadascuna d’elles. Els resultats es veuran en l’apartat següent. 5. Les simulacions post-síntesi provocaren els mateixos resultats que les simulacions pre-síntesi i es dugueren a terme amb el corresponent ModelSim segons l’FPGA. L’única cosa es va tindre en compte perque variava entre les diferents simulacions era la freqüència a la que el circuit podia funcionar segons els resultats de les síntesis. Així, tots els resultats foren igualment correctes, encara que unes FPGAs feien la tasca més ràpidament que altres. 6. A partir d’aquesta etapa del flux, només es porta a terme amb la primera FPGA, ja que ja tenim una idea aproximada de quins serien els costos temporals i espacials del disseny amb cadascuna de les FPGAs, que era l’objectiu al que voliem arribar. Per a dur a terme el place & routing de la FPGA de l’SmartFusion, utilitzem el Designer incorporat amb el paquet del Libero. Els resultats temporals són els mateixos, així que la freqüència a la que pot funcionar el circuit és la de l’etapa de la síntesi. 7. El back-annotation la realitza també el Designer del Libero, i crea els fitxers tanh_ba.sdf i tanh_ba.vhdl per a poder realitzar la simulació temporal, que és correcta. 8. La simulació temporal es realitza de nou amb el ModelSim Actel 6.5d, produint els resultats esperats. 9. El fitxer de programació de la FPGA, el genera el Designer del Libero, però per a programar la FPGA, s’utilitza el FlashPro, integrat amb el paquet del Libero. Encara que la FPGA està programada, no es pot posar realment a fer càlculs, ja que faltaria per dissenyar tot el procés de l’entrada de dades i la recollida de resultats, cosa que queda fora de l’àmbit del present projecte.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 23 Les FPGA utilitzades Una vegada introduït els fonaments de les FPGA, veurem més a fons cadascuna de les FPGA que hem utilitzat. FPGAs d’Actel A2F500M3G La primera de les FPGA sobre la que hem avaluat el disseny és una FPGA del fabricant ACTEL, inclosa en un paquet d’avaluació anomenat SmartFusion Evaluation Kit. Aquest paquet no consta només d’una FPGA. Incorpora un microprocessador ARM Cortex-M3 i va amb una placa amb perifèrics diversos. Permet escollir entre unes poques FPGAs basades en la mateixa tecnologia i que solament es diferèncien per la quantitat de recursos. En el nostre cas hem escollit el dispositiu A2F500M3G, amb un empaquetat 484 FBGA. Les característiques principals d'aquesta FPGA són les següents: Nombre de portes (system gate) 500,000 Nombre de biestables (D-flip-flops) 11,520 Blocs de memòria RAM (4,608 bits) 24 Freqüència màxima de funcionament 80 MHz Cada cella de l’FPGA té una estructura com la següent:
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 24 Aquest tipues de celles d’Actel s’anomenen VersaTile. L’estructura de l’Array és la següent: Per a més informació, es poden consultar els datasheets disponibles en la pàgina web d’Actel (www.actel.com). Una vegada feta la síntesi del nostre disseny VHDL, els resultats tant de cost temporal com espacial són per a aquesta FPGA els següents: Requested Estimated Requested Estimated Clock Clock Starting Clock Frequency Frequency Period Period Slack Type Group ------------------------------------------------------------------------------------------------------------------------- ----------------------------- tanh|clk 9.2 MHz 7.8 MHz 108.665 127.842 -19.176 inferred Autoconstr_clkgroup_0 ============================================================================================= Core Cells : 3871 of 11520 (34%) IO Cells : 36 of 128 (28%)
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 25 Compile report: =============== Microcontroller Subsystem Used: 0 Total: 1 (0.00) Fabric Used: 3660 Total: 11520 (31.77) Fabric IO (W/ clocks) Used: 36 Total: 128 (28.13) Fabric Differential IO Used: 0 Total: 64 (0.00) Dedicated Analog IO Used: 0 Total: 43 (0.00) Dedicated MSS IO Used: 0 Total: 43 (0.00) GLOBAL (Chip+Quadrant) Used: 4 Total: 15 (26.67) MSS GLOBAL Used: 0 Total: 3 (0.00) Fabric CCC Used: 0 Total: 1 (0.00) MSS CCC Used: 0 Total: 1 (0.00) RC oscillator Used: 0 Total: 1 (0.00) XTL oscillator Used: 0 Total: 1 (0.00) RAM/FIFO Used: 0 Total: 24 (0.00) User JTAG Used: 0 Total: 1 (0.00) Global Information: Type | Used | Total ----------------|--------|------------- Chip global | 4 | 3 (133.33) Quadrant global | 0 | 12 (0.00) MSS global | 0 | 3 (0.00) Core Information: Type | Instances | Core tiles --------|--------------|----------- COMB | 3529 | 3529 SEQ | 131 | 131 I/O Function: Type | w/o register | w/ register | w/ DDR register ------------------------------|---------------|--------------|---- ------------ Input I/O | 19 | 0 | 0 Output I/O | 17 | 0 | 0 Bidirectional I/O | 0 | 0 | 0 Differential Input I/O Pairs | 0 | 0 | 0 Differential Output I/O Pairs | 0 | 0 | 0
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 32 Al igual que passava amb l’anterior dispositiu de Xilinx, els recursos emprats en aquest són mínims i es podria replicar també el circuit al voltant d’unes vint vegades per a fer càlculs paral·lelament. La freqüència observem que ha baixat esta vegada fins als 30 MHz aproximadament. FPGAs d’Altera EP3SE50 La següent FPGA que hem provat es del fabricant Altera. El dispositiu es de la familia Stratix III, anomenat EP3SE50 amb un empaquetat FBGA484. Algunes de les seues característiques es poden veure a la següent taula: Cel·les lògiques 338000 CLBs (blocs lògics configurables) 38000 DSPs 48 E/E d’usuari 296 Freqüència màxima 1300 MHz Cada DSP conté operadors per a 18 bits. Els resultats de la síntesi són els següents: Logic utilization 5 % Combinational ALUTs 1,492 / 38,000 ( 4 % ) Memory ALUTs 0 / 19,000 ( 0 % ) Dedicated logic registers 129 / 38,000 ( < 1 % ) Total registers 129 Total pins 36 / 296 ( 12 % ) Total virtual pins 0 Total block memory bits 0 / 1,880,064 ( 0 % ) DSP block 18-bit elements 1 / 216 ( < 1 % ) Total PLLs 0 / 4 ( 0 % ) Total DLLs 0 / 4 ( 0 % ) Device EP3SL50F484C2 Fmax 63.67 MHz Com es pot observar dels resultats, amb aquesta FPGA podríem replicar el circuit al voltant d’unes vint vegades de nou, i a més a més, la freqüència ha pujat fins als 63.67 MHz, la major fins al moment.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 33 EP4CE15F23C6 La última de les FPGA és una altra del fabricant Altera, en aquest cas de la família Cyclone IV. El dispositiu és el EP4CE15F23C6 amb un empaquetat FBGA484. Les característiques principals són les següents: Cel·les lògiques 15408 18 x 18 multiplicadors 56 E/E d’usuari 343 Freqüència màxima 600 MHz Total logic elements 1804 / 15,408 ( 12 % ) Total combinational functions 1,804 / 15,408 ( 12 % ) Dedicated logic registers 129 / 15,408 ( < 1 % ) Total logic elements 1,804 / 15,408 ( 12 % ) Total registers 129 Total pins 36 / 344 ( 10 % ) Total virtual pins 0 Total memory bits 0 / 516,096 ( 0 % ) Embedded Multiplier 9-bit elements 1 / 112 ( < 1 % ) Total PLLs 0 / 4 ( 0 % ) Fmax 33,75 MHz Aquesta vegada, la utilització dels reursos de la FPGA, sols ens permetria replicar el circuit unes huit vegades, reduint la taxa de còmput respecte a alguns dels altres dispositius. A part, la freqüència a baixat fins als 33.75 MHz.
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 34 Resultats, conclusions i possibles treballs futurs Ací tenim una taula comparativa on apareixen els principals resultats als que hem arribat en el nostre projecte: FPGA Fabricant Recursos utilitzats (% del total disponibles) Freqüència màxima estimada (MHz) Preu aproximat al mercat ($ americans) A2F500M3G Actel 133 .3 7.8 75.61 RT3PE600L Actel 66.7 10.5 26.20 XC6VHX565T Xilinx 8 59.14 7400.00 XC6SLX150T Xilinx 8 30.0 197.34 EP3SE50 Altera 4 63.67 761.00 EP4CE15F23C6 Altera 12 33.75 34.71 Si tenim en compte el nombre de vegades que es pot replicar aproximadament el nostre circuit en cada FPGA i la freqüència màxima a la que el circuit pot funcionar en cadascuna d’elles, podem calcular un índex amb la següent fórmula, que serà un indicatiu de quina és la millor opció a escollir: í 1 = ∗üè à. Si també tenim en compte el preu, podem calcular un segon índex amb la següent fórmula: í 2 = ∗üè à. Els resultats són els següents (un major índex indica major conveniència): FPGA Índex 1 Índex 2 A2F500M3G 0 0 RT3PE600 L 10.5 0.4 XC6VHX565T 710 0.095 XC6SLX150T 360 1.82 EP3SE50 1592 2.1 EP4CE15F23C6 270 7.8 Aquest valors es poden prendre com a referència, ja que la fórmula dóna el mateix pes a cadascuna de les variables, però es podrien valorar els pesos adequats a cadascuna d’aquestes
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 35 variables. El que sembla clar és que les FPGAs d’Altera semblen les més adequades als nostres propòsits. Els possibles treballs futurs que es podrien realitzar basant-se en aquest projecte i com a continuació d’aquest podrien ser, per exemple, canviar la manera en que es fan els càlculs, utilitzant altre tipus de recursos (taules d’emmagatzematge, DSPs per a coma flotant, processadors multi nucli, etc).
Ferran Cunyat Pellicer (PFC ETSINF) _____________________________________________________________________________ 36 Referències LANG, Tomás i ERCEGOVAC, Milos. Digital Arithmetic. Morgan Kaufmann Publishers, 2004. IEEE Standard VHDL Language Reference Manual. ANSI Std 1076-1993. Publicat per l’IEEE en 1994. 31st Edition, D. Zwillinger (ed.), CRC, Boca Raton, 2003, 910 pages, ISBN 1-58488-291-3 http://www.xilinx.com http://www.altera.com http://www.actel.com