Lauka programmējamo vārtu masīvs (bieži saīsināti FPGA) ir elektroniska integrālā shēma, ko izmanto pārkonfigurējamu digitālo shēmu veidošanai. Atšķirībā no atsevišķiem loģiskajiem vārtiem vai fiksētām mikroshēmām, FPGA funkcionalitāte nav fiksēta ražošanas brīdī — to definē lietotāja konfigurācija. Pirms FPGA var izmantot konkrētā ierīcē, to ir jāprogrammē jeb jāpārkonfigurē, ievadot ierīcē atbilstošu bitu plūsmu (bitstream).

FPGA vieta programmējamo loģisko ierīču (PLD) kategorijā

FPGA pieder pie programmējamo loģisko ierīču — PLD — klases. Salīdzinājumā ar citiem PLD tipiem, FPGA parasti nodrošina augstāku veiktspēju, lielāku elastību un vairāk resursu, taču arī var būt dārgāki un enerģijas patēriņā lielāki. Bieži sastopamie PLD tipi ir:

  • CPLD — mazāki, ar determinētāku uzbūvi un parasti nemainīgu konfigurāciju, piemēroti vienkāršākām loģikas funkcijām;
  • FPGA — lieli, ļoti fleksibili, ļauj izveidot sarežģītas paralēlas shēmas;
  • ASIC — pilnībā pielāgotas lietojumprogrammas mikroshēmas, lētākas vienā eksemplārā lielos daudzumos, taču ar augstām ietvarizstrādes izmaksām un garu izstrādes laiku.

FPGA uzbūve un galvenie bloki

Tipiska FPGA iekšējā arhitektūra satur vairākus standartizētus elementus:

  • Konfigurējami loģikas bloki (CLB vai LAB) — satur LUT (lookup tables) un virknē flip-flopu, kas realizē kombinatoriku un reģistrus;
  • Maršrutēšanas tīkls — savieno loģikas blokus savā starpā un ar izejām/ieejām, nodrošinot signālu ceļus;
  • I/O bloki (IOB) — ārējo signālu fiziskā saskarne, atbalsta dažādus signālu standartus (LVTTL, LVCMOS, SSTL u. c.);
  • Blokējama RAM (BRAM) — iebūvēti atmiņas bloki datu glabāšanai;
  • DSP bloki — optimizēti reģistri un multiplikatūras vienības ar ātru aritmētiku signālu apstrādei;
  • Clock management (PLL/MMCM) — pulksteņa ģenerēšana, dalīšana un sinhronizācija;
  • Augstas ātrgaitas serdes transīveri — SerDes kanāli PCIe, Ethernet, SATA u. c. protokolu īstenošanai;
  • Integrēti procesoru kodoli — daži FPGA ietver fiksētas (“hard”) procesoru arhitektūras (piem., Xilinx Zynq ARM), savukārt citos gadījumos lietotājs var ieprojektēt “soft” procesoru kodolu (piem., MicroBlaze, Nios II) loģikā.

Konfigurācijas veidi un atmiņa

Daudzas FPGA izmanto SRAM-bāzētu konfigurācijas atmiņu, kas ir volatīla — tā tiek zaudēta, izslēdzot strāvas padevi. Tādēļ parasti ir nepieciešama papildu konfigurācijas atmiņa (piem., SPI vai paralēla Flash), no kuras FPGA ielādē bitstream startēšanas laikā. Alternatīvas konfigurācijas tehnoloģijas ietver:

  • Flash-bāzētas FPGA (nevolatīvas) — konfigurācija saglabājas atmiņā;
  • Antifuse — vienreiz konfigurējamas, drošas un nemainīgas pēc programmēšanas;
  • On-chip eFUSE un drošības mehānismi — bitstream šifrēšana, digitālas parakstīšanas atbalsts drošībai.

Darbības princips un dizaina plūsma

FPGA izstrādes process parasti ietver šādas fāzes:

  • Analīze un arhitektūra — definē funkciju un prasības (veiktspēja, jaudas, saskarnes);
  • Rakstīšana HDL — projekta kods tiek rakstīts aparatūras apraksta valodā (HDL) kā VHDL vai Verilog. Mūsdienās populārs ir arī SystemVerilog un augstākā līmeņa sintezēšana (HLS) no C/C++/OpenCL;
  • Simulācija — testbenču veidošana un funkcionalitātes pārbaude pirms sintēzes;
  • Sintēze — HDL kods tiek pārvērsts loģiskos elementu blokos (LUT, flip-flop u. c.);
  • Implementācija (place & route) — loģiskie elementi tiek izvietoti un maršrutēti FPGA iekšienē, tiek veikta statiskā laika analīze;
  • Bitstream ģenerēšana — tiek izveidots fails, ko ielādē konfigurācijas atmiņā vai tieši FPGA.

Programmatūra un rīki, ko piedāvā ražotāji (piem., Xilinx/AMD Vivado un Intel/Altera Quartus), veic visas šo darbību automatizācijas un optimizācijas. Dizaina testēšanai un atkļūdošanai lieto gan simulācijas vides, gan aparatūras instrumentus (JTAG, logic analyzer, iebūvētas ILA/ChipScope funkcijas).

