Efinix FPGA-k használata mesterséges intelligenciás és gépi tanulásos képalkotáshoz – 1. rész: Az első lépések

By Adam Taylor

Contributed By DigiKey's European Editors

A szerkesztő megjegyzése: Az újfajta FPGA-architektúrák finomabb vezérlést és nagyobb rugalmasságot kínálnak a gépi tanulás (ML, machine learning) és a mesterséges intelligencia (MI vagy az angol artificial intelligence kifejezésből alkotott betűszóval AI) támasztotta igények kielégítése terén. A kétrészes sorozat 1. része az Efinix egyik ilyen architektúráját mutatja be, és ismerteti, hogyan lehet fejlesztőkártya használatával nekikezdeni a fejlesztésnek. A 2. rész a fejlesztőkártya külső eszközökkel és perifériákkal, például kamerával való összekapcsolását tárgyalja.

Az FPGA-k (field programmable gate array, helyben programozható logikai kapumátrix) számos felhasználási területen kritikus szerepet játszanak, az ipari vezérléstől és biztonságtól kezdve a robotikán át a repülésig, az űrkutatásig és a gépjárműiparig. A programozható logikai magok rugalmas jellegének és sokféle csatlakozási lehetőségének köszönhetően az FPGA-k egyik egyre növekvő felhasználási területe a képfeldolgozás, ahol gépi tanulási következtetéseket kell használni. Az FPGA-k ideálisak olyan készülékek létrehozására, amelyek több nagy sebességű kameracsatlakozóval vannak ellátva. Az FPGA-k emellett lehetővé teszik célorientált feldolgozó futószalagok kialakítását is a logikán belül, kiküszöbölve ezzel a CPU- vagy GPU-alapú megoldásokhoz kapcsolódó szűk keresztmetszeteket.

Sok fejlesztő esetében azonban a tervezett készülékek több gépi tanulási vagy mesterséges intelligenciás funkciót és finomabb vezérlést vagy útválasztást és logikát igényelnek, mint amit a programozható logikai blokkokkal (CLB, configurable logic block) ellátott hagyományos FPGA-architektúrák kínálni tudnak. Az újabb FPGA-architektúrák kezelik ezeket a problémákat. Az Efinix Quantum architektúrája például egy XLR (eXchangeable Logic and Routing, cserélhető logika és útválasztás) blokkot használ.

Ez a cikk az Efinix FPGA-architektúrájának legfontosabb jellemzőit és tulajdonságait tárgyalja, kiemelve annak mesterséges intelligenciás és a gépi tanulási képességeit, és bemutatva néhány tényleges megvalósítást. Ezután egy olyan fejlesztőkártyát és az ahhoz kapcsolódó eszközöket ismertet, amelyekkel a fejlesztők gyorsan elkezdhetik a következő mesterséges intelligenciás vagy gépi tanulásos képalkotó készülék tervezését.

Efinix FPGA-eszközök

Az Efinix jelenleg két ilyen termékcsaládot kínál. Elsőként a Trion termékcsaládot mutatta be, amely 4000 és 120 ezer logikai elem (LE, logic element) közötti logikai sűrűséget kínál, és SMIC 40LL eljárással készül. A legújabb Titanium termékcsalád 35 000 és 1 millió logikai elem közötti logikai sűrűséggel készül, és a nagyon népszerű TSMC 16 nm-es csomópontra épül.

Mindkét termékcsalád a Quantum architektúrára épül, amely egyedülálló az FPGA-k világában. A szabványos FPGA-architektúrák programozható logikai blokkokon alapulnak, amelyek a legegyszerűbb szinten egy indextáblát (LUT) és bistabil billenőáramköröket tartalmaznak. A programozható logikai blokkokok logikai egyenleteket hajtanak végre, amelyeket aztán útválasztás révén kapcsolnak össze egymással. Az Efinix Quantum architektúrája az XLR blokk használatával eltávolodik a különálló logikai és útválasztó blokkoktól.

