Klik hier voor de Engelse versie van de broncode.

Waarom en hoe Efinix FPGA's gebruiken voor AI/ML-beeldvorming Deel 2: Beeldopname en -verwerking

Door Adam Taylor

Bijgedragen door De Europese redacteurs van DigiKey

Noot van de redactie: Nieuwe benaderingen van FPGA-architecturen zorgen voor een fijnmaziger controle en meer flexibiliteit om tegemoet te komen aan de behoeften van machine learning (ML) en kunstmatige intelligentie (AI). Deel 1 van deze tweedelige serie introduceert een dergelijke architectuur van Efinix en hoe ermee aan de slag te gaan met behulp van een ontwikkelbord. In deel 2 wordt ingegaan op de koppeling van het ontwikkelingsbord met externe apparaten en randapparatuur, zoals een camera, en hoe de FPGA kan worden gebruikt om knelpunten in de beeldverwerking weg te nemen.

FPGA's spelen een cruciale rol in vele toepassingen, van industriële besturing en veiligheid tot robotica, ruimtevaart en automobielindustrie. Dankzij het flexibele karakter van de programmeerbare logicakern en hun brede interfacemogelijkheden is een groeiend gebruik van FPGA's in de beeldverwerking, waar machine learning (ML) kan worden toegepast. Dankzij hun parallelle logische structuur zijn FPGA's ideaal voor de implementatie van oplossingen met meerdere snelle camera-interfaces. Bovendien maken FPGA's ook het gebruik van een specifieke verwerkingspijplijn in de logica mogelijk, waardoor knelpunten met gedeelde middelen, zoals bij CPU- of GPU-gebaseerde oplossingen, worden weggenomen.

In deze tweede blik op de Titanium FPGA's van Efinix wordt de referentie-beeldverwerkingsapplicatie onderzocht die wordt geleverd met de Ti180 M484-ontwikkelingskaart van de FPGA. Het doel is de samenstellende delen van het ontwerp te begrijpen en na te gaan waar de FPGA-technologie het mogelijk maakt knelpunten op te heffen of andere voordelen voor de ontwikkelaars mogelijk maakt.

Het op Ti180 M484 gebaseerde referentieontwerp

Conceptueel gezien ontvangt het referentieontwerp (figuur 1) beelden van verschillende Mobile Industry Processor Interface (MIPI) camera's, voert frame-buffering uit in de LPDDR4x, en voert vervolgens de beelden uit naar een High Definition Multimedia Interface (HDMI) display. Een FPGA Mezzanine Card (FMC) en vier Samtec QSE-interfaces op het bord worden gebruikt om de camera-ingangen en de HDMI-uitgang te leveren.

Afbeelding van Efinix Ti180 M484-referentieontwerpAfbeelding 1: Conceptueel ontvangt het Ti180 M484-referentieontwerp beelden van verschillende MIPI-camera's, voert framebuffering uit in de LPDDR4x, en voert vervolgens de beelden uit naar een HDMI-scherm. >(Bron afbeelding: Efinix)

De FMC naar QSE-uitbreidingskaart wordt gebruikt in combinatie met de HDMI-dochterkaart om het uitgaande videopad te leveren, terwijl drie QSE-connectoren worden gebruikt voor de interface met de DFRobot SEN0494 MIPI-camera's. Als er geen meerdere MIPI-camera's beschikbaar zijn, kan één camera worden gebruikt door het kanaal van de enkele camera terug te lussen om extra camera's te simuleren.

Op een hoog niveau lijkt deze toepassing eenvoudig. Het ontvangen van meerdere high-definition (HD) MIPI-streams met een hoge beeldsnelheid is echter een uitdaging. Dit is waar FPGA-technologie voordelig is, omdat ontwerpers hiermee meerdere MIPI-streams parallel kunnen gebruiken.

De architectuur van het referentieontwerp maakt gebruik van zowel parallelle als sequentiële verwerkingsstructuren met de FPGA. De parallelle structuren worden gebruikt voor de uitvoering van de beeldverwerkingspijplijn, terwijl een RISC-V-processor zorgt voor de sequentiële verwerking die wordt gebruikt voor de FPGA-look-up tables (LUTs).

