Field-Programmable Gate Array (förkortat FPGA, vilket kan översättas med 'på-plats-programmerbar grindmatris'), är en integrerad krets som används inom digitalteknik, vars fysiska funktion kan ändras genom att ny programmering översänds genom anslutning av en enkel kabel.
Kretsens funktionsbeskrivning kan laddas in direkt via en datalänk (JTAG) till en dator eller från minnen som till exempel RAM, ROM eller flashminne. När kretsen blir spänningssatt kan valfri funktion laddas in, eller laddas om senare med en ny funktionsbeskrivning så ofta som önskas. Vissa FPGA-kretsar från företag som till exempel Xilinx[1] och Lattice Semiconductor är utrustade med icke-flyktigt datorminne varifrån funktionsbeskrivningen laddas vid spänningspåslag, och därmed behåller konfigurationen även efter förlust av elektrisk spänning.
Användningsområde
När ett mindre antal produkter (oftast färre än 1000 enheter) ska tillverkas är det ekonomiskt fördelaktigt att använda omprogrammerbar logik såsom FPGA eller CPLD. Enhetskostnaden för en ASIC-krets blir låg först vid stora volymbeställningar, då dessutom risktagandet blir större eftersom felaktig logik riskerar att permanentas. Vid framtagande av prototyp är den låga startkostnaden och möjligheten till omgående ändringar något som gör FPGA värdefull. FPGA är emellertid något långsammare än ASIC. Produktionskostnaden för FPGA-kretsar sjunker dock varje år och numera använder många tillverkare FPGA:er i större volymer på upp till 100 000 enheter per år.
FPGA, design och programmering
Funktionen för en FPGA-krets uttrycks i ett hårdvarubeskrivande språk, exempelvis något av språken VHDL eller Verilog. Språket underlättar utveckling och utvärdering av funktioner innan syntetisering av kretsen genomförs. Själva programmeringen utförs genom att en digital kod, som skapats på ett datorsystem, överförs till ett startminne som kretsen använder vid spänningstillslag, eller laddas ner direkt till kretsen.
Tidiga FPGA-kretsar hade minnesceller som krävde konstant spänningstillförsel för att behålla den lagrade informationen (så kallat flyktigt datorminne). Moderna FPGA-kretsar förekommer däremot i varianter såväl med som utan icke-flyktigt datorminne. För FPGA varianter med icke-flyktigt datorminne laddas endast funktionsbeskrivningen därifrån vid spänningstillslag.
Kompatibilitet
Tillverkarna Xilinx och Actel erbjuder utvecklingsverktyg med Linux som plattform. Men det fungerar även att användas på FreeBSD.