FPGA

De Viquipèdia
Dreceres ràpides: navegació, cerca
Una FPGA d'Altera.
Una Spartan de Xilinx.

Una FPGA (Field Programmable Gate Array) és un dispositiu semiconductor que conté blocs de lògica la interconnexió i funcionalitat dels quals pot ser configurada 'in situ' mitjançant un llenguatge de programació especialitzat. 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.

Les FPGAs s'utilitzen en aplicacions similars als ASICs encara que són més lentes, tenen un major consum de potència i no poden contenir sistemes tan complexes com elles mateixes. 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 abastar aquest creixent interès, els proveïdors estan creant eines de més alt nivell que fan més fàcil programar FPGA i brindar els beneficis de la tecnologia FPGA a noves aplicacions.

Història[modifica | modifica el codi]

Les FPGA són el resultat de la convergència de dues tecnologies diferents, els dispositius lògics programables (PLDs Programmable Logic Devices) i els circuits integrats d'aplicació específica (ASIC [application-specific integrated circuit]). La història dels PLDs va començar amb els primers dispositius PROM (Programmable Read-Only Memory), i se'ls va afegir versatilitat amb els PAL (Programmable Array Logic) que van permetre un major nombre d'entrades i la inclusió de registres. Aquests dispositius han continuat creixent en grandària i potència. Mentrestant, els ASIC sempre han estat potents dispositius, però el seu ús ha requerit tradicionalment una considerable inversió tant de temps com de diners. Intents de reduir aquesta càrrega han provingut de la modularització dels elements dels circuits, com els ASIC basats en cel, i de l'estandardització de les màscares, tal com Ferranti va ser pioner amb la ULA (Uncommitted Logic Array). El pas final era combinar les dues estratègies amb un mecanisme d'interconnexió que pogués programar utilitzant fusibles, antifusibles o cel RAM, com els innovadors dispositius Xilinx de mitjans dels 80. Els circuits resultants són semblants en capacitat i aplicacions als PLDs més grans, encara que hi ha diferències puntuals que delaten avantpassats diferents. A més de computació reconfigurable, les FPGAs s'utilitzen en controladors, codificadors / decodificadors i en el prototipat de circuits VLSI i microprocessadors a mida.

El primer fabricant d'aquests dispositius va ser Xilinx i els dispositius de Xilinx es mantenen com un dels més populars a companyies i grups de recerca. Altres venedors en aquest mercat són Atmel, Altera, AMD i Motorola.

Portes[modifica | modifica el codi]

  • 1987: 9,000 portes, Xilinx[1]
  • 1992: 600,000, Naval Surface Warfare Department[2]
  • A principis del 2000: Milions[3]

Mercat[modifica | modifica el codi]

  • 1985: Primera FPGA comercial per Xilink[1]
  • 1987: $14 milions[1]
  • ~1993: >$385 milions[1]
  • 2005: $1.9 bilions[4]
  • 2010 estimades: $2.75 bilions [4]

Disseny de la FPGA[modifica | modifica el codi]

Comparacions de FPGA[modifica | modifica el codi]

Històricament, les FPGAs han estat més lentes, menys eficients i generalment s'assoleix menys funcionalitats que els ASIC. Un estudi ha demostrat que els dissenys implementats en FPGAs necessiten de mitjana 18 vegades més àrea, dibuixar 7 vegades més potència dinàmica, i són 3 vegades més lentes que les implementacions d'ASIC corresponent.[8]

Els avantatges inclouen la capacitat de reprogramar el camp per corregir errors, i poden estar menys temps en el mercat. Els venedors també poden prendre un camí intermedi mitjançant el desenvolupament del maquinari en FPGAs ordinàries, però la fabricació de la seva versió ja no pot ser modificat.

Xilinx afirma que el mercat i la dinàmica de la tecnologia estan canviant el paradigme de l'ASIC/FPGA[9]

  • Les despeses dels circuits integrats estan augmentant.
  • La complexitat dels ASIC ha allargat el temps de desenvolupament.
  • Els recursos de I+D estan disminuint.
  • Les pèrdues d'ingressos per alentir el temps de llançament al mercat estan augmentant.
  • Les limitacions financeres en una economia pobra està manejant tecnologies de baix cost.