De beeldverwerkingspijplijn kan in veel op FPGA gebaseerde beeldverwerkingssystemen worden opgesplitst in twee elementen, namelijk de input- en outputstreams. De inputstream wordt verbonden met de camera/sensor-interface, en verwerkingsfuncties worden toegepast op de uitvoer van de sensor. Deze functies kunnen bestaan uit Bayer-conversie, automatische witbalans en andere verbeteringen. In de outputstream wordt het beeld voorbereid voor weergave. Dit omvat het wijzigen van kleurruimten (bijv. RGB naar YUV) en nabewerking voor het gewenste uitvoerformaat, zoals HDMI.

Vaak werkt de beeldverwerkingsketen aan de pixelkloksnelheid van de sensor. Deze heeft een andere timing dan de uitgangsketen, die wordt verwerkt op de frequentie van de uitgangsweergave.

Een framebuffer wordt gebruikt om de invoer te verbinden met de uitvoerverwerkingspijplijn, die vaak wordt opgeslagen in extern krachtig geheugen, zoals LPDDR4x. Deze framebuffer is ontkoppeld tussen de invoer- en uitvoerleidingen, zodat toegang tot de framebuffer mogelijk is via directe geheugentoegang op de juiste klokfrequentie.

Het Ti180-referentieontwerp gebruikt een soortgelijke aanpak als de hierboven geschetste concepten. De invoerbeeldverwerkingspijplijn implementeert een MIPI Camera Serial Interface 2 (CSI-2) ontvanger intellectuele eigendom (IP) kern, die is gebouwd op de MIPI fysieke laag (MIPI D-PHY)-capabele input/output (I/O) van de Titanium FPGA. MIPI is een uitdagende interface omdat deze zowel single-ended als differentiële signalering op hetzelfde differentiële paar gebruikt, naast communicatie op lage snelheid en op hoge snelheid. De integratie van de MIPI D-PHY in de FPGA I/O vermindert de complexiteit van het ontwerp van de circuitkaart en vermindert tevens de stuklijst (BOM).

Met de imagestream van de camera ontvangen, zet het referentieontwerp vervolgens de uitvoer van de MIPI CSI-2 RX om in een Advanced eXtensible Interface (AXI) Stream. Een AXI Stream is een unidirectionele snelle interface die een gegevensstream van een master naar een slave levert. Er zijn handshakingssignalen voor de overdracht tussen een master en slave (tvalid en tready) en sidebandsignalen. Deze zijbandsignalen kunnen worden gebruikt om beeldtijdinformatie over te brengen, zoals het begin van het frame en het einde van de regel.

AXI Stream is ideaal voor beeldverwerkingstoepassingen en stelt Efinix in staat een reeks beeldverwerkings-IP te leveren die vervolgens eenvoudig in de verwerkingsketen kan worden geïntegreerd zoals vereist door de toepassing.

Na ontvangst worden de MIPI CSI-2 beeldgegevens en timingsignalen omgezet in een AXI Stream en ingevoerd in een DMA-module (Direct Memory Access), die het beeldkader naar de LPDDR4x schrijft en als kaderbuffer fungeert.

Deze DMA-module werkt onder controle van de RISC-V-kern in de FPGA binnen een Sapphire-systeem op chip (SoC). Deze SoC biedt controle, zoals het stoppen en starten van DMA-schrijvingen, naast het voorzien van het DMA-schrijfkanaal van de nodige informatie om de beeldgegevens correct naar de LPDDR4x te schrijven. Dit omvat informatie over de geheugenplaats en de breedte en hoogte van de afbeelding, gedefinieerd in bytes.

Het uitgangskanaal in het referentieontwerp leest de beeldinformatie uit de LPDDR4x-framebuffer onder besturing van de RISC-V SoC. De gegevens worden door de DMA IP uitgevoerd als een AXI Stream, die vervolgens van het RAW-formaat van de sensor wordt omgezet in RGB-formaat (Afbeelding 2), en voorbereid voor uitvoer via de ingebouwde HDMI-zender ADV7511 van Analog Devices.

