FPGA — lauko programuojamų vartų masyvas: apibrėžimas ir veikimas

Sužinokite, kas yra FPGA (lauko programuojamų vartų masyvas): apibrėžimas, veikimo principas, konfigūravimas, HDL ir įrankiai — aiškūs, praktiniai paaiškinimai pradedantiesiems ir specialistams.

Autorius: Leandro Alegsa

Lauko programuojamų vartų masyvas (dažnai sutrumpintai vadinamas FPGA) yra universalus skaitmeninių grandinių integrinis lustas, kuriame vartų ir jungčių tinklas gali būti programiškai sukonfigūruotas po gamybos. Skirtingai negu vienos paskirties loginių vartų grandinės, FPGA funkcija nėra užfiksuota gamybos metu — ją nulemia vartotojo įkelta konfigūracija (bitų failas). Dėl šios savybės FPGA plačiai naudojami prototipavimui, greitiems dizaino pakeitimams, aukštos spartos skaičiavimams ir sistemoms, kur reikalingas didelis lankstumas.

FPGA pagrindinė architektūra

Tipinė FPGA viduje yra keli pagrindiniai komponentai:

  • Loginių elementų blokai (CLB arba logic cells) — juose yra mažesnės sudedamosios dalys, pvz., LUT (look-up table) ir užlaikymo elementai (flip-flop), kurie realizuoja loginę funkciją.
  • LUT — maža atmintinė, kurią galima užpildyti tiesiogine loginio funkcijos lentele; ji leidžia įgyvendinti sudėtingas logic funkcijas.
  • Registrai / flip-flop’ai — saugo bitus ir realizuoja sinchronizuotus sekcinius elementus.
  • Routingo matrica — jungtys, leidžiančios sujungti loginius elementus tarpusavyje; ši tinklelio sistema suteikia lankstumą, bet ir įtakoja delsą.
  • Blokuojama RAM (BRAM) — įmontuota atmintis didesniems duomenų kiekiams.
  • DSP blokai — skirti greitiems skaitiniams skaičiavimams (pvz., daugybos ir akumuliavimo operacijoms).
  • I/O bankai — lizdai ryšiui su išoriniais įrenginiais; palaiko įvairius signalų standartus.
  • Laikrodžių valdikliai (PLL, MMCM) — generuoja ir dalija laikrodžių signalus, leidžia didinti signalo kokybę ir sinchronizaciją.

Konfigūracija ir „bitų failas“

FPGA projektas paprastai aprašomas aparatūros aprašymo kalba (HDL) — VHDL, Verilog arba SystemVerilog. Projektavimo eiga apima:

  • Sintezė — HDL kodas verčiamas į logines ląsteles (LUT, registrus, BRAM, DSP).
  • Place & route (vietos nustatymas ir maršrutizavimas) — sintezuoti elementai išdėstomi FPGA plokštėje ir sukuriamos jungtys tarp jų, optimizuojant laiką ir naudojimąsi resursais.
  • Bitstream generavimas — galutinis failas, kurį įkelia į FPGA arba į jo konfigūracijos atmintį.

Bitstream galima įkelti tiesiogiai per JTAG, arba saugoti išoriniame PROM/Flash lustelyje, iš kurio FPGA skaito konfigūraciją paleidimo metu. Kai kurie FPGA palaiko ir „šaltąjį“ (non-volatile) konfigūravimą į vidaus Flash atmintį.

Konfigūracijos atminties tipai

  • SRAM-pagrįsti FPGA: greiti ir lankstūs, bet volatilūs — jie praranda konfigūraciją atjungus maitinimą; todėl reikia išorinės atminties bitstream saugojimui.
  • Flash-ar kita nevolatilinė atmintis integruota: FPGA gali prisiminti konfigūraciją be išorinės PROM.
  • Antifuse technologija: vienašališkai užfiksuota konfigūracija (nerekonfigūruojama), tinkama labai saugioms ar patikimoms sistemoms.

FPGA vs mikrovaldiklis, ASIC ir CPLD

  • Mikrovaldiklis / mikroprocesorius vykdo instrukcijas programiškai; FPGA įprastai realizuoja aparatinę (hardware) logiką ir todėl gali vienu metu vykdyti labai daug lygiagrečių operacijų. FPGA galima sukonfigūruoti taip, kad jis imituotų procesorių ir tuomet vykdytų programinį kodą.
  • ASIC (Application Specific IC) — vienos paskirties lustas, optimizuotas našumui, kainai ir energijos sąnaudoms masinėje gamyboje; FPGA suteikia greitesnį kūrimo ciklą ir galimybę keisti dizainą, bet vienetinė kaina dažnai būna didesnė ir vienetinis energijos/plotas — mažiau optimalūs.
  • CPLD — paprastesnės PLD klasės įrenginiai, turintys mažiau loginių resursų, bet nevolatinę konfigūraciją ir paprastą deterministinę struktūrą; tinkami mažesniems valdymo uždaviniams.

