# Matriu de portes programable in situ

Una matriu de portes programable in situ (FPGA, sigles angleses de 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. Així i tot, 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 CPLD.
Tradicionalment, els enginyers han utilitzat les FPGA amb eines de programació fetes per experts. Això no obstant, com que les FPGA s'han tornat més ràpides i més rendibles, 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

Les FPGAs foren inventades l'any 1984 per Ross Freeman, cofundador de Xilinx, i van sorgir com una evolució dels PLAs i dels CPLD. 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, Cypress i Lattice.

### Portes

* 1987: 9,000 portes, Xilinx
* 1992: 600,000, Naval Surface Warfare Department
* A principis del 2000: Milions

### Mercat

* 1985: Primera FPGA comercial per Xilink
* 1987: $14 milions
* ~1993: >$385 milions
* 2005: $1.9 bilions
* 2010 estimades: $2,75 bilions

### Disseny de la FPGA

* 10.000
* 2005: 80.000
* 2008: 90.000

## Comparacions de FPGA

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 una mitjana de 18 vegades més àrea, consumir 7 cops més potència dinàmica, i són 3 vegades més lentes que les implementacions d'ASIC corresponent.
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
* Les despeses dels circuits integrats estan augmentant.
* La complexitat dels ASIC ha allargat el temps de desenvolupament.
* Els recursos d'R+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.

## Prestacions

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

Tant els CPLDs com les FPGAs contenen un gran nombre d'elements lògics programables. Si mesurem la densitat d'aquests elements en portes lògiques equivalents es podria dir que en un CPLD trobaríem de l'ordre de desenes de milers, 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ó dels blocs concedeix a les FPGAs una major flexibilitat, però a costa de la pèrdua del determinisme en els temps de propagació i una menor velocitat possible dels circuits implementats.
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 mateixa matriu d'interconnexions, així com blocs de memòria, tot i que els darrers models de CPLD comencen a incorporar també aquest tipus de funcions.

## FPGAs respecte als ASICs

Les FPGAs s'utilitzen en aplicacions similars als ASICs, però en comparació presenten els següents avantatges i inconvenients:
Avantatges:
* Son re-programables.
* Costos de desenvolupament i adquisició molt més baixos.
* Temps de desenvolupament menor.
Inconvenients:
* Són més lents.
* Consumeixen més potència.
* No poden realitzar sistemes que continguin portes lògiques amb un comportament reprogramable per permetre la implementació de dispositius lògics.

## 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 pugui haver-hi durant la fabricació, siguin de menor risc. Per molts FPGAs, el disseny està exposat mentre es carrega (en general en cada encesa del dispositiu). Per abordar aquesta qüestió, alguns FPGAs suporten el xifrat ‘bitstream encryption'. Alguns models permeten emmagatzemar el bitstream en una memòria interna, per exemple els de la família ICE40 de Lattice.

## Programació

La feina del programador és definir la funció lògica que realitzarà 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 d'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. Aquests llenguatges de programació especials són coneguts com a HDL o "Hardware Description Language" (llenguatges de descripció de hardware). Els HDLs més utilitzats són:
* 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 desenvolupament en fases de prototipatge ràpid, i per validar un disseny en HDL, existeixen diverses propostes i nivells d'abstracció del disseny. Entre altres National Instruments LabVIEW FPGA proposa un llenguatge de programació gràfica d'alt nivell.

## Aplicacions

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 de senyals digitals), ràdio 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 són 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 llicència GNU GPL) de sistemes com microprocessadors, microcontroladors, filtres, mòduls de comunicacions i memòries, entre d'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 memòria d'accés aleatori. La seva programació es perd en treure l'alimentació. Requereixen una memòria externa no volàtil per a configurar-les en arrancar (abans o durant el reset).
* No Volàtils: Basades en ROM. Hi ha dos tipus, les reprogramables i les no reprogramables.
* Reprogramables: Basades en EPROM o memòria flaix. Aquestes es poden esborrar i tornar a reprogramar, encara que amb un límit d'uns 10.000 cicles.
* 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:

## Arquitectura FPGA

L'arquitectura d'una FPGA consisteix en una sèrie de blocs lògics configurables (CLBs)amb uns canals d'encaminament.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 des del disseny encara que el nombre de pistes d'encaminament pot variar considerablement, inclus entre els dissenys amb la mateixa quantitat de lògica (per exemple, un interruptor de commutació d'encaminament requereix molt més que un conjunt sistològic amb el mateix nombre de portes.). Donat que l'encaminament no utilitza 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 perquè la majoria dels dissenys que s'ajustaran en termes de LUT i 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

* 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 ultraviolada (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

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 és un dels dos grans líders en la fabricació de FPGA.
* Intel (abans Altera) és l'altre gran líder.
* Lattice Semiconductor va treure al mercat dispositius FPGA amb tecnologia de 90 nm. Lattice és un proveïdor líder en tecnologia no volàtil, FPGA basades en tecnologia Flash, amb productes de 90 nm i 130 nm. En el 2014 Lattice semiconductor també proveeix de dispositius programables basats en RAM, i combinats amb una memòria no volàtil que es pot programar una sola vegada. Una vegada s'ha programat el dispositiu no és possible reprogramar-lo.
* Microsemi (abans 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. ofereixen FPGA que ells anomenen FPOA (Field Programmable Object Arrays).
* Tabula Arxivat 2012-11-01 a Wayback Machine. va anunciar al març del 2010 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

* 1 2 3 4 Funding Universe. “Xilinx, Inc.”
* ↑ «History of FPGAs». Arxivat de l'original el 2007-04-12. [Consulta: 11 març 2011].
* ↑ Clive Maxfield, book, "The Design Warrior's Guide to FPGAs".Published by Elsevier, 2004. ISBN 9780750676045 i ISBN 0750676043
* 1 2 Dylan McGrath, EE Times, "FPGA Market to Pass $2.7 Billion by '10, In-Stat Says". May 24, 2006
* ↑ Narinder Lall eASIC Corporation, "FPGA Judgment Day:Rise of Second Generation Structured ASICs Arxivat 2010-12-14 a Wayback Machine.. March, 2008
* ↑ Dylan McGrath, EE Times, "Gartner Dataquest Analyst Gives ASIC, FPGA Markets Clean Bill of Health". June 13, 2005
* ↑ Virtex-4 Family Overview
* ↑ Tim Erjavec, White Paper, "Introducing the Xilinx Targeted Design Platform: Fulfilling the Programmable Imperative Arxivat 2009-02-06 a Wayback Machine.." February 2, 2009
* ↑ opencores.org (anglès)
* 1 2 Seeking Alpha, "Altera and Xilinx Report: The Battle Continues". July 17, 2008
* ↑ «iCE40 Programming and Configuration». Lattice Semicinductor. Arxivat de l'original el 29 de novembre 2014. [Consulta: 20 novembre 2014].
* ↑ «Microsemi (FPGA and SoC)». Micosemi. [Consulta: 20 novembre 2014].