1. januarja, 2020

Osnove programirljivih matrik logičnih vrat (FPGA) – kaj so in kaj je potrebno za njih

Revija logo digikey 300x150 - Osnove programirljivih matrik logičnih vrat (FPGA) - kaj so in kaj je potrebno za njihDigi-Key Electronics
Avtor: Rich Miron
2020_281_24

Načrtovalci nenehno iščejo načine, kako v svoje sisteme vključiti optimalno računalniško rešitev, ki bo ustrezala vsem zahtevam njihovih aplikacij. V številnih primerih so za optimalno rešitev pogosto potrebne programirljive matrike logičnih vrat (FPGA-ji). Vendar številni načrtovalci ne poznajo zmožnosti teh naprav in na kakšen način jih vključiti.

Zakaj uporabiti programirljive matrike logičnih vrat?
Obstaja širok spekter računalniških področij uporabe, od katerih ima vsako področje lahko drugačen najboljši pristop, vključno s serijskimi mikroprocesorji (MPU-ji) in mikrokontrolerji (MCU-ji), serijskimi grafičnimi procesorskimi enotami (GPU-ji), FPGA-ji in prilagojenimi napravami sistema na čipu (SoC). Za odločitev, kateri pristop uporabiti, je treba podrobneje pregledati zahteve in premisleke glede aplikacij.

Na primer, pri delu na najnovejših tehnologijah, kot so 5G bazne postaje, morajo načrtovalci upoštevati, da se osnovni standardi in protokoli še vedno razvijajo. To pomeni, da se morajo biti načrtovalci zmožni hitro in učinkovito odzvati na vse spremembe specifikacij, na katere nimajo vpliva.

Prav tako morajo biti prilagodljivi, da se bodo lahko odzvali na prihodnje spremembe standardov in protokolov, do katerih lahko pride, ko bodo sistemi že postavljeni na terenu. Podobno morajo biti zmožni odzvati se na nepričakovane napake v funkcionalnosti sistema ali luknje v varnosti sistema in tako prilagoditi obstoječo funkcionalnost ali dodati novo funkcionalnost, da se podaljša življenjsko dobo sistema.
Medtem, ko najvišjo učinkovitost običajno zagotavlja SoC, je ta pot draga in časovno potratna. Poleg tega so vsi algoritmi, ki se jih vdela v strukturo čipa, praktično »zamrznjeni v siliciju«. Ta inherentna neprilagodljivost postane težavna, če upoštevamo zgoraj navedene premisleke. Če želimo poiskati najprimernejši kompromis med optimalno zmogljivostjo in prilagodljivostjo, je treba ubrati drugačno pot. To pot običajno zagotavljajo programirljive matrike logičnih vrat (FPGA), kombinacije mikroprocesorjev/mikrokontrolerjev in FPGA-jev, ali pa FPGA-ji, katerih del so trdna procesorska jedra.

Kaj so programirljive matrike logičnih vrat (FPGA-ji)?
To je zapleteno vprašanje, ker FPGA-ji različnim ljudem pomenijo različne stvari. Prav tako obstajajo številne različne vrste FPGA-jev, vsaka od teh pa ima različne kombinacije zmožnosti in funkcij.
V osredju vsakega FPGA-ja – ki je odločilni dejavnik področja FPGA-jev kot takega – je njegova programirljiva struktura, ki je predstavljena kot matrika programirljivih logičnih blokov (slika 1a). Vsak od teh logičnih blokov vsebuje zbirko elementov – vključno z iskalno tabelo (LUT), multiplekser in register – vse od katerih je mogoče konfigurirati (programirati) tako, da delujejo kot je zahtevano (slika 2).

Številni FPGA-ji uporabljajo 4-vhodne iskalne tabele (LUT), ki jih je mogoče nastaviti tako, da vključujejo katerokoli 4-vhodno logično funkcijo. Za boljšo podporo širokih podatkovnih poti, ki se uporabljajo v nekaterih aplikacijah, nekateri FPGA-ji ponujajo 6-, 7- ali celo 8-vhodne iskalne tabele (LUT). Izhod iz iskalne tabele (LUT) je neposredno povezan z enim od izhodov logičnega bloka in z enim od vhodov multiplekserja. Drugi vhod v multiplekser je neposredno povezan z logičnim blokovnim vhodom (e). Multiplekser je mogoče konfigurirati tako, da izbere kateregakoli od teh vhodov.

