Användarprogrammerbar gate array

Användarprogrammerbar gate array ( FPGA , engelska  field-programmable gate array, FPGA ) är en halvledarenhet som kan konfigureras av tillverkaren eller utvecklaren efter tillverkning; den mest komplexa typen av programmerbara logiska integrerade kretsar i organisationen .

De programmeras genom att ändra logiken i kretsschemat , till exempel med hjälp av källkoden i hårdvarubeskrivningsspråket (till exempel Verilog ). De kan modifieras nästan när som helst under deras användning. Består av konfigurerbara logiska block som switchar med flera ingångar och en utgång ( logiska grindar , grindar ). I digitala kretsar implementerar sådana omkopplare de grundläggande binära operationerna AND , NAND , OR , NOR och XOR. Den grundläggande skillnaden mellan FPGA:er är att både blockens funktioner och konfigurationen av anslutningarna mellan dem kan ändras med hjälp av speciella signaler som skickas till kretsen. Vissa applikationsspecifika integrerade kretsar ( ASIC ) använder logiska arrayer som liknar FPGA:er, men de konfigureras en gång under produktion, medan FPGA:er ständigt kan omprogrammeras och ändra topologin för anslutningar under användning. Sådan flexibilitet kräver emellertid en betydande ökning av antalet transistorer i mikrokretsen.

Historik

I tidiga FPGA:er kunde endast anslutningar mellan grindar ändras genom programmering [1] ; 1985 utvecklade Xilinx medgrundare Ross Freeman och Bernard V. Vonderschmitt den första kommersiellt framgångsrika FPGA ,  XC2064 , som har programmerbara grindar och programmerbara anslutningar mellan dem (2005 listades Freeman för denna uppfinning till US National Inventors Hall of Berömmelse ). Själva konceptet med fältprogrammerbara grindmatriser, logiska grindar och logiska block patenterades av David Page och Louwern Peterson 1985 [2] [3] . På 1990-talet skedde ett kraftigt hopp i intresset för FPGA, deras komplexitet och produktionsvolymer ökade: om de under de första åren främst användes inom området för telekommunikation och kommunikationsnät, så hittade de tillämpning i slutet av decenniet konsumentvaror, inom fordonsindustrin och andra industrier.  

1997 kombinerade Adrian Thompson genetiska algoritmer och FPGA-teknik för att skapa en enhet som kan skilja mellan 1 kHz och 10 kHz ljudtoner . Genetiska algoritmer gjorde det möjligt att, med hjälp av en 64 × 64 gate-array på ett Xilinx-chip, skapa den konfiguration som var nödvändig för att lösa problemet [4] . Under samma år började de användas i stor utsträckning för prototyper av specialiserade integrerade kretsar och generella processorer . I början av 2000-talet började FPGA:er användas för att påskynda specifika operationer i servernoder i både HPC- industrin och databasmotorer ( Netezza ). Under andra hälften av 2010-talet ökade intresset för tekniken på grund av effektiviteten i dess tillämpning för djupinlärning (främst på grund av möjligheten att implementera aritmetik med minskad precision och registerlösa beräkningar - en analog till Googles tensorprocessor ), och molnleverantörer av infrastruktur hade möjlighet att köpa FPGA genom prenumeration från det offentliga molnet ( Amazon F1, Baidu , Tencent , Huawei ).

År 2018 uppgick volymen på den globala FPGA-marknaden till cirka 5,7 miljarder dollar, de största tillverkarna är Xilinx (51% av marknaden), Intel (36%, på grund av tillgångarna i Altera ), Microchip (17%), Lattice Semiconductor (9%) [5] .

Arkitektur

FPGA har tre typer av programmerbara element:

PLB är funktionella element för att bygga användarlogik. BVV tillhandahåller kommunikation mellan höljets kontakter och interna signalledningar. Programmerbara interna kommunikationsresurser ger kontroll över anslutningsvägarna för in- och utgångar från PLB och input-output-enheter (I/O) till motsvarande nätverk [6] . Alla routingkanaler har samma bredd (samma antal ledningar). De flesta I/O-block (I/O) passar in i antingen en rad (höjd) eller en kolumn (bredd) i gate-arrayen.