Az XLR blokkot az teszi egyedivé, hogy programozható úgy, hogy indextáblával ellátott logikai cellaként, regiszterként és összeadóegységként vagy útválasztó mátrixként működjön. Ez a megoldás finomabban szabályozható architektúrát kínál, amely rugalmasabb útválasztást tesz lehetővé, ez pedig módot ad arra, hogy olyan eszközöket lehessen létrehozni, amelyek nagy logikai terheléssel vagy sok útválasztási feladattal érik el a kívánt teljesítményt.

Az XLR cellablokk felépítését szemléltető rajz1. ábra: Az XLR blokkot az teszi egyedivé, hogy programozható úgy, hogy indextáblával ellátott logikai cellaként, regiszterként és összeadóegységként vagy útválasztó mátrixként működjön (kép: Efinix)

Legújabb termékcsaládként a Titanium eszközök kínálják a legfejlettebb funkciókat a fejlesztők számára (2. ábra). Az XLR maggal együtt több gigabit/másodperc (Gb/s) átviteli sebességű soros kapcsolatokat tesznek lehetővé, amelyek a választott eszköztől függően 16 Gb/s vagy 25,8 Gb/s átviteli sebességgel működnek. Ezek a több Gb/s-es kapcsolatok elengedhetetlenek a lapkán belüli és kívüli nagy sebességű adatátvitel lehetővé tételéhez.

Kép: a Titanium FPGA Ti180 eszköznek számos változata létezik2. ábra: A Titanium FPGA Ti180 többféle változatban kapható a sínszélesség, a szükséges be- és kimenetek és a memóriaigény függvényében (kép: Efinix)

A Titanium eszközök a be- és kimeneti (I/O) csatlakozók széles skáláját kínálják, amelyek általános célú I/O (GPIO) csoportba sorolhatók, és képesek támogatni a közös földpontú (single ended) be- és kimeneti szabványokat, például a 3,3 V-os, 2,5 V-os és 1,8 V-os kisfeszültségű CMOS-okat (LVCMOS, low-voltage CMOS).

A nagy sebességű és különbségi jelátvitelhez a Titanium eszközök nagy sebességű be- és kimenetet (HSIO, high-speed I/O) kínálnak, amely támogatja az olyan közös földpontú be- és kimeneti szabványokat, mint az 1,2 V-os és 1,5 V-os LVCMOS, valamint az SSTL és a HSTL. A nagy sebességű be- és kimenet által támogatott különbségi be- és kimeneti szabványok közé tartozik a kisfeszültségű különbségi jelátvitel (LVDS, low-voltage differential signaling), valamint a különbségi SSTL és a HSTL.

A korszerű FPGA-khoz szorosan csatolt nagy sávszélességű memóriára is szükség van, amely a képfeldolgozó alkalmazások képkockáinak és a jelfeldolgozáshoz szükséges mintaadatoknak a tárolására és természetesen az FPGA-ban kialakított processzorok operációs rendszereinek és szoftverének futtatására szolgál. A Titanium eszközcsalád lehetővé teszi a DDR4 (double data rate 4, kétszeres adatelérési sebességű, 4. generációs) és az LPDDR4(x) (kis fogyasztású DDR4(x), low-power DDR4(x)) memória használatát. A választott Titanium eszköztől függően a támogatott sínszélesség x32 (J) vagy x16 (M), míg egyes eszközök nem támogatják az LPDDR4-et (L).

A Titanium FPGA-k SRAM-alapúak, és beállítási memóriát igényelnek, az eszköz beállítása pedig vagy a gazda/szolga soros perifériás illesztőfelület (master/slave Serial Peripheral Interconnect, SPI), vagy a JTAG segítségével történik. A beállítási módszer biztonságának megteremtése érdekében a Titanium FPGA AES GCM titkosítással titkosítja a bitfolyamot, valamint AES GCM és RSA-4096 titkosítást használ a bitfolyam hitelesítésére. Ehhez hasonló erős biztonságra van szükség, mert az FPGA-kat helyi eszközökben (más néven peremeszközökben) használják, ahol a rosszindulatú szereplők hozzájuk férhetnek, és károsan befolyásolhatják a viselkedésüket.

A fejlesztőkártya ismertetése