Afbeelding van voorbeeldafbeeldingen uit het referentieontwerpAfbeelding 2: Voorbeeldbeelden van het referentieontwerp. (Bron afbeelding: Adam Taylor)

Door het gebruik van de DMA heeft de Sapphire SoC RISC-V ook toegang tot de beelden die in de framebuffer zijn opgeslagen, en tot de abstracte statistieken en beeldinformatie. De Sapphire SoC kan ook overlays schrijven in de LPDDR4x, zodat deze kunnen worden samengevoegd met de uitgaande videostream.

Moderne CMOS-beeldsensoren (CIS's) hebben verschillende werkingsmodi en kunnen worden geconfigureerd voor verwerking op de chip en verschillende uitvoerformaten en klokschema's. Deze configuratie geschiedt normaliter via een I²C-interface. In het Efinix-referentieontwerp wordt deze I²C-communicatie naar de MIPI-camera's verzorgd door de Sapphire SoC RISC-V-processor.

De integratie van de RISC-V-processor in de Titanium FPGA vermindert de totale omvang van de uiteindelijke oplossing, omdat er geen complexe FPGA-statusmachines meer nodig zijn die het ontwerprisico vergroten, en ook geen externe processoren die de BOM verhogen.

De opname van de processor maakt ook ondersteuning mogelijk met extra IP om te communiceren met de MicroSD-kaart. Dit maakt toepassingen in de praktijk mogelijk waarbij beelden moeten worden opgeslagen voor latere analyse.

Over het geheel genomen is de architectuur van het Ti180-referentieontwerp geoptimaliseerd om een compacte, goedkope, maar krachtige oplossing mogelijk te maken waarmee ontwikkelaars de BOM-kosten kunnen verlagen door middel van systeemintegratie.

Een van de belangrijkste voordelen van referentieontwerpen is dat zij kunnen worden gebruikt om de ontwikkeling van toepassingen op aangepaste hardware op gang te brengen, zodat ontwikkelaars kritieke elementen van het ontwerp kunnen overnemen en daarop kunnen voortbouwen met hun noodzakelijke aanpassingen. Dit omvat de mogelijkheid om Efinix' TinyML flow te gebruiken om vision-gebaseerde TinyML-toepassingen te implementeren die op de FPGA draaien. Dit kan zowel het parallelle karakter van FPGA-logica benutten als de mogelijkheid om gemakkelijk aangepaste instructies toe te voegen aan RISC-V-processors, waardoor binnen de FPGA-logica versnellers kunnen worden gecreëerd.

Uitvoering

Zoals besproken in deel 1, is de Efinix-architectuur uniek omdat zij gebruik maakt van eXchangeable Logic and Routing-cellen (XLR) om zowel routing- als logicafuncties te bieden. Een videosysteem zoals het referentieontwerp is een gemengd systeem dat zowel logica als routing omvat: er is uitgebreide logica nodig om de beeldverwerkingsfuncties te implementeren, en uitgebreide routing om de IP-cellen op de vereiste frequenties met elkaar te verbinden.

Het referentieontwerp gebruikt ongeveer 42% van de XLR-cellen in het apparaat, zodat er voldoende ruimte overblijft voor toevoegingen, waaronder aangepaste toepassingen zoals edge ML.

Het gebruik van het blok RAM en de digitale signaalverwerkingsblokken (DSP) is ook zeer efficiënt, met een gebruik van slechts 4 van de 640 DSP-blokken en 40% van de geheugenblokken (Afbeelding 3).

Kernmiddelen
Invoeren 1264 / 3706
Uitgangen 1725 / 4655
XLR's 73587 / 172800
Geheugenblokken 508 / 1280
DSP-blokken 4 / 640

Afbeelding 3: Uit de toewijzing van middelen op de Efinix-architectuur blijkt dat slechts 42% van de XLR-cellen wordt gebruikt, zodat er voldoende ruimte overblijft voor extra processen. (Bron afbeelding: Adam Taylor)

Op de apparaat-IO wordt de DDR-interface voor de LPDDR4x gebruikt om het applicatiegeheugen voor de Sapphire SoC en de beeldframebuffers te leveren. Alle apparaatgebonden MIPI-bronnen worden gebruikt, samen met 50% van de faselocklussen (Afbeelding 4).

Perifere bron
DDR 1 / 1
GPIO 22 / 27
HSIO 20.0 / 59
JTAG-gebruiker TAP 1 / 4
MIPI RX 4 / 4
MIPI TX 4 / 4
Oscillator 0 / 1
PLL 4 / 8

Afbeelding 4: Momentopname van de gebruikte interface en I/O-bronnen. (Bron afbeelding: Adam Taylor)

De general purpose I/O (GPIO) wordt gebruikt voor de I²C-communicatie, samen met verschillende interfaces die op de Sapphire SoC zijn aangesloten, waaronder NOR FLASH, USB UART en SD-kaart. De HSIO wordt gebruikt om de high-speed video-uitgang te leveren aan de ADC7511 HDMI-zender.

Een van de cruciale elementen bij het ontwerpen met FPGA's is niet alleen het implementeren en inpassen van het ontwerp in de FPGA, maar ook het kunnen plaatsen van het logische ontwerp in de FPGA en het bereiken van de vereiste timingprestaties bij het routeren.

De dagen van single-clock-domain FPGA-ontwerpen zijn al lang voorbij. Er zijn verschillende klokken, die allemaal op hoge frequenties draaien in het Ti180-referentieontwerp. De uiteindelijke timingtabel toont de maximale frequenties die voor de klokken in het systeem zijn bereikt. De gevraagde timingprestaties zijn ook te zien in de beperkingen (Afbeelding 5), die een maximale klokfrequentie van 148,5 megahertz (MHz) voor de HDMI-uitgangsklok hebben.

Afbeelding van klokbeperkingen voor het referentieontwerpAfbeelding 5: Klokbeperkingen voor het referentieontwerp. (Bron afbeelding: Adam Taylor)

De implementatie van de timing tegen de achtergrond van de beperkingen toont het potentieel van de XLR-structuur van de Titanium FPGA, aangezien deze de mogelijke routeringsvertraging vermindert, waardoor de prestaties van het ontwerp toenemen (Afbeelding 6).

Timing
Worst Negative Slack (WNS) 0,182 ns
Worst Hold Slack (WHS) 0,026 ns
i_pixel_clk 211,909 MHz
tx_escclk 261,370 MHz
i_pixel_clk_tx 210,881 MHz
i_sys_clk 755,858 MHz
i_axi0_mem_clk 130,429 MHz
i_sys_clk_25mhz 234,577 MHz
i_soc_clk 187,231 MHz
i_hdmi_clk 233,918 MHz
mipi_dphy_rx_inst1_WORD_CLKOUT_HS 273,973 MHz
mipi_dphy_rx_inst2_WORD_CLKOUT_HS 262,881 MHz
mipi_dphy_rx_inst3_WORD_CLKOUT_HS 204,290 MHz
mipi_dphy_rx_inst4_WORD_CLKOUT_HS 207,598 MHz
mipi_dphy_tx_inst1_SLOWCLK 201,979 MHz
mipi_dphy_tx_inst2_SLOWCLK 191,865 MHz
mipi_dphy_tx_inst3_SLOWCLK 165,235 MHz
mipi_dphy_tx_inst4_SLOWCLK 160,823 MHz
jtag_inst1_TCK 180,505 MHz

Afbeelding 6: Timingimplementatie afgezet tegen de beperkingen toont het potentieel van de Titanium FPGA XLR-structuur om de mogelijke routeringsvertraging te beperken, waardoor de ontwerpprestaties toenemen. (Bron afbeelding: Adam Taylor)

Conclusie

Het Ti180 M484-referentieontwerp toont duidelijk de mogelijkheden van Efinix FPGA's en de Ti180 in het bijzonder. Het ontwerp maakt gebruik van verschillende van de unieke I/O-structuren om een complex beeldverwerkingspad te implementeren dat verschillende inkomende MIPI-streams ondersteunt. Dit beeldverwerkingssysteem werkt onder controle van een soft-core Sapphire SoC, die de noodzakelijke sequentiële verwerkingselementen van de toepassing implementeert.

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.

Achtergrondinformatie over deze auteur

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.

Over deze uitgever

De Europese redacteurs van DigiKey