Atšķirība no mikroprocesoriem un mikrokontrolieriem

Galvenā atšķirība ir tāda, ka mikroprocesorus/mikrokontrolierus programmē, lai izpildītu secīgas instrukcijas, kamēr FPGA ļauj realizēt paralēlu aparatūras loģiku. Tas nozīmē, ka FPGA var vienlaikus darbināt daudz neatkarīgu datu ceļu ar ļoti zemu latentumu, taču pats par sevi FPGA nepārvalda programmatūras izpildi, ja vien tajā nav ieprojektēts procesors vai izmantojams soft-core kodols.

Soft-core un hard-core procesori, SoC FPGA

Dažas FPGA platformas iekļauj pilnvērtīgus “hard” procesoru kodolus (piem., ARM Cortex-A sērija Xilinx Zynq/MPSoC) — tie nodrošina operētājsistēmu atbalstu (Linux) un labu savienojamību starp programmatūru un ātrdarbīgu aparatūru. Alternatīvi var ieprojektēt “soft” procesoru (izpildīts FPGA loģikā), kas piedāvā lielāku elastību, bet parasti zemāku veiktspēju.

Dažādi konfigurācijas un programmēšanas veidi

Konfigurāciju var ielādēt vairākos veidos:

  • Automātiski no ārējās Flash atmiņas pēc ieslēgšanas;
  • Tieši, izmantojot JTAG/USB programmētāju bitstream ielādei;
  • Laika gaitā — dinamiska (partial reconfiguration), lai mainītu daļējas FPGA zonas uzdevumus bez pārtraukuma citām funkcijām;
  • Uzplādējot bitstream no host procesora caur SPI, BPI vai citiem interfeisiem.

Drošība un aizsardzība

FPGA bitstream drošība ir svarīga, īpaši komerciāli kritiskos risinājumos. Ražotāji piedāvā bitstream šifrēšanu, parakstīšanu un autentifikāciju, kā arī drošības moduļus (trust anchors) uz čipa līmeņa, lai ierobežotu neatļautu atpakaļinženieriju vai modifikācijas.

Priekšrocības un ierobežojumi

  • Priekšrocības:
    • Ļoti liela paralēla apstrāde un zems latentums;
    • Elastība — dizainu iespējams ātri mainīt un atkārtoti konfigurēt;
    • Ātrs prototipēšanas laiks salīdzinājumā ar ASIC izstrādi;
    • Spēja integrēt sarežģītus IP blokus (Ethernet, PCIe, DDR kontrolieri u. c.).
  • Ierobežojumi:
    • Volatīva konfigurācija (ja SRAM-bāzēta) — nepieciešama konfigurācijas atmiņa;
    • Lielāks vienības izmaksu līmenis masveida ražošanā nekā ASIC;
    • Sarežģīta laika slēgšana (timing closure) pie ļoti ātrām frekvencēm;
    • Enerģijas patēriņš var būt augsts salīdzinājumā ar specializētiem risinājumiem.

Tipiskas pielietošanas jomas

FPGA tiek plaši izmantoti daudzās nozarēs, pateicoties to veiktspējai un elastībai:

  • Telekomunikācijas — 5G bāzes stacijas, datu pārraide, protokolu apstrāde;
  • Signālu apstrāde un digitālā radio (SDR);
  • Aizsardzība un aviācija — liela nozīme drošībā un determinismā;
  • Autoindustrija — ADAS, attēlu apstrāde, sensoru sapludināšana;
  • Medicīna — reālā laika datu apkopošana un analīze;
  • Rūpniecības automatizācija un robotika — ātra reakcija un paralēla vadība;
  • Kriptogrāfija un drošības ierīces — aparatūras paātrinājumi un drošas atmiņas;
  • Mašīnmācīšanās — inferenču paātrināšana, īpaši zema latentuma lietojumos;
  • ASIC prototipēšana — iespēja pārbaudīt dizainu pirms kostratīvās ražošanas.

Ražotāji un rīki

Galvenie FPGA ražotāji un to izstrādes vides piemēri ir:

  • AMD (iepriekš Xilinx) — Vivado, Vitis, ISE (vecāks);
  • Intel (iepriekš Altera) — Quartus Prime;
  • Lattice Semiconductor — Diamond, Radiant;
  • Microchip/Microsemi — Libero SoC.

Rīki ietver gan tradicionālo HDL balstīto plūsmu, gan mūsdienu risinājumus kā High-Level Synthesis (HLS), kas ļauj konvertēt C/C++/OpenCL kodu uz aparatūras reprezentācijām.

Noslēgums

FPGA ir spēcīgs rīks, ja vajadzīga augsta paralēlisms, zems latentums, ātra pielāgojamība vai iespēja integrēt sarežģītus IP blokus. Izvēle starp FPGA, CPLD, mikroprocesoru vai ASIC atkarīga no projekta prasībām, budžeta, izstrādes laika un ražošanas apjoma. Mūsdienu FPGA turpina attīstīties — tiek iekļautas jaunas iespējas (SoC integrācija, drošība, HLS atbalsts), kas paplašina to pielietojumu gan rūpniecībā, gan pētniecībā un patēriņa elektronikā.