Standartiniai FPGA komponentai ir modernios savybės

  • Hard cores — kai kurie gamintojai integruoja standžiai įdiegtus (fixed) blokų rinkinį, pvz., ARM procesorių šerdį (SoC FPGA, pvz., Xilinx Zynq ar Intel SoC), Ethernet valdiklius, PCIe valdiklius.
  • Partial reconfiguration — galimybė keisti dalį dizaino be viso FPGA perprogramavimo, taip taupant laiką ir suteikiant dinamišką funkcionalumą.
  • Įmontuoti DSP blokai ir didelės BRAM atminties talpos — svarbu signalų apdorojimui, vaizdo, telekomunikacijų ir dirbtinio intelekto uždaviniams.

Įrankiai ir dizaino procesas

Didieji gamintojai teikia komercinę EDA programinę įrangą: pvz., Xilinx/AMD Vivado, Intel Quartus Prime, Lattice Radiant. Yra ir atvirosios alternatyvos (Yosys, nextpnr, SymbiFlow) mažesniems projektams ir tyrimams. Dizaino procesas apima HDL rašymą, sintezę, vietos nustatymą ir maršruto parinkimą, laiko analizę (static timing analysis), simuliaciją ir galutinį programavimą.

Saugumas ir konfigūracijos valdymas

Bitstream saugumas yra svarbus — dauguma profesionalių FPGA palaiko bitstream šifravimą ir autentifikavimą, kad apsaugotų dizainą nuo kopijavimo arba neteisėto keitimo. Taip pat diegiamos priemonės apsaugoti nuo fizinio sugadinimo ar reverse-engineering.

Privalumai ir trūkumai

  • Privalumai:
    • Didelis lankstumas—projektą galima keisti net po gamybos;
    • Galimybė vykdyti daug lygiagrečių operacijų ir pasiekti aukštą pralaidumą;
    • Greitas prototipavimas ir trumpesnis vystymo laikas, palyginti su ASIC.
  • Trūkumai:
    • Didesnės kainos vienetui mažose serijose nei ASIC masės gamyboje;
    • Dažnai didesnės energijos sąnaudos; konfigūracijos volumetrija ir vėlavimai gali būti sudėtingi;
    • SRAM pagrįstos versijos praranda konfigūraciją be išorinės atminties.

Tipiniai panaudojimo atvejai

  • Telekomunikacijos ir ryšiai (paketo apdorojimas, FPGA kaip tinklo akceleratorius).
  • Vaizdo apdorojimas ir kamerų priedai.
  • Duomenų centro akceleracija (AI, ML inferencija su pritaikytais duomenų srautais).
  • Automatika ir robotika — greiti kontrolės ciklai.
  • Gynyba ir kosmosas — sistemos, kur reikalingas patikimumas ir konfigūracijos lankstumas.
  • Prototipavimas prieš ASIC kūrimą.

Kaip pradėti su FPGA

Pradėti patogiausia su vienu iš populiarių vystymo modulių (development boards) — jie turi USB JTAG programatorių, maitinimo grandinę, I/O jungtis ir dažnai pavyzdinius projektus. Mokantis rekomenduojama:

  • Išmokti pagrindus VHDL arba Verilog;
  • Sukurti paprastą sinchroninį skaitmeninį modulį (pvz., skaitiklį arba baudų generatorių);
  • Išbandyti simuliaciją, sintezę ir įkelti bitstream į plokštę;
  • Palaipsniui pereiti prie sudėtingesnių temų: laiko apribojimai, signalo integracija, BRAM ir DSP naudojimas, integracija su procesoriais (SoC FPGA).

Populiariausi FPGA gamintojai: Xilinx/AMD, Intel (anksčiau Altera), Lattice ir kiti. Kiekvienas siūlo savo įrankių rinkinį, dokumentaciją ir vystymo plokštes, todėl verta pasirinkti pagal projektui reikiamus resursus, kainą ir palaikymą.

