Väljas programmeeritav värava massiiv (FPGA) on arvuti loogikakiip, mis pole tootja poolt ühendatud. See tähendab, et seda saab pärast ostmist programmeerida. Tavalisel FPGA-l on saadaval tuhandeid kohandamisvõimalusi. Need programmeeritavad olemid on väravad, tuntud ka kui loogikaplokid või otsingutabeli (LUT) failid.
Kuna FPGA-l on liiga palju loogikaplokke, et neid käsitsi luua, genereeritakse need tarkvaraprogrammi kaudu. Programmeerijad saavad seejärel valida erinevate kategooriate hulgast, et neid konkreetse süsteemi jaoks kohandada. Nad saavad kasutada oma programme FPGA-kiibil oleva programmiga suhtlemiseks ja muudatuste tegemiseks.
FPGA programmeerimisel võib vajaduse korral loogikaplokkide konfigureerimiseks kasutada mitut omavahel ühendatud elementi. LUT-ide sisu varieerub olenevalt nende programmeerimisviisist. Mõned täidavad üksikuid funktsioone, samas kui teised on võimelised täitma keerukamaid ülesandeid. Mõned FPGA-d võivad sisaldada ka nii analoog- kui ka digitaalseid elemente. Need kiibid võimaldavad sageli ka nendel elementidel koos toimida.
LUT-id on ühendatud juhtmete võrguga. Olenevalt nõutavast funktsioonist võivad juhtmed kulgeda läbi failide sirgjooneliselt või keerulisemas diagonaalühenduste võrgus. LUT võib olla ühendatud mitme teise failiga mitme juhtmeühenduse kaudu. Faile võib ühendada ka juhtmete seeriaga, mida nimetatakse kandeahelateks või spetsiaalseteks marsruutimiskettideks, mis aitavad liigutada ainult teatud tüüpi teavet, et seda saaks kiiremini töödelda.
Loogikafunktsiooni programmeerimiseks FPGA-ga tuleb see esmalt teksti- või visuaalfailides välja tuua. Seejärel laaditakse teave alla FPGA-ga kaasas olevasse tarkvara. Kui see protsess on lõppenud, on funktsioon tavaliselt töökorras.
Kuigi FPGA on kallim kui juhtmega loogikakiip, võib see aidata säästa ressursse, kuna kasutajad saavad programmeerida vastavalt oma spetsiifilistele nõuetele. See võib vähendada lisatöö vajadust ja lisaaega, mis kulub kiibile, mis pole eritellimusel valmistatud. Programmeeritava kiibi kasutamine võib olla ka lihtsam, kuna selle kasutajafunktsioone, näiteks menüüsid, saab kohandada.
Välja programmeeritavad paisu massiivi ahelad on alternatiiviks rakendusspetsiifilisele integraalskeemile (ASIC). Need ahelad ühendatakse enne tehasest lahkumist juhtmega. Need on plaaditaseme komponendid, erinevalt väljal programmeeritavatest väravataseme elementidest.