Característiques[modifica | modifica el codi]

Una jerarquia d'interconnexions programables permet als blocs lògics d'un FPGA ser interconnectats segons la necessitat del dissenyador del sistema, molt semblant a un breadboard (placa d'ús genèric reutilitzable o semi permanent) programable. Aquests blocs lògics i interconnexions poden ser programats després del procés de manufactura per l'usuari / dissenyador, així que el FPGA pot exercir qualsevol funció lògica necessària.

Una tendència recent ha estat combinar els blocs lògics i interconnexions dels FPGA amb microprocessadors i perifèrics relacionats per formar un sistema programable en un xip. Exemple d'aquestes tecnologies híbrides poden ser trobats en els dispositius Virtex-II PRO i Virtex-4 de Xilinx, els quals inclouen un o més processadors PowerPC embeguts juntament amb la lògica del FPGA. El FPSLIC de Atmel és un altre dispositiu similar, que utilitza un processador AVR en combinació amb l'arquitectura lògica programable de Atmel. Una altra alternativa és fer ús de nuclis de processadors implementats fent ús de la lògica del FPGA. Aquests nuclis inclouen els processadors MicroBlaze i PicoBlaze de Xlinx, Nens i Nens II d'Altera, i els processadors de codi obert LatticeMicro32 i LatticeMicro8.

Molts FPGA moderns suporten la reconfiguració parcial del sistema, permetent que una part del disseny sigui reprogramada, mentre les altres parts segueixen funcionant. Aquest és el principi de la idea de la «computació reconfigurable», o els «sistemes reconfigurables».

FPGAs vs CPLDs[modifica | modifica el codi]

Arquitectura interna d'una FPGA

Les FPGAs foren inventades l'any 1984 per Ross Freeman, cofundador de Xilinx, i van sorgir com una evolució dels PLAs i dels CPLDs.

Tant els CPLDs com les FPGAs contenen un gran nombre d'elements lògics programables. Si mesurem la densitat dels elements lògics programables en portes lògiques equivalents es podria dir que en un CPLD trobaríem de l'ordre de desenes de milers de portes lògiques equivalents i en una FPGA de l'ordre de cents de milers fins a milions d'elles.

A part de les diferències en densitat entre tots dos tipus de dispositius, la diferència fonamental entre les FPGAs i les CPLDs és la seva arquitectura. L'arquitectura dels CPLDs és més rígida i consisteix en una o més sumes de productes programables on els seus resultats van a parar a un nombre reduït de biestables síncrons (també denominats flip-flops). L'arquitectura de les FPGAs, per altra banda, es basa en un gran nombre de petits blocs utilitzats per a reproduir senzilles operacions lògiques, que compten al seu torn amb biestables síncrons. L'enorme llibertat disponible en la interconnexió de dits blocs concedeix a les FPGAs una gran flexibilitat.

Una altra diferència important entre FPGAs i CPLDs és que en la majoria de les FPGAs es poden trobar funcions d'alt nivell (com sumadors i multiplicadors) intrínseques en la pròpia matriu d'interconnexions, així com blocs de memòria.

FPGAs respecte als ASICs[modifica | modifica el codi]

Les FPGAs s'utilitzen en aplicacions similars als ASICs pero 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.que conté portes lògiques amb un comportament reprogramable, permetent la implementació de dispositius lògics.

Avantatges:

  • Son re-programables.
  • Costos de desenvolupament i adquisició molt més baixos.
  • Temps de desenvolupament menor.

Històricament, les FPGAs sorgeixen com una evolució dels conceptes desenvolupats a les PLAs i els CPLDs.

Consideracions de seguretat[modifica | modifica el codi]

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ó[modifica | modifica el codi]

La feina del programador es definir la funció lògica que realitzara cada un dels CLB, seleccionar el seu mode de treball de cada IOB e interconnectar-lo.

En un flux de disseny típic, un desenvolupador d'aplicacions FPGA simularà el disseny en diverses etapes durant el procés de disseny. Inicialment, la descripció RTL en VHDL o Verilog se simula mitjançant la creació de bancs de proves per simular el sistema i observar els resultats. Després que el motor de síntesi ha traçat el disseny a un netlist, el netlist es tradueix a una descripció del nivell de la porta on la simulació es repeteix per a confirmar la síntesi a terme sense errors. Finalment, el disseny es presenta a la FPGA moment en què les demores de propagació es poden afegir i executar la simulació de nou amb aquests valors de back-anotat al netlist. El dissenyador compta amb l'ajuda de entorns de desenvolupament especialitzats en el disseny de sistemes a implementar-se en una FPGA. Un disseny pot ser capturat ja sigui esquemàtic o fent ús d'un llenguatge de programació especial. Aquest llenguatges de programació especials són coneguts com a HDL o "Hardware Description Language" (llenguatges de descripció de hardware). Els HDLs més utilitzats son :

  • VHDL: És un llenguatge definit per l'IEEE usat per enginyers per a descriure circuits digitals.
  • Verilog: És un llenguatge de descripció de maquinari usat per a modelar sistemes electrònics.
  • ABEL: És un llenguatge de descripció de hardware i un conjunt d'eines de disseny per programar dispositius lògics programables.

En un intent de reduir la complexitat i el temps de desarrollament en fases de prototipatge ràpid, i per validar un disseny en HDL, existeixen diverses propostes i nivells de abstracció del disseny. Entre altres National Instruments LabVIEW FPGA proposa un llenguatge de programació gràfica de alt nivell.

Aplicacions[modifica | modifica el codi]

Qualsevol circuit d'aplicació específica pot ser implementat en una FPGA, sempre que aquest disposi dels recursos necessaris. Les aplicacions on més comunament s'utilitzen les FPGA inclusiu els DSP (processament digital de senyals), radio definit per software, sistemes aeroespacials i de defensa, prototipus de ASCs, sistemes d'imatges per a medicina, sistemes de visió per a computadors, reconeixement de veu, bioinformàtica, emulació de hardware de computadora. Hem de saber que el seu ús en altres àrees, és cada vegada major, sobretot en aquelles aplicacions que requereixen un alt grau de paral·lelisme.

Les FPGAs especialment troben aplicacions en qualsevol àrea o algorisme que pugui fer ús de l'alt grau de paral·lelisme ofert per la seva arquitectura. Un dels quals és el trencament de codis, en particular atacs de força bruta a algorismes criptogràfics.

A més cada cop son més usades en aplicacions convencionals d'alt rendiment on els nuclis computacionals com FFT o Convolució són implementats en una FPGA en comptes d'un processador d'ús general.

Existeix codi font disponible (sota llicencia GNU GPL)[10] de sistemes com microprocessadores, microcontroladors, filtres, mòduls de comunicacions i memòries, entre altres. Aquests codis s'anomenen cores.

Tecnologia de la memòria de programació[modifica | modifica el codi]

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 i les no reprogramables.
  1. Reprogramables: Basades en EPROM o flash. Aquestes es poden borrar i tornar a reprogramar, encara que amb un limit d'uns 10.000 cicles.
  2. No Reprogramables: Basades en fusibles. Només es poden programar una vegada, el que les fa poc recomanables per a treballs en laboratoris.

Exemple de tecnologia USB que incorpora una FPGA:

FPGA

Arquitectura FPGA[modifica | modifica el codi]

L'arquitectura d'una FPGA consisteix en una serie de blocs lógics configurables (CLBs)amb uns canals d'enrutament.En general, tots els canals de transmissió tenen el mateix ampla (nombre de cables). poden encaixar en l'altura d'una fila o l'ampla d'una columna de la matriu.

Un circuit d'aplicació ha de ser assignat a un FPGA amb recursos suficients. El nombre de CLBs i E / S són fácils de determinar desde el disseny encara que el nombre de pistes d'enrutament pot variar considerablement, inclus entre els dissenys amb la mateixa quantitat de lógica(Per exemple, un interruptor de conmutació d'enrutament requereix molt més que un conjunt sistólogic amb el mateix nombre de portes.). Donat que l'enrutament no utiliza pistes i incrementa el cost (disminueix el rendiment) de la part sense aportar cap benefici, els fabricants de FPGA tracten de proveir les suficients pistes per que la mayoría dels disensy que s'ajustarán en térmes de LUT y OI puguin ser utilitzats .Això és determinat per les estimacions tals com les derivades de la regla de Rent o per experiments amb els dissenys existents.

Tipus bàsics de tecnologia de procés[modifica | modifica el codi]

  • SRAM - basat en la memòria estàtica. Exigeix ​​que els dispositius d'arrencada externs. CMOS.
  • Antifuse - Només es programa un cop. CMOS.
  • PROM - Només es programa un cop.
  • EPROM - Només es programa un cop to i que amb llum ultravioleta (UV) es poden esborrar. CMOS.
  • EEPROM - Es poden esborrar, fins i tot en paquets de plàstic. CMOS.
  • Flash - Flash-EPROM es poden esborrar. En general, una cèl·lula del flaix és més petit que una cèl·lula de memòria EEPROM equivalent i per tant menys costosa de fabricar. CMOS.
  • Fusible - Només es programa un cop. Bipolar.

Fabricants de FPGA[modifica | modifica el codi]

A principis de 2007, el mercat de les FPGA s'ha col·locat en un estat on hi ha 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.

  • Xilinx es un dels dos grans líders en la fabricació de FPGA.[11]
  • Altera es l'altre gran líder.[11]
  • Lattice Semiconductor va treure al mercat dispositius FPGA amb tecnologia de 90 nm. Lattice es un proveïdor líder en tecnologia no volàtil, FPGA basades en tecnologia Flash, amb productes de 90 nm i 130 nm.
  • Actel té FPGAs basades en tecnologia Flash reprogramable. També ofereix FPGAs que inclouen mescladors de senyals basats en Flash.
  • QuickLogic disposa de productes basats en antifusibles (són programables només un cop).
  • Atmel és un dels fabricants el qual els seus productes són reconfigurables.(L'Xilinx XC62xx va ser un d'aquests, però no estan sent fabricats actualment). Es van enfocar en proveir microcontroladors AVR amb FPGAs, tot en el mateix encapsulat.
  • Achronix Semiconductor tenen en desenvolupament FPGA molt ràpides. Actualment tenen FPGA que funcionen a 1,5 GHz.
  • MathStar, Inc. ofrereixen FPGA que ells anomenen FPOA (Field Programmable Object Arrays).
  • Tabula al març del 2010 va anunciar una nova tecnologia FPGA que utilitza la lògica de temps multiplexat i la interconnexió de major potencial d'estalvi per a aplicacions d'alta densitat.

Referències[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: FPGA Modifica l'enllaç a Wikidata
  1. 1,0 1,1 1,2 1,3 Funding Universe. “Xilinx, Inc.” Retrieved January 15, 2009.
  2. History of FPGAs
  3. Clive Maxfield, book, "The Design Warrior's Guide to FPGAs".Published by Elsevier, 2004. ISBN 0750676043, 9780750676045. Retrieved February 5, 2009
  4. 4,0 4,1 Dylan McGrath, EE Times, "FPGA Market to Pass $2.7 Billion by '10, In-Stat Says". May 24, 2006. Retrieved February 5, 2009.
  5. Narinder Lall eASIC Corporation, "FPGA Judgment Day:Rise of Second Generation Structured ASICs. March, 2008. Retrieved February 5, 2009.
  6. Dylan McGrath, EE Times, "Gartner Dataquest Analyst Gives ASIC, FPGA Markets Clean Bill of Health". June 13, 2005. Retrieved February 5, 2009.
  7. Virtex-4 Family Overview
  8. doi:10.1145.2F1117201.1117205
    Aquesta referència està incompleta. Podeu copiar-la o generar-la
  9. Tim Erjavec, White Paper, "Introducing the Xilinx Targeted Design Platform: Fulfilling the Programmable Imperative." February 2, 2009. Retrieved February 2, 2009
  10. opencores.org (anglès)
  11. 11,0 11,1 Seeking Alpha, "Altera and Xilinx Report: The Battle Continues". July 17, 2008. Retrieved February 5, 2009.