Izhod iz multiplekserja vodi v vhod registra. Vsak register je mogoče konfigurirati tako, da deluje kot z robom sproženo bistabilno vezje (vendar uporaba asinhrone logike v obliki zadrževalnikov v FPGA-jih ni priporočena). Vsak takt registra (ali omogočanje) je mogoče konfigurirati tako, da je aktivno visok ali aktivno nizek. Podobno je mogoče konfigurirati tudi aktivno stopnjo vhodov za nastavitev/ponovno nastavitev.

Te logične bloke si lahko predstavljamo kot »otoke programirljive logike«, ki plavajo v »morju programirljivega medsebojnega povezovanja«. Medsebojno povezovanje je mogoče konfigurirati tako, da se katerikoli izhod iz kateregakoli logičnega bloka poveže s katerimkoli vhodom drugega logičnega bloka. Podobno je primarne vhode v FPGA mogoče povezati z vhodi kateregakoli logičnega bloka, izhode iz kateregakoli logičnega bloka pa je mogoče uporabiti za usmeritev primarnih izhodov iz naprave.

Primarni splošni vhodi/izhodi (GPIO-ji) so predstavljeni v bankah (skupinah), pri čemer je vsako banko mogoče konfigurirati tako, da podpira drugačen vmesniški standard, kot so LVCMOS, LVDS, LVTTL, HSTL ali SSTL. Poleg tega je mogoče konfigurirati impedanco vhodov, kot tudi hitrost spremembe izhodov.
Naslednji korak v strukturi FPGA-ja vključuje stvari, kot so bloki SRAM-a, klican blok RAM-a (BRAM), fazno zaprte zanke (PLL-ji) in upravitelje takta (slika 1b). Dodati je mogoče tudi bloke za digitalno obdelavo signalov (DSP) (rezine DSP). Ti vsebujejo nastavljive množilnike in nastavljiv program za dodajanje, ki jim omogoča izvedbo operacij množenja in zbiranja (MAC) (slika 1c).
Druga običajna funkcija FPGA-ja, bloki SERDES visoke hitrosti, lahko podpira gigabitne serijske vmesnike. Pomembno je vedeti, da vsi FPGA-ji ne podpirajo vseh zgoraj omenjenih funkcij. Različni FPGA-ji ponujajo različne zbirke funkcij, ki so namenjene različnim trgom in področjem uporabe.

Programirljivo strukturo v FPGA-ju je mogoče uporabiti za ugnezdenje katerekoli želene logične funkcije ali zbirke funkcij, vse do procesorskega jedra ali celo več jeder. Če so ta jedra ugnezdena v programirljivo strukturo, se imenujejo »mehka jedra«. V primerjavi s tem nekateri FPGA-ji, skupno imenovani FPGA-ji SoC, vsebujejo enega ali več procesorjev s »trdim jedrom«, ki so ugnezdena neposredno v silicij (slika 1d). Ta trda procesorska jedra lahko vključujejo enote plavajoče vejice (FPU-ji) in predpomnilnik L1/L2.
Podobno je funkcije zunanjih vmesnikov, kot so CAN, I2C, SPI, UART in USB, mogoče v programirljivo strukturo ugnezditi kot mehka jedra, vendar jih številni FPGA-ji v silicij ugnezdijo kot trda jedra. Komunikacija med procesorskimi jedri, vmesniškimi funkcijami in programirljivo strukturo se običajno odvija prek vodil visoke hitrosti, kot sta AMBA in AXI.

Prvi FPGA-ji, ki jih je na trgu prvič predstavilo podjetje Xilinx leta 1985, so vsebovali samo matriko 8 x 8 programirljivih logičnih blokov (brez blokov RAM, blokov DSP itd.). V primerjavi s tem lahko današnji visoko zmogljivi FPGA-ji vsebujejo na stotine tisoč logičnih blokov, tisoče blokov DSP in megabite RAM-a. Skupno lahko vsebujejo milijarde tranzistorjev, kar pomeni več deset milijoni ustreznih vrat (npr. 2-vhodna vrata NAND).

