FPGA — lauka programmējams vārtu masīvs: definīcija, darbība un izmantošana

Uzzini, kas ir FPGA — lauka programmējams vārtu masīvs: definīcija, darbības princips, programmēšana, pielietojumi un salīdzinājums ar mikroprocesoriem.

Autors: Leandro Alegsa

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ā.

Zoom


Iekšējā struktūra

FPGA pamatā parasti ir programmējami loģiskie elementi un programmējami starpsavienojumi. Viens no loģisko elementu pamatelementiem ir programmējama lookup tabula (LUT). LUT var ieprogrammēt, lai izvadītu jebkuru vērtību, ņemot vērā ieejas vērtības. Tādējādi LUT var programmēt kā jebkura veida loģiku ar vienādu ieeju un izeju skaitu. Piemēram, 2 ieejas un 1 izejas LUT var ieprogrammēt, lai atdarinātu 2 ieejas AND, OR, NAND, NOR, XOR utt. loģiku. Šīs LUT izeju var vai nu saglabāt, izmantojot reģistru, vai pieslēgt citu LUT ievadei. Izmantojot programmējamu mux, FPGA var programmēt, lai izvēlētos reģistrētu vai nereģistrētu izeju. Šī LUT, reģistra un mux kombinācija ir vispārējā loģiskā elementa struktūra.

Lai savienotu šos loģiskos elementus kopā, tiek izmantoti caurlaides tranzistori. Tranzistoru var ieprogrammēt tā, lai tas savienotu vai nesavienotu signālu, tādējādi nodrošinot FPGA iespēju ļoti specifiski savienot loģiskos elementus. Piemēram, ja viena loģiskā elementa izeja baros cita loģiskā elementa ieeju, caurlaides tranzistoru var ieprogrammēt, lai savienotu šos divus vadus kopā un atbilstu norādītajai loģikai. Starp loģiskajiem elementiem un caurlaides tranzistoriem kompilators var ņemt aparatūras aprakstu no HDL, izveidot loģisko elementu loģiku un savienot tos kopā, izmantojot caurlaides tranzistorus.

Jautājumi un atbildes

J: Kas ir programmējamo vārtu masīvs (FPGA)?


A.: Programmējamo vārtu masīvs (FPGA) ir elektronisks komponents, ko izmanto pārkonfigurējamu digitālo shēmu veidošanai. Ražošanas brīdī tam ir nenoteikta funkcija, un, pirms to var izmantot shēmā, tas ir jāprogrammē jeb jāpārkonfigurē.

J: Ar ko FPGA atšķiras no loģiskajiem vārtiem?


A: FPGA atšķiras no loģiskajiem vārtiem, jo loģiskajiem vārtiem ir fiksēta funkcija, bet FPGA ražošanas laikā funkcija nav definēta.

J: Kāda tipa integrālā shēma ir FPGA?


A: FPGA ir integrālā shēma programmējamo loģisko ierīču jeb PLD kategorijā.

J: Kādi ir daži FPGA izmantošanas trūkumi salīdzinājumā ar citām PLD?


A: Viens no FPGA izmantošanas trūkumiem salīdzinājumā ar citām PLD ir tas, ka tās neatceras savu konstrukciju, kad tiek atvienots strāvas padeves avots, tāpēc tām ir vajadzīga atsevišķa konfigurācijas atmiņas mikroshēma, kurā tiek saglabāta konstrukcija. Tie ir arī dārgāki par citiem PLD veidiem.

J: Kā programmēt FPGA?


A: Lai programmētu FPGA, inženieri izmanto inženierprogrammatūru Windows vai Linux operētājsistēmām, lai izstrādātu projektus, kas rakstīti aparatūras aprakstīšanas valodās, piemēram, VHDL un Verilog. Pēc tam programmatūra šo kodu pārtulko izvēlētajā FGPA pieejamajos loģiskajos elementos un izvieto tos, izmantojot izvietošanas un maršrutēšanas procesus, kas rada bitfailu, kuru var ieprogrammēt vai nu konfigurācijas atmiņā, vai tieši pašā FGPA, izmantojot USB programmētāju, kas pievienots tā JTAG pieslēgvietai.

J: Vai mikroprocesori un mikrokontrolieri ir līdzīgi FGPA?


A: Nē, mikroprocesori un mikrokontrolieri atšķiras no FGPA, jo to pamatformā tie nevar palaist programmatūru; tikai tad, ja tiem tiek piešķirta konfigurācija, kas satur procesora arhitektūru, tiem ir šāda spēja.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3