A fejlesztőkártyák az FPGA-k értékelési folyamatának fontos elemét képezik, mert az eszköz és a felhasználásával készült készülékprototípusok képességeinek feltárására használhatók, segítve ezzel az általános kockázat csökkentését. A Titanium FPGA-k kiértékeléséhez és a prototípusok elkészítéséhez rendelkezésre álló első fejlesztőkártya a Ti180 M484 (3. ábra). A kártyán egy FPGA Mezzanine Card (FMC) csatlakozó és négy Samtec QSE csatlakozó található.

Az Efinix Ti180 M484 fejlesztőkészlet képe3. ábra: A Titanium FPGA-t tartalmazó Ti180 M484 fejlesztőkészlet egy FMC csatlakozóval és négy Samtec QSE csatlakozóval van felszerelve (kép: Adam Taylor)

A fejlesztőkártyára szerelt Ti180 FPGA 172 ezer XLR cellát, 32 globális órajelet, 640 digitális jelfeldolgozó (DSP) elemet és 13 MB beágyazott RAM-ot kínál. A digitális jelfeldolgozó elemek fixpontos 18 × 19 bites szorzások és 48 bites szorzások végrehajtását teszik lehetővé. Ez a digitális jelfeldolgozó optimalizálható két- vagy négycsatornásként futó egyutasításos, többadatos (SIMD, single instruction, multiple data) műveletekre is. A digitális jelfeldolgozó elemek beállíthatók lebegőpontos műveletek végzésére is.

Mint a legtöbb fejlesztőkártyán, a Ti180-on is vannak egyszerű LED-ek és gombok. Az igazi ereje azonban a csatlakozási képességeiben rejlik. A Ti180 fejlesztőkártya egy kis érintkezőszámú FMC csatlakozóval van felszerelve, amely perifériák széles körének csatlakoztatását teszi lehetővé. Mivel ez egy széles körben használt szabvány, sokféle FMC-kártya létezik, amelyek nagy sebességű analóg-digitális átalakítók (ADC), digitális-analóg átalakítók (DAC), hálózatok, valamint memóriák és tárolók csatlakoztatására adnak lehetőséget.

A kártya az FMC csatlakozón kívül négy Samtec QSE csatlakozót is tartalmaz, amelyek segítségével a fejlesztők bővítőkártyákat adhatnak az fejlesztőkártyához. Ezek a QSE csatlakozók MIPI (Mobile Industry Processor Interface, mobil ipari feldolgozási csatlakozó) be- és kimenetekként szolgálnak, mindegyik QSE csatlakozó egy MIPI be- vagy kimenet kínál.

Az Efinix Ti180 M484 fejlesztőkészlet képe4. ábra: A képen a Ti180 M484 fejlesztőkészlet látható a QSE és FMC csatlakozókon alapuló sokoldalú bővítési lehetőségekkel (kép: Adam Taylor)

A Ti180 kártya 256 MB LPDDR4 memóriát is tartalmaz, ezzel támogatva a nagy teljesítményű memóriát igénylő kép- vagy jelfeldolgozó alkalmazásokat. Ezenkívül a fejlesztőkártya többféle – 25, 33,33, 50 és 74,25 MHz-es – órajelet is szolgáltat, amelyek az eszköz fáziszárt hurkával (PLL, phase locked loop) különböző belső frekvenciák létrehozására használhatók.

A fejlesztés során rendkívül fontos, hogy a kártyán élőben lehessen újraprogramozást és hibakeresést végezni, amihez JTAG-kapcsolatra van szükség, ezt a kártya USB-C csatlakozóján keresztül lehet megvalósítani. Található a kártyán két 256 MB-os nem felejtő, NOR típusú flashmemória is, amelyek a beállítási megoldás szemléltetésére használhatóak.

A kártya áramellátása egy 12 V-os univerzális hálózati adapterről történik, amely szintén megtalálható a kártya dobozában. A készlet részét képezi még egy FMC–QSE külső átalakító csatlakozódoboz, valamint QSE-alapú, HDMI-, Ethernet-, MIPI- és LVDS-csatlakozójú bővítőkártyák is. A Ti180 képfeldolgozási képességeinek bemutatására egy kétcsatornás Raspberry Pi (RPI) kiegészítőkártya és két IMX477 kamerakártya is található a készletben.

A szoftverkörnyezet