Alternativne konfiguracijske tehnologije
Funkcije logičnih blokov in usmerjanje medsebojnega povezovanja se določi s konfiguriranjem celic, ki jih je mogoče vizualizirati s stikali 0/1 (izklopljeno/vklopljeno). Te celice se uporablja tudi za konfiguriranje vmesniškega standarda GPIO-jev, vhodne impedance, hitrosti spremembe izhoda itd. Odvisno od FPGA-ja je te konfiguracijske celice mogoče uvesti z eno od naslednjih treh tehnologij:
»Antifuse«: Te konfiguracijske celice so enkrat programirljive (OTP), kar pomeni, da tega ni mogoče razveljaviti, ko je naprava enkrat programirana. Te naprave so omejene glede na prostor in na uporabo za visoko varnost. Ker se prodajajo v majhnih količinah, je njihova cena visoka in predstavljajo drago možnost pri načrtovanju.
Flash: Podobno kot konfiguracijske celice na osnovi »antifuse«, so celice na osnovi Flash pomnilnika obstojne. Za razliko od celic »antifuse«, je Flash celice mogoče po potrebi reprogramirati. Flash konfiguracijske celice so odporne na sevanje, zaradi česar so te naprave primerne za uporabo v vesolju (vendar je treba prilagoditi njihove metalizacijske sloge in ohišja).
SRAM: V tem primeru so konfiguracijski podatki shranjeni v zunanjem pomnilniku, iz katerega se naložijo vsakič, ko se zažene FPGA (ali kot je ukazano v primeru dinamičnih konfiguracijski scenarijev).

Prednosti FPGA-jev, katerih konfiguacijske celice so »antifuse« ali Flash je, da se »vklopijo nemudoma« in da porabijo malo energije. Ena od slabosti teh tehnologij je, da poleg osnovnega procesa CMOS, ki se uporablja za ustvarjanje preostalega dela čipa, zahtevajo dodatne korake za obdelavo.
Prednost FPGA-jev, katerih konfiguracijske celice temeljijo na tehnologiji SRAM je, da so izdelane z istim CMOS procesom kot preostali del čipa in da zagotavljajo višjo zmogljivost, saj so običajno eno ali dve generaciji naprednejše od tehnologij »antifuse« in Flash pomnilnika. Glavne slabosti so, da konfiguracijske celice SRAM porabijo več energije kot celice »antifuse« in Flash celice (na istem tehnološkem vozlu) in so občutljive na posamezne sunke (SEU-ji), ki jih povzroča sevanje.

Dolgo časa je ta zadnja točka pomenila, da FPGA-ji, ki temeljijo na SRAM-u, niso primerni za letalsko in vesoljsko uporabo. Nedavno pa so bile uporabljene posebne strategije za ublažitev tega in je tako FPGA-je na osnovi SRAM-a skupaj z Flash FPGA-ji mogoče najti v sistemih kot je Mars Curisosity Rover.

Zakaj uporabiti programirljive matrike logičnih vrat?
FPGA-ji se uporabljajo na številnih raznolikih področjih uporabe. Še posebej so uporabni za uvedbo inteligentnih vmesniških funkcij, nadzor motorja, algoritmično pospeševanje in visoko zmogljivo računalništvo (HPC), obdelavo slik in videoposnetkov, strojni vid, umetno inteligenco (AI), strojno učenje (ML), globoko učenje (DL), radar, oblikovanje snopa bazne postaje in komunikacijo.

En preprost primer je zagotavljanje inteligentnega vmesnika med drugimi napravami, ki uporabljajo različne vmesniške standarde ali komunikacijske protokole. Predstavljajte si obstoječ sistem, ki vsebuje aplikacijski procesor, povezan s tipalom fotoaparata in prikazno napravo, ki uporablja podedovane vmesnike (slika 3a).

Zdaj pa predpostavite, da želijo ustvarjalci sistema nadgraditi tipalo fotoaparata in prikazno napravo z bolj sodobnima napravama, ki sta lažji, cenejši in porabita manj energije. Edina težava je, da ena ali obe zunanji napravi morda uporabljata sodoben vmesniški standard, ki ga prvotni aplikacijski procesor (AP) ne podpira. Ali pa podpirata popolnoma drug komunikacijski protokol, kot je MIPI (Mobile Industry Processor Interface). V tem primeru uporaba FPGA-ja in njegovih zmožnosti podpore različnim standardom I/O, skupaj z nekaj jedri MIPI IP, omogoča hitro nadgradnjo po nizki ceni in brez tveganja (slika 3b).

Kot drug primer uporabe si predstavljajte računsko intenzivno nalogo, kot je obdelava signalov, potrebna za uvedbo radarskega sistema, ali oblikovanje snopa v komunikacijski bazni postaji. Običajno procesorji z arhitekturami von Neumann ali Harvard so primerni za določene naloge, vendar so manj primerni za tiste naloge, ki zahtevajo večkratno izvajanje istega zaporedja operacij. To je zato, ker eno procesorsko jedro, ki izvaja samo eno nit, lahko na enkrat izvede eno navodilo (slika 4a).

