miniatura|Una FPGA d'Altera. miniatura|Una Spartan de Xilinx. 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 nombre més gran 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, XilinxFunding Universe. “Xilinx, Inc.” 1992: 600,000, Naval Surface Warfare Department A principis del 2000: MilionsClive Maxfield, book, "The Design Warrior's Guide to FPGAs".Published by Elsevier, 2004.

Mercat 1985: Primera FPGA comercial per Xilink 1987: $14 milions ~1993: >$385 milions 2005: $1.9 bilionsDylan McGrath, EE Times, "FPGA Market to Pass $2.7 Billion by '10, In-Stat Says". May 24, 2006 2010 estimades: $2,75 bilions

Disseny de la FPGA 10.000Narinder Lall eASIC Corporation, "FPGA Judgment Day:Rise of Second Generation Structured ASICs . March, 2008 2005: 80.000Dylan McGrath, EE Times, "Gartner Dataquest Analyst Gives ASIC, FPGA Markets Clean Bill of Health". June 13, 2005 2008: 90.000Virtex-4 Family Overview

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/FPGATim Erjavec, White Paper, "Introducing the Xilinx Targeted Design Platform: Fulfilling the Programmable Imperative ." February 2, 2009

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 miniatura|Arquitectura interna d'una FPGA 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