A Ti180 fejlesztőkártyára épülő tervek megvalósításához használhatja az Efinix cég Efinity szoftverét. A szoftver lehetővé teszi bitfolyam előállítását szintézis, valamint az alkatrész-elhelyezés és vezetőcsík-vonalvezetés megtervezése segítségével. Emellett kínál még a fejlesztők számára szellemitulajdon-blokkokat, időzítéselemzést és lapkán belüli hibakeresést is.

Vegye figyelembe, hogy az Efinity szoftverhez való hozzáféréshez fejlesztőkártya szükséges. Más gyártókkal ellentétben azonban ennek a szoftvereszköznek nincsenek különböző verziói, amelyek további licenceket igényelnének.

Az Efinity szoftveren belül új projekteket lehet létrehozni a választott eszközhöz. Az RTL (regiszterátviteli szintű, register-transfer level) fájlok ezután hozzáadhatók a projekthez, és létrehozhatók az időzítéshez és a be- és kimenetek tervezéséhez szükséges korlátozások. A fejlesztők elvégezhetik az Efinityn belül a be- és kimenetek tervezését is, felhasználva a HSIO-t, a GPIO-t és a speciális a be- és kimeneti eszközöket.

Kép: az Efinity szoftveren belül új projekteket lehet létrehozni a választott eszközhöz5. ábra: Az Efinity szoftveren belül új projekteket lehet létrehozni a választott eszközhöz (kép: Adam Taylor)

Az FPGA-tervezés kritikus eleme a szellemi tulajdon felhasználása, különösen az olyan összetett szellemi tulajdonok esetében, mint az AXI-összeköttetések, a memóriavezérlők és a szoftveresen kialakított (softcore) processzorok. Az Efinity számos szellemitulajdon-blokkot bocsát a fejlesztők rendelkezésére, amelyekkel felgyorsítható a tervezési folyamat.

Kép: az Efinity szellemitulajdon-katalógust bocsát a fejlesztők rendelkezésére6. ábra: Az Efinity egy szellemitulajdon-katalógust bocsát a fejlesztők rendelkezésére, amelyet felhasználhatnak a tervezési folyamat felgyorsítására (kép: Adam Taylor)

Bár az FPGA-k kiválóan alkalmasak párhuzamos feldolgozási struktúrák létrehozására, sok FPGA tartalmaz szoftveresen kialakított (softcore) processzorokat. Ezek lehetővé teszik a sorrendi feldolgozás, például a hálózati kommunikáció megvalósítását. A szoftveresen kialakított processzorok Efinix eszközökbe való beépítésének lehetővé tételéhez az Efinity a Sapphire egylapkás rendszerként (SoC, system on a chip) megvalósított beállítóeszközt kínálja. A Sapphire lehetővé teszi a fejlesztők számára, hogy olyan többprocesszoros rendszert definiáljanak, amelyekre egyaránt jellemzőek a több processzorhoz tartozó gyorsítótárak és az egységes gyorsítótár-tartalom (más néven gyorsítótár-koherencia), valamint képesek valamilyen beágyazott Linux operációs rendszer futtatására is. A Sapphire-on belül a fejlesztő egy–négy szoftveresen kialakított processzor közül választhat.

Az így megvalósított softcore processzor a VexRiscV szoftveresen kialakított processzor (soft CPU), amely a RISC-V utasításkészletre épülő architektúrán alapul. A VexRiscV processzor egy 32 bites processzormegvalósítás, amely futószalag-bővítményekkel rendelkezik, és beállítható funkciókészletet kínál, így ideális az Efinix eszközökben történő megvalósításhoz. A választható beállítások közé tartozik a szorzó, az atomi utasítások, a lebegőpontos kiterjesztések és a tömörített utasítások. A teljesítmény az egylapkás rendszer beállításaitól függően 0,86 és 1,05 DMIPS/MHz között mozog.

Miután a hardverkörnyezetet megtervezték, majd megvalósították az Efinix eszközben, az Ashling RiscFree IDE (integrated development environment, beépített fejlesztőkörnyezet) segítségével fejleszthető az alkalmazásszoftver. Az Ashling RiscFree egy Eclipse-alapú IDE, amely alkalmazásszoftverek létrehozására és fordítására, valamint az alkalmazás telepítés előtti finomhangolása érdekében a célponton történő hibakeresésre ad lehetőséget.