V primerjavi s tem se lahko v FPGA-ju istočasno izvršuje več funkcij, kar omogoča, da po cevovodu potuje serija operacij, kar omogoča veliko večjo prepustnost. Temu podobno namesto izvajanja iste operacije, na primer 1000-krat v 1000 parih podatkovnih vrednosti s procesorjem, je v FPGA-ju mogoče iste izračune izvesti masivno vzporedno v enem samem taktu tako, da se ustvari 1000 programov za dodajanje v programirljivi strukturi (slika 4b).

Kdo izdeluje FPGA-je?
To je področje, ki se nenehno razvija. Dva proizvajalca resnično naprednih naprav z največjo kapaciteto in zmogljivostjo sta Intel (ki je prevzel Altero) in Xilinx.

Izdelki podjetij Intel in Xilinx obsegajo vse od nižje zmogljivih FPGA-jev do vrhunskih FPGA-jev SoC. Drugi ponudnik, ki se osredotoča skoraj izključno na FPGA-je, je Lattice Semiconductor, katerega ciljna področja uporabe spadajo v spodnji in srednji segment. Nenazadnje pa je tu še Microchip Technology (prek prevzema podjetij Actel, Atmel in Microsemi), ki zdaj obsega več družin majhnih in srednje velikih FPGA-jev in članov nižjega cenovnega razreda iz kategorije FPGA SoC.
Izbira najboljše naprave za dano nalogo je lahko zapletena, ker je toliko družin izdelkov, od katerih vsak ponuja drugačne vire, zmogljivost, kapacitete in pakiranje. Tukaj je nekaj primerov naprav podjetij Intel, Lattice Semiconductor in Xilinx.

Kako načrtovati z FPGA-ji?
Tradicionalni način načrtovanja s FPGA-ji je, da inženirji uporabijo jezik za opisa strojne opreme, kot je Verilog ali VHDL, da zajamejo namen načrta. Te opisi je najprej mogoče simulirati, da se preveri, ali delujejo kot se zahteva, nato pa se jih spusti skozi orodje za sintezo, ki ustvari konfiguracijsko datoteko za konfiguriranje (programiranje) FPGA-ja.
Vsak ponudnik FPGA-jev ima svojo interno razvito verigo orodij ali pa ponuja prilagojeno različico orodja specializiranega ponudnika. V obeh primerih so orodja dostopna na spletnih mestih ponudnika FPGA-jev, na voljo pa so lahko tudi brezplačne ali poceni različice celovitih zbirk orodij.

Da bi bili FPGA-ji bolj dostopni razvijalcem programske opreme, nekateri ponudniki FPGA-jev zdaj nudijo orodja za sintezo na visoki ravni (HLS). Ta orodja interpretirajo algoritmični opis želenega vedenja, ki je zajet na visoki ravni abstrakcije v jezikih C, C++ ali OpenCL, in ustvarijo vhodne podatke, ki se jih dovede v mehanizem za sintezo na nizki ravni.
Za načrtovalce, ki želijo začeti s FPGA-ji, je na voljo veliko razvojnih plošč, vsaka od katerih ponuja različne zmožnosti in funkcije. Trije primeri so razvojni komplet DFR0600 podjetja DFRobot, ki vsebuje Zynq-7000 SoC FPGA podjetja Xilinx,DE10 Nano podjetja Terasic Inc, ki vsebuje Cyclone V SoC FPGA podjetja Intel, in razvojna plošča ICE40HX1K-STICK-EVN, ki vsebuje iCE40 FPGA z nizko porabo podjetja Lattice Semiconductor.

Načrtovalci, ki nameravajo uporabiti hčerinsko PCIe kartico na osnovi FPGA-ja za pospešitev aplikacij, ki se izvajajo na matični plošči X86, lahko preverijo eno od hčerinskih kartic Alveo PCIe, ki jih prav tako ponuja podjetje Xilinx.

Zaključek
FPGA-ji pogosto zagotavljajo optimalne rešitve načrtovanja s kombinacijo procesorjev in FPGA-jev ali pa FPGA-je, katerih del so trdna procesorska jedra.

Ker je bil razvoj FPGA-jev v zadnjih letih hiter, lahko zdaj izpolnjujejo številne zahteve pri načrtovanju glede na prilagodljivost, hitrost obdelave in zmogljivost, zaradi česar so uporabni na številnih področjih uporabe.

www.digikey.com
Tags: