FPGA apžvalga
Žodžių junginys „programuojamas lauke“ reiškia integrinį grandyną, kurį klientas arba dizaineris gali pritaikyti po pagaminimo. Tai vadinama programuojamų vartų masyvu (FPGA). Nuolat diskutuojame apie įvairias FPGA programas ir panaudojimo būdus, tačiau pripažįstame, kad retai aptariame kitą temą: kas tiksliai yra FPGA plokštė ir kam naudojama FPGA?
FPGA buvo sukurtos aštuntojo dešimtmečio viduryje, siekiant suteikti projektuotojams galimybę kurti unikalią skaitmeninę logiką. Devintojo dešimtmečio pradžioje pagrindinės FPGA taikymo sritys buvo tinklai ir telekomunikacijos. Dešimtojo dešimtmečio pabaigoje FPGA, kurie priklauso įterptųjų integrinių grandynų grupei, buvo naudojami vartotojų, automobilių ir pramonės srityse.
Kaip veikia FPGA?
FPGA sudaro vidiniai aparatinės įrangos blokai, kurių tarpusavio ryšius vartotojas gali užprogramuoti taip, kad jie veiktų tam tikru būdu konkrečioje programoje. Kadangi šias jungtis galima perprogramuoti, FPGA gali priimti projekto pakeitimus arba naudoti naujoms programoms per visą detalės gyvavimo laiką. Nors FPGA iš pradžių programuojama gamybos metu, ją galima atnaujinti, kad būtų atsižvelgta į bet kokius prietaiso pakeitimus. FPGA pagrindą sudaro programuojamų loginių blokų (CLB), sujungtų programuojamomis jungtimis, matrica. Pagrindinę FPGA ląstelę sudaro CLB blokai, kuriuos taip pat sudaro programuojami maršrutizavimo valdikliai (multiplekseriai), du 16 bitų funkcijų generatoriai, vienas 8 bitų funkcijų generatorius, du registrai (flip-flops arba latches) ir du registrai. Makroschemos ir kitos suprojektuotos funkcijos įgyvendinamos naudojant CLB.
Skirtingos apdorojimo operacijos nekonkuruoja dėl tų pačių išteklių, nes, skirtingai nei mikroprocesoriai, FPGA gali atlikti operacijas vienu metu. Kiekvienai atskirai užduočiai skiriama atskira lusto sritis ir ji gali veikti nepriklausomai nuo kitų loginių blokų. Dėl to, jei pridedama daugiau veiksmų, tai neturi įtakos tam, kaip gerai veikia vienas iš taikomosios programos aspektų. FPGA vidinė konfigūracija nustatoma programine įranga, arba, kaip ji kartais vadinama, „firmware“. Jei reikia pakeisti funkcionalumą ar taikomąją programą, FPGA galima perprogramuoti vietoje.
Verilog HDL arba VHDL yra du aparatinės įrangos aprašymo kalbos, kuria galima programuoti FPGA, pavyzdžiai. FPGA skiriasi nuo ASIC integrinių grandynų, kurie yra sukurti atlikti konkrečiai paskirtus darbus, tuo, kad juos galima perprogramuoti. Projektavimo proceso pradžioje turi būti nuspręsta, ar reikia priimti FPGA pagrįstą projektą. Jei lustą reikės perprogramuoti vėliau projektavimo proceso metu arba net po pagaminimo, į tai reikėtų atsižvelgti. Kai trūkumų gali būti aptikta dar kūrimo ciklo pradžioje, gamintojai kartais renkasi FPGA pagrindu sukurtą projektą, o prie ASIC pereina po to, kai projektas yra patikimas.
FPGA funkcijos
- Lygiagretus (angl. Parallel) apdorojimas: FPGA gali atlikti lygiagretųjį apdorojimą, nes ji nesilaiko procesoriaus programavimo modelio. Dėl lygiagretaus apdorojimo klientai vis tiek gali pasiekti reikiamą pralaidumą naudodami mažesnės energijos laikrodžius (priešingai nei procesorių aukšto dažnio laikrodžiai).
- FPGAs galima perkonfigūruoti: Kai gaminys tobulėja, galima lengvai keisti funkcijas ar atlikti patobulinimus tiesiog atnaujinant FPGA.
- Mažos ir vidutinės apimties gamyba: FPGA pirmiausia naudojami mažos ir vidutinės apimties prietaisams. Didelės apimties gaminiuose dažnai pirmenybė teikiama ASIC, nes jų kaina yra mažesnė. ASIC dažnai yra ekonomiškesni didelės apimties gaminiams nei mažos ar vidutinės apimties gaminiams.
- Greitasis kūrimo procesas: FPGA galima greitai pereiti nuo koncepcijos iki gamybos, nes nereikia atlikti faktinio tranzistorių lygmens projektavimo.
FPGA struktūros
- Configurable Loginis blokas;
- Flip-Flops;
- Lookup Lentelės;
- DSP Skaidulos;
- Block RAM;
- Transceivers;
- Įvesties ir išvesties blokai.
Konfigūruojamas loginis blokas
Pagrindinis FPGA logikos elementas yra konfigūruojami loginiai blokai (CLB). CLB dėka FPGA gali priimti daugybę aparatinės įrangos konfigūracijų. Beveik visas logines operacijas CLB galima atlikti programuojant. Tarp diskrečiųjų loginių elementų, esančių kiekviename atskirame CLB, yra paieškos lentelės (LUT) ir flip-flopai.
DSP skiltelės
DSP skaidinys, kai kur dar vadinamas bloku arba ląstele, yra viena iš specializuotų FPGA dalių. Ji yra efektyvesnė nei daugybė CLB skaitmeninio signalų apdorojimo užduotims, pavyzdžiui, filtravimui ar dauginimui, atlikti. Ši daugiklių grandinė sumažina flip-flopų ir LUT poreikį programose, susijusiose su matematikos ir signalų apdorojimu.
„Šlepetės“
Flip-flopas – tai grandinė, kuri gali būti naudojama duomenims saugoti ir turi dvi stabilias būsenas. FPGA grandinėje flip-flopai yra dvejetainiai poslinkio registrai, kurie sinchronizuoja logines būsenas ir saugo logines būsenas tarp laikrodžio ciklų. Flip-flopas saugo tik vieną informacijos bitą.
Blokinė RAM atmintis
Blokinė operatyvioji atmintis (angl. Block RAM, BRAM) – taip vadinama FPGA įrenginyje esanti atmintis. Norint sukurti mažesnio ar didesnio dydžio BRAM, šiuos blokus galima padalyti arba sujungti kaskadomis. Skaitmeninių signalų apdorojimo algoritmams dažniausiai reikia išlaikyti visą duomenų bloką, o veikti be integruotos atminties. FPGA įrenginio programuojamoji logika netinka visoms apdorojimo užduotims.
Siųstuvai
Didelės spartos nuoseklusis duomenų perdavimas ir priėmimas į FPGA ir iš jos galimas naudojant siųstuvus. Naudojant šį specifinį komponentą galima įgyvendinti didelės spartos duomenų perdavimą nenaudojant FPGA loginių išteklių.
Paieškos lentelės
Paieškos lentelė (LUT) nustato išvestį kiekvienam įėjimui arba įėjimų rinkiniui. Tai tiesos lentelė kombinacinės logikos kontekste ir nustato, kaip veikia kombinacinė logika. Tiesos lentelė – tai iš anksto kiekvienam įėjimų rinkiniui nustatytų išėjimų rinkinys. Kai mikroschema įjungiama, unikali tiesos lentelė įrašoma į LUT.
Įvesties ir išvesties blokai
Duomenys į FPGA patenka ir išeina iš jos per įvesties-išvesties (IO) blokus, kurie yra sistemos dalys. Priklausomai nuo duomenų tipo, IO blokus galima konfigūruoti įvairiais būdais. Nepaisant to, kad jie juda lėčiau nei siųstuvai, jie yra funkciškai lankstesni.
FPGA programos
Taigi, kokia yra FPGA paskirtis? Yra daugybė FPGA taikymo sričių. Skaitmeninis signalų apdorojimas, biomedicininiai prietaisai, prietaisų valdikliai, programine įranga apibrėžtas radijas, atsitiktinė logika, medicininis vaizdavimas, kompiuterinės įrangos emuliacija, balso atpažinimas, kriptografija, filtravimas ir komunikacijos kodavimas bei kitos specifinės programos, kuriose naudojamos FPGA, yra tik keli pavyzdžiai. Išmanieji telefonai, savaeigiai automobiliai, fotoaparatai, ekranai, vaizdo ir vaizdų apdorojimas bei apsaugos sistemos – tai buitinės elektronikos taikomųjų programų pavyzdžiai. FPGA privalumai taip pat naudojami daugelyje komercinių programų, įskaitant serverius ir įvairias pramonės šakas, pavyzdžiui, aviacijos ir gynybos, medicinos elektronikos ir paskirstytų finansinių sistemų.
FPGA privalumai
- Našumas: Lyginant su kitais šiuolaikiniais mikroprocesoriais, FPGA dėl savo lygiagretaus pobūdžio pasižymi didesniu našumu, t. y. apdorojimo galia, greičiu, reakcijos laiku ir bendru našumu.
- Perprogramuojama aparatinės įrangos struktūra: FPGA perprogramavimo galimybės leidžia keisti funkcionalumą net ir juos pagaminus. Po to, kai gaminys pradedamas naudoti, naudotojai gali programuoti papildomas savybes ir funkcijas, atitikti naujus standartus ir keisti aparatinės įrangos programas.
- Greitesnis pateikimo rinkai laikas: Naudotojai gali greitai sukurti šia technologija pagrįstas sistemas, nes FPGA yra prieinami. ASIC reikalauja kelių mėnesių gamybos ciklų. FPGA naudotojai gali pradėti tiekti sistemas iškart, kai tik gaminio projektas yra išbandytas ir veikia.
- Mažesnės bendros išlaidos: Palyginti su ASIC gamybos išlaidomis, FPGA kaina yra pagrįsta. ASIC projektavimo ciklas yra ilgas, o gamybos įranga yra brangi. Be to, pakeitus dizainą, reikės naujo lusto, o FPGA galima paprasčiausiai atnaujinti naudojant naują programą.
- Mažai priežiūros: FPGA, priešingai nei ASIC, galima atnaujinti ar patobulinti iš karto, nereikalaujant laiko ir išteklių, reikalingų grandynų plokštėms ir aparatinei įrangai modifikuoti. Palyginti su ASIC, inžinerinės išlaidos taip pat yra gerokai mažesnės. Sistemos poreikiai laikui bėgant gali kisti, o laipsniškas FPGA atnaujinimas yra pigesnis nei ASIC pertvarkymas, kuris gali būti labai brangus.
Elektronika.lt pastaba: tekstas pateiktas reklamos užsakovo.