Apibendrinant, FPGA — tai galinga ir lanksti technologija, leidžianti greitai realizuoti sudėtingas skaitmenines sistemas, tuo pačiu suteikiant galimybę jas keisti ir optimizuoti pagal poreikį.

Zoom


Vidinė struktūra

FPGA paprastai yra sukurti iš programuojamų loginių elementų ir programuojamų jungčių. Vienas iš loginių elementų blokų yra programuojama paieškos lentelė (LUT). LUT galima užprogramuoti taip, kad ji išvestų bet kokią įvesties reikšmę. Tokiu būdu LUT gali būti užprogramuota kaip bet kokio tipo loginis elementas, turintis tokį patį įėjimų ir išėjimų skaičių. Pavyzdžiui, 2 įėjimų ir 1 išėjimo LUT galima užprogramuoti taip, kad imituotų 2 įėjimų AND, OR, NAND, NOR, XOR ir t. t. logiką. Šios LUT išvestį galima išsaugoti naudojant registrą arba prijungti prie kitų LUT įvesties. Naudojant programuojamąjį mux, FPGA galima užprogramuoti taip, kad ji pasirinktų registruotą arba neregistruotą išėjimą. Šis LUT, registro ir mux derinys yra bendroji loginio elemento struktūra.

Šiems loginiams elementams sujungti naudojami praleidžiamieji tranzistoriai. Tranzistorius galima užprogramuoti taip, kad jis arba sujungtų signalą, arba ne, taip suteikiant FPGA galimybę labai konkrečiai sujungti loginius elementus. Pavyzdžiui, jei vieno loginio elemento išėjimas maitins kito loginio elemento įėjimą, praleidžiamąjį tranzistorių galima užprogramuoti taip, kad jis sujungtų šiuos du laidus ir atitiktų nurodytą logiką. Tarp loginių elementų ir praleidžiamųjų tranzistorių kompiliatorius gali paimti aparatūros aprašymą iš HDL, sukurti loginių elementų logiką ir sujungti juos naudojant praleidžiamuosius tranzistorius.

Klausimai ir atsakymai

K: Kas yra programuojamų vartų masyvas (FPGA)?


A.: Lauke programuojamų vartų masyvas (FPGA) yra elektroninis komponentas, naudojamas perkonfigūruojamoms skaitmeninėms grandinėms kurti. Gamybos metu jo funkcija neapibrėžta, todėl prieš naudojant grandinėje jis turi būti užprogramuotas arba perkonfigūruotas.

K: Kuo FPGA skiriasi nuo loginių vartų?


A.: FPGA skiriasi nuo loginių vartų tuo, kad loginiai vartai turi fiksuotą funkciją, o FPGA turi neapibrėžtą funkciją gamybos metu.

K: Kokio tipo integrinis grandynas yra FPGA?


A.: FPGA yra integrinis grandynas, priklausantis programuojamų loginių įtaisų arba PLD kategorijai.

K: Kokie yra kai kurie FPGA naudojimo trūkumai, palyginti su kitais PLD?


A: Vienas iš FPGA trūkumų, palyginti su kitais PLD, yra tas, kad jie neprisimena savo projekto, kai atjungiamas maitinimas, todėl jiems reikia atskiros konfigūracijos atminties mikroschemos, kurioje būtų saugomas projektas. Be to, jie yra brangesni už kitų tipų PLD.

K: Kaip programuojama FPGA?


A.: Norėdami programuoti FPGA, inžinieriai naudoja "Windows" arba "Linux" inžinerinę programinę įrangą, kad sukurtų projektus, parašytus aparatinės įrangos aprašymo kalbomis, tokiomis kaip VHDL ir Verilog. Tada programinė įranga išverčia šį kodą į loginius elementus, esančius pasirinktame FPGA, ir išdėsto juos, naudodama vietos ir maršruto nustatymo procesus, taip sukurdama bitų failą, kurį galima užprogramuoti konfigūracijos atmintyje arba tiesiogiai pačiame FPGA, naudojant USB programatorių, prijungtą prie JTAG prievado.

Klausimas: Ar mikroprocesoriai ir mikrovaldikliai yra panašūs į FGPA?


A: Ne, mikroprocesoriai ir mikrovaldikliai skiriasi nuo FGPA, nes savo pagrindine forma jie negali paleisti programinės įrangos; tik gavę konfigūraciją, kurioje yra procesoriaus architektūra, jie turi tokią galimybę.


Ieškoti
AlegsaOnline.com - 2020 / 2025 - License CC3