Kép: az Ashling RiscFree egy Eclipse-alapú IDE7. ábra: Az Ashling RiscFree egy Eclipse-alapú IDE, amely alkalmazásszoftverek létrehozására és fordítására, valamint a célponton történő hibakeresésére ad lehetőséget (kép: Adam Taylor)

Beágyazott linuxos megoldás fejlesztése esetén rendelkezésre áll az összes szükséges rendszerindítási eszköz, köztük a First Stage Boot Loader (első fokozatú rendszerbetöltő), az OpenSBI, az U-Boot és a Linux rendszerépítő (buildroot). Ha valós idejű megoldásra van szükség, a fejlesztő alternatívaként használhatja a FreeRTOS operációs rendszert.

A mesterséges intelligencia megvalósítása

A mesterséges intelligencia Efinix-féle megvalósítása a szoftveresen kialakított RISC-V processzor működésére épül. Ez a megvalósítás kihasználja a RISC-V processzor egyedi utasításokkal való vezérlésének képességét, hogy lehetővé tegye a TensorFlow Lite-megoldások gyorsítását. A RISC-V processzor használata módot ad arra is, hogy a felhasználók olyan egyedi utasításokat hozzanak létre, amelyek a mesterséges intelligenciás következtetést követő elő- vagy utófeldolgozás részeként használhatók, és ezáltal egy érzékenyebb és determinisztikusabb megoldást hoznak létre.

A mesterséges intelligencia megvalósításának megkezdéséhez az első lépés az Efinix-állatkertmakett (model zoo) megismerése, amely az Efinis saját felhasználói technikájára optimalizált mesterséges intelligenciás és gépi tanulási modellek könyvtára. Az Efinix eszközökkel dolgozó fejlesztők számára elérhető az állatkertmakett, és a hálózatot a Jupyter Notebooks vagy a Google Colab segítségével lehet betanítani. A hálózat a betanítása után a TensorFlow Lite konverter segítségével lebegőpontos modellből kvantált modellé alakítható.

A TensorFlow Lite formátumba való átalakítás után az Efinix tinyML gyorsítója használható a szoftveresen kialakított RISC-V processzorra telepíthető megoldás létrehozásához. A tinyML generátor lehetővé teszi a fejlesztő számára, hogy testreszabja a gyorsító megvalósított változatát, és létrehozza a projektfájlokat. Így telepítve a gyorsulás a kiválasztott architektúrától és testreszabástól függően 4-szeres és 200-szoros közötti lehet.

Összegzés

Az Efinix eszközök egyedi XLR-architektúrájuknak köszönhetően rugalmasságot kínálnak a fejlesztőknek. Az eszközkészlet nem csak regiszterátviteli szintű (RTL, register-transfer level) tervek megvalósítására, hanem szoftveresen kialakított RISC-V processzorokat használó összetett egylapkás rendszerek megvalósítására is alkalmas. A szoftveresen kialakított egylapkás rendszerre egy mesterséges intelligenciás és gépi tanulásos megoldás épül, amely lehetővé teszi a gépi tanulásos következtetések használatát.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Adam Taylor

Adam Taylor

Adam Taylor is a world-recognized expert in the design and development of embedded systems and FPGAs for several end applications. Throughout his career, Adam has used FPGAs to implement a wide variety of solutions, from RADAR to safety critical control systems (SIL4) and satellite systems. He also had interesting stops in image processing and cryptography along the way.

Adam is a Chartered Engineer, Senior Member of the IEEE, Fellow of the Institute of Engineering and Technology, Arm Innovator, and Edge Impulse Ambassador. He is also the owner of the engineering and consultancy company Adiuvo Engineering and Training which develops embedded solutions for high-reliability, mission-critical, and space applications. Current projects include ESA Plato, Lunar Gateway, Generic Space Imager, UKSA TreeView, and several other clients across the world.

FPGAs are Adam’s first love: he is the author of numerous articles and papers on electronic design and FPGA design, including over 440 blogs and 30 million plus views on how to use the Zynq and Zynq MPSoC for Xilinx.

About this publisher

DigiKey's European Editors