Det logiska blocket (LB) för den klassiska FPGA består av en sanningstabell ( engelsk  lookup table, LUT ) för flera ingångar och en vippa (4 ingångar användes i tidiga implementeringar, senare - ett större antal ingångar, vilket gjorde det möjligt att använda ett mindre antal logiska block för typiska applikationer [ 7] ).

Det logiska blocket (PLB) har en sanningstabell för fyra ingångar och en klockingång. Det finns bara en blockutgång - en sanningstabell för utmatning av register eller icke-register. Eftersom klocksignaler i kommersiella FPGA:er (och ofta andra signaler som är parallelliserade till ett stort antal ingångar - high-fanout signaler) dirigeras ett speciellt sätt av speciella routingkretsar, hanteras dessa signaler separat.

För den givna exempelarkitekturen visas logikblockets pinout nedan.

Ingångarna är placerade på separata sidor av logikblocket; utgångsstiftet kan dras i två kanaler: antingen till höger om blocket eller till botten. Utgångsstiften för varje logikblock kan anslutas till routingsegment i intilliggande kanaler. På liknande sätt kan en I/O-blockplatta anslutas till ett dirigeringselement i vilken intilliggande kanal som helst. Till exempel kan chipets toppplatta anslutas till vilken som helst av W-ledarna (där W är kanalbredden) i den horisontella kanalen direkt under den.

Typiskt är FPGA-routing icke-segmenterad, det vill säga varje trådsegment ansluter endast ett logiskt block till switchblocket. På grund av de programmerbara omkopplarnas omslutande av omkopplarblocket är spåret längre. För att öka hastigheten på intrasystemanslutningar använder vissa FPGA-arkitekturer längre spårningsanslutningar mellan logiska block.

Växlingsblock skapas i skärningspunkten mellan vertikala och horisontella kanaler. Med denna arkitektur har varje ledare i ett switchblock tre programmerbara switchar som gör att den kan anslutas till tre andra ledare i intilliggande kanalsegment. Modellen eller topologin för omkopplarna som används i denna arkitektur är den plana eller domäntopologin för omkopplingsenheterna. I denna topologi ansluter spår nummer 1 endast till spår nummer 1 i angränsande kanaler, spår nummer 2 ansluter endast till spår nummer 2, och så vidare.

Moderna FPGA-familjer utökar funktionerna som anges ovan och har inbyggda funktioner på hög nivå, tack vare vilka det är möjligt att minska chipområdet och påskynda utförandet av typiska deluppgifter i jämförelse med implementeringen baserad på primitiver. Exempel på sådana funktioner är multiplexorer, digitala signalbehandlingsenheter , inbäddade processorer, snabb I/O-logik och inbyggt minne.

FPGA:er används också i stor utsträckning för valideringssystem, inklusive pre-silikon- och post-silikonvalidering, såväl som i utvecklingen av program för inbyggda system . Detta gör det möjligt för företag med integrerade kretsar att testa sina enheters prestanda innan de tillverkas i fabriken, vilket minskar tiden till marknaden.

Anteckningar

  1. ↑ Historia av FPGAs 
  2. Googles patentsökning, " Omprogrammerbar PLA ".
  3. Googles patentsökning, " PLA för dynamisk data omprogrammerbar ".
  4. Om kretsarnas ursprung. . Tillträdesdatum: 4 maj 2012. Arkiverad från originalet 27 april 2012.
  5. Doug Black. Xilinx säger att dess nya FPGA är världens största . Enterprise AI (21 augusti 2019). Hämtad 3 augusti 2020. Arkiverad från originalet 4 november 2020.
  6. FPGA Architecture Arkiverad 11 maj 2018 på Wayback Machine 
  7. Att uppnå högre systemprestanda med Virtex-5-familjen av FPGA, WP245 (v1.1.1) 7 juli 2006 Arkiverad från originalet den 27 september 2007. xilinx.com  _

Länkar