• No results found

Performance analyse van een run-time reconfigurable processor met het gebruik van partial reconfiguration in een FPGA

N/A
N/A
Protected

Academic year: 2021

Share "Performance analyse van een run-time reconfigurable processor met het gebruik van partial reconfiguration in een FPGA"

Copied!
33
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Bachelor Informatica

Performance analyse van een

run-time reconfigurable

proces-sor met het gebruik van

par-tial reconfiguration in een FPGA

Sebastiaan van Moergestel

15 juni 2020

Supervisor(s): drs. Taco Walstra

Inf

orma

tica

Universiteit

v

an

Ams

terd

am

(2)
(3)

Samenvatting

Field-programmable gate arrays (FPGAs) worden steeds vaker gebruikt als hardware component. Het is dan belangrijk dat er onderzoek gedaan wordt om de performance van FPGAs te verbeteren. Partial reconfiguration (PR) is een methode die zorgt dat een FPGA

design effici¨ent aangepast kan worden in run-time. Er wordt geanalyseerd hoe partial

re-configuration de performance van FPGAs verandert. Met Vivado kunnen eenvoudig FPGA designs gemaakt worden zonder voorkennis van hardware programming. Hiermee zijn FPGA designs gemaakt waarbij de designs met PR en zonder PR hetzelfde resultaat geven. De designs zonder PR worden vergeleken met de designs met PR. Met de PYNQ-Z1 FPGA development board worden deze designs geladen met PYNQ. Als resultaat blijkt dat partial reconfiguration een verbetering in de performance geeft in designs waarbij veel reconfgu-rable modules gebruikt worden. Wel kosten meer reconfigureconfgu-rable modules meer hardware

recourses, zoals LUTs en FLOP-LATCHs. Het gebruik van PR is ook effici¨enter op designs

met grafische filters, aangezien 1 overlay meerdere filters kan beschikken. Door PR worden FPGA designs dus flexibeler, aangezien in run-time bepaalde functies aangepast kunnen worden.

(4)
(5)

Inhoudsopgave

1 Introductie 7 1.1 Onderzoeksvragen . . . 8 1.2 Thesis structuur . . . 8 2 Theoretische achtergrond 9 2.1 FPGAs . . . 9 2.1.1 Vivado . . . 10 2.2 ZYNQ board . . . 10 2.2.1 PYNQ . . . 11 2.3 Partial Reconfiguration . . . 11 2.4 Edge detection . . . 12 2.5 Gerelateerde Onderzoeken . . . 13 3 Implementatie 15 3.1 Vivado design suite . . . 15

3.1.1 ’Hello World’ . . . 15

3.1.2 Werken met PYNQ . . . 15

3.1.3 Werken met Partial Reconfiguration . . . 16

3.2 Design . . . 17

3.2.1 Video design . . . 18

3.2.2 Grafische filters in Vivado HLS . . . 21

3.2.3 Grafische filters en Partial Reconfiguration . . . 21

3.2.4 Vergelijking met designs van andere onderzoeken . . . 22

4 Experimenten 23 5 Resultaten 25 5.0.1 LEDs . . . 25 5.0.2 Grafische filters . . . 27 6 Discussie 31 6.1 Conclusie . . . 31 6.2 Ethiek . . . 31 6.3 Toekomstige onderzoeken . . . 32

(6)
(7)

HOOFDSTUK 1

Introductie

In de hardware architectuur is de processor, vaak een central unit processor (CPU), een van de belangrijkste onderdelen. De processor voert immers de belangrijke instructies uit van de computer applicaties. Een CPU is vaak gedesigned om goed te zijn in alle situaties, daarom wordt het ook een general purpose processor (GPP) genoemd. Het voordeel hiervan is dat een GPP dan ook heel flexibel is in gebruik. Maar een CPU kan niet geweldig zijn in alle situaties en is dus sterker in bepaalde gebieden en zwakker in andere. CPUs zijn vooral voordelig in het sequentieel uitvoeren van instructies. Dit geeft daarbij wel een nadeel dat het zwak is in parallellisatie. Hierdoor wordt een CPU vaak gecombineerd met andere hardware componenten, zodat het in alle situaties de beste performance kan geven. Zo heeft Xilinx, een van de grootste ontwikkelaars van FPGAs, een architectuur ontworpen dat een ARM-processor combineerd met een FPGA. Deze architectuur wordt toegepast op de zogenoemd Zynq FPGA boards.

Een Field programmable gate arrays (FPGA) is een reprogrammable logic-device. Dit houdt in dat de logic gates aangepast kunnen worden, zodat de logica specifieke functies kan uit-voeren. Een FPGA is dus een reconfigurable integrated circuit. Dit is te vergelijken met een application-specific integrated circuit (ASIC), een processing unit dat gedesigned is voor een specifieke applicatie. De ASIC heeft het voordeel dat het sneller, kleiner en efficienter in ener-gieverbruik is dan GPPs. Dit gaat ten koste van de flexibiliteit. Een ASIC is dus veel minder flexibel dan een GPP. Het grote verschil tussen een FPGA en een ASIC is dat een FPGA repro-grammable is, terwijl een ASIC een permanent circuit is. Ook heeft een FPGA een makkelijker entry-level barrier integenstelling tot een ASIC dat vaak ook duurder en moeilijker in gebruik is. Wat de FPGA heeft in flexibiliteit komt ten koste van performance, aangezien uit onderzoek blijkt dat een ASIC een betere performance geeft en zuiniger is in energieverbruik (Kuon en Rose 2007). Een FPGA wordt dan ook gezien als het middenpunt tussen een GPP en een ASIC, aangezien het de eigenschappen van efficiency heeft van een ASIC en de flexibiliteit van een GPP. In de laatste jaren worden FPGAs steeds vaker gebruikt en dus een populair doelwit om on-derzoek te doen om de performance van FPGAs te verbeteren. Grote fabrikanten van FPGAs zoals Xilinx hebben jarenlang onderzoek gedaan om de performance van FPGAs te verbeteren. Dit gaf als resultaat een vergroting in de performance en een vermindering van het energiever-bruik van FPGAs (Saban 2011). Door de ontwikkelingen van FPGAs zijn simpele fully-featured FPGA boards makkelijker verkruigbaar dan ooit tevoren. Hiermee kan, vanuit de academische educatie, onderzoek gedaan worden met FPGA boards om de performance nog meer te verbete-ren.

Doordat FPGAs steeds populairder worden, flexibel zijn en een lage entry-barrier hebben, zijn FPGAs dus geschikt voor een onderzoek over reconfigurable processors en FPGAs. De Zynq FPGA board van Xilinx beschikt over een GPP dat reconfigurable is. Met behulp van een FPGA kan hierop de performance verbeterd worden. ´E´en van de methodes om dit te doen is door partial reconfiguration (PR). PR is het in runtime aanpassen van design modules,

(8)

ter-wijl de logica ongetast blijft. Door PR kan de FPGA zich op meerdere scenario’s specificeren, zonder dat het design opnieuw geladen moet worden. Een FPGA dat PR gebruikt heeft dus meer flexibiliteit, kans op vermindering van energieverbruik en maakt nieuwe technieken mogelijk voor FPGAs.

Partial reconfiguration is geschikt voor image processing. Een FPGA dat grafische filters gebruikt heeft hier veel voordeel bij. Met PR kan er makkelijk gewissled worden met grafische filters. In dit onderzoek wordt dan ook de performance geanalyseerd van een FPGA dat grafische filters gebruikt met PR. ARM-processors worden immers vaak gebruikt door mobile applications zoals smartphones en gebruiken dus vaak image processing algoritmes. Het onderzoek zal zich vooral richten op het algoritme van edge detection als grafische filter. Niet alleen is edge detection een fundamenteel algoritme voor image processing, het is ook een bekend algoritme voor machine learning en computer vision.

1.1

Onderzoeksvragen

De volgende vragen worden gesteld voor het gebruik van partial reconfiguration op FPGAs: Hoe verandert de performance van een FPGA met een reconfigurable processor door partial reconfiguration te gebruiken?

En hoe be¨ınvloedt partial reconfiguration de flexibiliteit van FPGAs?

1.2

Thesis structuur

De structuur van deze thesis is als volgt:

In hoofdstuk 2 worden de theoretische achtergrond in details uitgelegd. Ook worden gerelateerde onderzoeken beschreven.

In hoofdstuk 3 wordt de implementatie van het onderzoek uitgelegd en hoe het leerprocess met Vivado is gegaan om de uiteindelijke FPGA ontwerpen te cre¨eren.

In hoofdstuk 4 worden de experimenten uitgelegd en hoe hiermee de performance geanalyseerd kan worden.

Vervolgens wordt in hoofdstuk 5 de resultaten beschreven en geanalyseerd. Hiermee kunnen de onderzoeksvragen beantwoord worden.

Tot slot wordt in hoofdstuk 6 een conclusie geplaatst met een discussie over ethiek en toekomstige onderzoeken.

(9)

HOOFDSTUK 2

Theoretische achtergrond

In dit hoofdstuk wordt de achtergrond van FPGAs, Zynq FPGA boards, partial reconfiguration en edge detection ge¨ıntroduceerd.

2.1

FPGAs

Een FPGA is een integrated circuit (IC). Dit circuit is zo gemaakt dat het reprogrammable is, waardoor het geprogrammeerd kan worden voor specifieke functies. De reden dat het reprogram-mable is, komt door de architectuur van FPGAs. Uit deze architectuur zijn er 3 componenten het belangrijkst:

• Configurable Logic Blocks • Programmable Interconnects • Programmable I/O Blocks

Logic Blocks implementeert de logica voor transitor pairs, look-up tables (LUTs), flip-flops (registers) en multiplexers. Deze Logic blocks hebben als voordeel dat ze in parallel kunnen werken en configurable. Als de Logic blocks niet goed werken met een FPGA design, zal dit een fatale error veroorzaken.

Interconnections worden gebruikt voor het alloceren van middelen voor de Logic blocks. Elke Logic block is verbonden met een switch matrix dat voor de generale routing structuur zorgt. De switch matrix beschikt over programmeerbare multiplexers om signalen te selecteren die gebruikt worden voor de routing.

De I/O blocks worden gebruikt zodat de Logic blocks en de routing architectuur met externe componenten in contact kunnen komen.

Tegenwoordig worden de architectuur van FPGAs steeds verbeterd en aangepast. Zo zijn er nu ook FPGAs die programmable function blocks gebruiken zoals Random Access Memory (RAM) blocks, Digital signal processors (DSP) units en microprocessors. Grote hardware bedrijven zoals Xilinx en Intel zullen hierdoor steeds nieuwere generaties van FPGAs uitbrengen die over meer functies beschikken in hun architectuur.

(10)

Figuur 2.1: Voorbeeld FPGA structuur

2.1.1

Vivado

Een manier om een FPGA te programmeren is met behulp van de software suite Vivado van Xilinx. Vivado is gemaakt voor de synthesis en analyse van Hardware description language (HDL) designs, SoC designs en High-level synthesis (HLS).

2.2

ZYNQ board

Er zijn vele soorten FPGA boards om mee te werken. Dit onderzoek wordt gericht op een reconfigurable processor dat samen werkt met een FPGA. Daarom wordt in dit onderzoek gebruik gemaakt van de Xilinx PYNQ-Z1 board met de ZYNQ XC7Z020-1CLG400C System on Chip (SoC) design. Dit board beschikt over:

• Dual ARM CortexR TM-A9 MPCoreTM with CoreSightTM

• 32 KB Instruction, 32 KB Data per processor L1 Cache • 512 KB unified L2 Cache

• 256 KB On-Chip Memory

• 2x UART, 2x CAN 2.0B, 2x I2C, 2x SPI, 4x 32b GPIO

• 2x USB 2.0 (OTG), 2x Tri-mode Gigabit Ethernet, 2x SD/SDIO on-chip peripherals • 85K logic cells (13300 logic slices, each with four 6-input LUTs and 8 flip-flops) • 630 KB of fast block RAM

• Four clock management tiles, each with phase-locked loop (PLL) • 220 DSP slices

• Internal clock speeds exceeding 450MHz

(11)

Figuur 2.2: De Pynq-Z1 FPGA board

2.2.1

PYNQ

Python Productivity for Zynq (PYNQ) is een open-source project van Xilinx dat het makkelij-ker maakt om Xilinx platforms te gebruiken. PYNQ maakt hier gebruik van de programmeer taal Python en zijn libraries. Doormiddel van PYNQ kunnen designers programmable logic en microprocessors gebruiken van het ZYNQ board. PYNQ wordt gebruikt door Zynq, Zynq UltraS-cale+, Zynq RFSoC, Alveo accelerator boards en AWS-F1 om een high performance applications te cre¨eren met het volgende:

• parallel hardware execution • high frame-rate video processing • hardware accelerated algorithms • real-time signal processing • high bandwidth IO • low latency control

In een jupyter notebook kan de PYNQ functie package gebruikt worden. Deze package beschikt over functies om het board te besturen en bitstreams en overlays te downloaden. De overlay is dus het design van de FPGA. Hierop kunnen dan python scripts gedraait worden met het FPGA board.

2.3

Partial Reconfiguration

Partial reconfiguration (PR) is het dynamisch aanpassen van een design module, terwijl de logica hetzelfde blijft. PR bestaan uit meerdere bitstreams. Er is ´e´en statische bitstream en meerdere partial bitstreams. De statische bitstream blijft altijd hetzelfde, terwijl de partial bitstreams tussentijds kunnen worden aangepast. Zo kunnen in bepaalde situaties een partial bitstream geladen worden die betere performance kan leveren (Kao 2005). Doordat alleen een deel van de bitstream wordt vervangen, scheelt dit veel tijd, aangezien niet de hele bitstream herladen moet worden. De functionaliteit van partial reconfiguration is dus de FPGA meer flexibiliteit geven en de performance in bepaalde situaties verbeteren. Op een FPGA kunnen meerdere blokken

(12)

gemaakt worden die partial reconfigurable zijn. Elk zo’n blok gebruikt dus een PR bitstream. Elk blok kan maar 1 bitstream tegelijk gebruikt worden. Alles buiten de PR blokken gebruikt de totale statische bitstream dat niet aangepast kan worden.

Figuur 2.3: Simpel voorbeeld van Partial Reconfiguration

PR heeft niet alleen voordelen maar ook nadelen. Het herladen van PR bitstreams gaat ten koste van tijd. Dit wordt partial reconfigurable overhead genoemd. Voor de beste performance moet er dus zo min mogelijk overhead zijn.

2.4

Edge detection

Edge detection is een wiskundige methode waarmee de randen van een grafische afbeelding weergeven kunnen worden. Deze methode wordt vaak gebruikt in image processing en het gebied van computer vision. ´E´en van de bekende methodes is de Sobel edge detection methode. In deze methode worden de randen van de grafische image bepaald door te kijken naar het verschil in kleur intensiteit en de afgeleide daarvan. Hierbij wordt ook Gaussian smoothing gebruikt om de gradi¨ent van de afbeelding beter te bepalen. De matrix van de afbeelding wordt geconvolved met een 3x3 matrix kernel voor de horizontale randen en de verticale randen. Het detecteren van de horizontale randen kan dan bepaald worden met de SobelX formule, waarbij I de matrix van de grafische afbeelding is en G de afbeelding met de horizontale randen:

Gx=   +1 0 −1 +2 0 −2 +1 0 −1  ∗ I

Voor het detecteren van de de verticale randen wordt de SobelY formule gebruikte:

Gy=   +1 +2 +1 0 0 0 −1 −2 −1  ∗ I

De SobelX en SobelY worden vervolgens met elkaar gecombineerd: G =qG2

x+ G2y

De pixels van de grafische afbeelding die beschouwd worden als een rand, worden weergeven als een witte pixel. De pixels die niet worden beschouwd als een rand, worden weergeven als zwarte pixels.

(13)

Figuur 2.4: Voorbeeld Sobel edge detection

2.5

Gerelateerde Onderzoeken

Er is al een hoop onderzoek gedaan door Xilinx en andere onderzoekers op het gebied van FPGAs. Het onderzoek van Xilinx is hierbij meer gericht op FPGAs zelf. Xilinx doet onderzoek op de hardware architectuur van FPGAs, zodat de performance van FPGAs verbeterd wordt. Andere onderzoekers doen onderzoek door deze FPGAs te gebruiken met een specifiek design dat gericht is op hun onderzoek. Hierbij kunnen nieuwe methodes onderzocht worden om de performance van FPGAs te verbeteren. Bij deze onderzoeken wordt niet altijd partial reconfiguration gebruikt, of hetzelfde FPGA board. Wel kan inspiratie verkregen worden om zelf een design te maken dat PR gebruikt voor grafische filters met FPGAs.

Raikovich en Feh´er hebben al onderzoek gedaan op Partial reconfiguration op FPGAs dat image processing filters gebruikt (Raikovich en Feh´er 2010). Uit dit onderzoek wordt de Virtex-5 FPGA development board gebruikt. De Virtex-5 heeft meer ingebouwde features dan de Pynq-Z1. De Virtex-5 kan dus designs aan die complexer zijn dan designs voor de Pynq-Z1. Dit onderzoek focused zich voornamelijk op de volgende image processing algoritmes: Noise removal, Histo-gram computation, Threshold value computation , Image binarization en Edge detection. In het onderzoek kwam als resultaat dat met PR de edge detection 30 keer sneller kan zijn dan zonder PR. Dit onderzoek kan dus als een goede basis zijn voor dit onderzoek met de Pynq-Z1 board dat zich alleen op edge detection zal focussen.

In een ander onderzoek van Zhang werd met de Pynq-Z1 een design gemaakt voor object de-tection in big data (Zhang e.a. 2018). Dit design gebruikt geen PR maar maakt gebruik van hetzelfde development board (Pynq-Z1) en focused zich ook op image processing om in real-time objecten te herkennen. Hierbij werd ook gebruik gemaakt van machine learning, doormiddel van een Convolutional Neural Networks (CNN). Hiermee is het onderzoek van Eldredge en Hutchings ook van belang (Eldredge en Hutchings 1994), waarvan onderzoek werd gedaan op PR en neural networks om de hardware density van FPGAs te vergroten.

Gentsos en Sotiropoulou hebben onderzoek gedaan op real-time Canny edge detection door de parallelle implementatie van FPGAs (Gentsos e.a. 2010). In dat onderzoek wordt, net zoals in dit onderzoek, gefocused op edge detection. In het design van (Gentsos e.a. 2010) wordt echter geen PR gebruikt. De implementatie was getest op 3 verschillende FPGA boards: de Spartan-3E, de Spartan 6 en de Virtex-5. Ook is een ander onderzoek gedaan op de Spartan3 FPGA board met de Sobel edge detection enhancement algoritme (Guo, Xu en Chai 2010). Hierin werd ook een design gebouwd dat de parallellisatie van de FPGA gebruikte.

Onderzoeken over PR zelf zijn ook belangrijk om naar te kijken. Zo is er een onderzoek over PR op linux gedaan met Zynq-7000 boards. De Pynq-Z1 valt hier ook onder. (Al Kadi e.a. 2013). Hierin wordt de focus gezet op de architectuur van de FPGA en hoe partial reconfiguration kan worden gebruikt.

(14)
(15)

HOOFDSTUK 3

Implementatie

3.1

Vivado design suite

Vivado is een geschikt platform voor beginners om over hardware architectuur te leren. Vivado Design suite hlx edtion beschikt over tools om C-based designs te bouwen. Deze designs kunnen dan ook weer herbruikt worden in andere projecten. Ook heeft het de mogelijkheid om eenvoudig block designs te cre¨eren met IP blocks door deze blocks automatisch met elkaar te verbinden zonder critical errors. In dit onderzoek wordt gebruik gemaakt van Vivado version 2019.1, omdat deze versie het meest ondersteund is met PYNQ.

3.1.1

’Hello World’

Eerst wordt er een begin programma gemaakt om een beter inzicht te krijgen hoe er met een FPGA board gewerkt wordt in Vivado. Het programma zal een simpel design zijn waarbij een LED lamp aan wordt gezet doormiddel van een schakelaar. Dit programma is als het ware een soort ’Hello World’ van FPGA programmeren. Hierbij wordt de kennis verkregen om een simpel project te maken in Vivado. Ook geeft dit project een goed inzicht hoe met VHDL of Verilog hwardware componenten met elkaar kunnen reageren. Dit gaat met behulp van een constraint file dat aangeeft op welke locaties een comonent, zoals een LED, zich bevind. In Vivado zijn er 3 stappen om een bitfile te genereren. De eerste stap is het starten van de synthesis. De synthesis is het process om een RTL-design te transformeren in een gate-level representatie. Het design wordt dus klaar gemaakt voor de implementatie en kijkt of er geen fatale fouten zijn. De tweede stap is de implementatie. Hierin wordt het design gebouwd met de nodige logica en resources van de FPGA. Na de implementatie kan de bitfiles gegenereerd worden. De bitfile kan via Vivado’s hardware manager meteen op de PYNQ-Z1 gedownload worden. Hierdoor kan een LED lamp aangezet worden met een schakelaar.

3.1.2

Werken met PYNQ

Voor ingewikkeldere designs is er geen behoefte voor meer ervaring in VHDL of Verilog. Met PYNQ kan hetzelfde resultaat verkregen worden met de programmeertaal Python. De PYNQ image kan via de xilinx site gedownload worden. Hierbij wordt de laatste versie v2.5.1 gedownload en op sd-kaart gezet dat vervolgens gelezen wordt door de PYNQ-Z1 board. Bij het opstarten van de PYNQ kernel wordt jupyter notebook opgestart. Hierin staan ook tutorials hoe met PYNQ gewerkt kan worden. PYNQ programma’s werken doormiddel van een block design, ookwel overlays genoemd. Deze overlays kunnen via Vivado gemaakt door een block diagram te maken van IP blocks. Een overlay bestaat uit bitfiles en de bijbehorende tcl file of hwh file die door vivado gegenereerd worden met een block diagram. In de PYNQ image zelf is een base overlay gegeven. Dit is een standaard design dat gebruik maakt van alle basis features van de PYNQ-Z1.

(16)

Figuur 3.1: PYNQ base overlay

In dit onderzoek wordt vooral gericht op de grafische pipeline van de PYNQ-Z1. Deze pipeline maakt gebruik van de HDMI-in en HDMI-out. Om te werken met HDMI moet eerst de base overlay gedownload worden. Dit kan met de volgende lijn code:

from pynq . o v e r l a y s . b a s e i m p o r t B a s e O v e r l a y b a s e = B a s e O v e r l a y ( ” b a s e . b i t ” )

Vervolgens wordt de HDMI geconfigureerd: from pynq . l i b . v i d e o i m p o r t ∗ h d m i i n = b a s e . v i d e o . h d m i i n hdmi out = b a s e . v i d e o . hdmi out h d m i i n . c o n f i g u r e ( )

hdmi out . c o n f i g u r e ( h d m i i n . mode ) h d m i i n . s t a r t ( )

hdmi out . s t a r t ( )

Tot slot worden de HDMI-in en HDMI-out met elkaar verbonden: h d m i i n . t i e ( hdmi out )

De pipeline kan nu gebruikt worden om video data te passeren. Als alles afgehandeld is moet de grafische pipeline netjes opgeruimt worden zodat de bitstream niet gecorrupt kan worden bij een spontane afsluiting.

hdmi out . c l o s e ( ) h d m i i n . c l o s e ( )

3.1.3

Werken met Partial Reconfiguration

Het doel van dit onderzoek is om partial reconfiguration te gebruiken zodat de performance verbeterd wordt van designs met grafische filters. Als oefening wordt een design gemaakt dat PR gebruikt met LED lampen. In dit design staat het 4led-gpio block centraal. Dit block wordt samen met de andere gpio-blocken, zoals de switches-gpio block en rgb-led-gpio block in een hierarchy block gezet, omdat een partial reconfiguration flow het eenvoudigst werkt met een hierarchy block. Dit block wordt gpio 0 genoemd. In de gpio 0 block wordt een pblock gecre¨eerd. Dit pblock onderscheid de statische bitstream en de partial bitstream.

(17)

Figuur 3.2: De pblock van de gpio block

Met het pblock is het mogelijk om een partial reconfiguration flow te cre¨eren. Met de PR flow kunnen in de gpio 0 block andere blocks herladen worden. De 4led-gpio block wordt dan herladen met een ander adres, zodat een led lamp aangezet wordt. Deze nieuwe 4led-gpio wordt een reconfigurable module (RM) genoemd. In dit design worden 3 RMs gemaakt. Vervolgens worden in Vivado de bitstream files van het design gegenereerd. De bitstream files bestaan uit 1 statische bitstream file en 3 partial bitstream file. Voor elke bitstream file wordt een bijbehorende hwh file gegenereerd.

In PYNQ wordt de totale overlay gedownload. Dit is de statische bitstream: from pynq i m p o r t O v e r l a y

o l = O v e r l a y ( ’ g p i o p r . b i t ’ )

Nu zijn er 0 LED lampen aan. Om de partial bitfiles te downloaden, wordt de volgende code gebruikt:

o l . p r d o w n l o a d ( ’ g p i o 0 ’ , ’ l e d a . b i t ’ )

Hierin is gpio 0 het block dat PR gebruikt en led a.bit de partial bitfile. Nu zijn er 2 LED lampen aan. Met dezelfde methode kan een andere partial bitfile geladen worden, waardoor de 2 LED lampen uitgaan en 2 andere LED lampen aan:

o l . p r d o w n l o a d ( ’ g p i o 0 ’ , ’ l e d b . b i t ’ )

3.2

Design

Met Vivado wordt een design gemaakt voor de Pynq-Z1 om een edge detecting filter te gebruiken met behulp van partial reconfiguration. Dit design wordt dan de overlay dat gedownload wordt naar de FPGA via Pynq. De handigste manier om een grafische filter te gebruiken met een FPGA board is doormiddel van een grafische pipeline. Dit kan doormiddel met HDMI signalen. De overlay leest dus HDMI signalen van de input, verwerkt het, en zendt het naar de HDMI output. De edge detecting filter wordt tijdens het verwerken ingevoerd. In Vivado wordt dit

(18)

gedaan met een Intellectual Property (IP) block. In dit geval wordt de edge detecting IP block gemaakt in Vivado HLS. Vivado HLS is een prgramma dat C, C++ en System C code omzet naar hardware logica (VHDL), zodat het in een design process gebruikt kan worden.

3.2.1

Video design

Een overlay is nodig met een grafische pipeline waarop filters aan toegevoged kunnen worden. Als basis hiervoor wordt de base overlay van de PYNQ image v2.5.1 gebruikt. Deze overlay be-schikt echter over vele IP blocks die onnodig zijn. Om de overlay zo efficient mogelijk te maken en zo weinig mogelijk ruimte van de FPGA te gebruiken, worden alle onnodige IP blocks weggelaten. Het design dat overblijft bestaat uit de volgende IP blocks:

• De Zynq7 Processing sytstem

• De video hierarchy block van de base overlay • AXI interconnects

• AXI interrupt controller • Processor reset systems

Binnen in het video block kan in de HDMI-in block een grafische filter block gemaakt worden. Deze filter block wordt dan met Vivado HLS gemaakt. Met behulp van Partial Reconfiguration kan de bitstream van dit block aangepast worden zodat het meerdere filters kan bevatten.

(19)
(20)
(21)

3.2.2

Grafische filters in Vivado HLS

Vivado High-Level Synthesis (HLS) is een extensie van Vivado design suite en maakt het moge-lijk om C-based code te transofrmeren naar HDL. Met Vivado HLS worden IP blocks gemaakt dat vervolgens in de video design gebruikt wordt. Deze IP blocks worden de grafische filters. Het cre¨eren van een Sobel edge detection block is al meerdere keren door andere onderzoekers gedaan (Vallina, Kohn en Joshi 2012). Xilinx heeft hierbij zelf ook een eigen tutorial (Monson, Wirthlin en Hutchings 2013), zodat een beter inzicht verkregen wordt om zelf een IP block te cre¨eren in Vivado HLS. Wat noodzakelijk is in Vivado HLS, is het gebruik van pragma’s. De PYNQ-Z1 heeft een SoC omgeving. Hierdoor moet een de C-based code gesynthesised worden naar een Register Tranfer Level (RTL). Pragma’s zorgen ervoor dat het de hardware components een correcte interactie met elkaar hebben. Dit zorgt er ook voor dat het synthesizen geoptima-liseerd wordt, waardoor er minder latency ontstaat en hardware resources effici¨enter worden gebruikt.

In het video design is te zien dat de HDMI-in gebruik maakt van een Axi4-stream video in-terface. Ook wordt een ap-controler gebruikt. Hierbij zien de pragma’s er als volgt uit in de code:

#pragma HLS INTERFACE a x i s p o r t=i n d a t a #pragma HLS INTERFACE a x i s p o r t=o u t d a t

#pragma HLS INTERFACE a p c t r l n o n e p o r t=r e t u r n

Omdat de Sobel edge detection algoritme veel integers nodig heeft om de matrix van de grafische afbeelding aan te passen, wordt er gebruik gemaakt van AXI-lite pragma’s per integer:

#pragma HLS INTERFACE s a x i l i t e p o r t=v a r i a b l e 1 #pragma HLS INTERFACE s a x i l i t e p o r t=v a r i a b l e 2

Voor de main code, wordt eerste de data dat binnen komt omgezet naar een matrix. De data van de grafische afbeelding komt binnen via de AXI vide interface. Met de volgende functie wordt de input data omgezet naar een matrix vorm, waarbij de img input een RGB input is van de resolutie van 1920x1080:

RGB IMAGE i m g i n p u t ( 1 0 8 0 , 1 9 2 0 ) ; h l s : : AXIvideo2Mat ( i n p u t , i m g i n p u t ) ;

Vervolgens wordt de kleur van de image omgezet naar zwart-wit, omdat de edge detection algo-ritme de randen wit aangeeft en de rest zwart. De matrix van het zwart-witte afbeelding wordt gekopieerd, zodat er twee matrixen ontstaan. Op de ene matrix wordt de SobelX algortime uitgevoerd en op de andere SobelY. Deze matrix worden dan met elkaar gecombineerd, zodat de horizontale en verticale randen op 1 afbeelding zichtbaar zijn. Tot slot wordt de matrix weer omgezet naar AXI video data met de functie:

h l s : : Mat2AXIvideo ( i m g o u t p u t r e s u l t , o u t p u t ) ;

Vivado HLS zet de code om naar HDL en maakt hier een IP block van. Het IP block wordt dan in de hierarchy HDMI-in block gezet.

3.2.3

Grafische filters en Partial Reconfiguration

Op de HDMI-in block van het video design wordt een pblock gemaakt, waardoor er een PR flow kan ontstaan. Om de PR goed te kunnen testen wordt een extra filter block gemaakt in Vivado HLS. Dit is een eenvoudig filter dat de kleur van de input roder maakt. Net als de Sobel edge detection wordt de AXI input data omgezet naar een matrix. Vervolgens wordt de kleur niet naar zwart-wit omgezet, maar naar een envoudige kleur rood. Op het video design worden dus 2 RMs gebuikt. De eerste RM is voor de Sobel edge detection. De tweede RM is voor de ’red filter’. Met Vivado wordt de syntheiss en implementatie uitgevoerd op het video design blockschema. Na de implementatie worden de bitstream files gegenereerd en de bijbehorende hwh files, die vervolgens met PYNQ geladen kunnen worden als een overlay.

(22)

3.2.4

Vergelijking met designs van andere onderzoeken

Zoals eerder vermeld in hoofdstuk 2.5, zijn er al meerdere onderzoeken gedaan, waarbij partial reconfiguration gebruikt wordt. Deze onderzoeken verschillen soms in bepaalde gebieden van dit onderzoek. In Raikovich en Feh´er wordt bijvoorbeeld gebruik gemaakt van een special configura-tion interface genaamd ICAP (Internal Configuraconfigura-tion Access Port) (Raikovich en Feh´er 2010). Door de interne hardware module kan daarop PR gebruikt worden. In ons design wordt het gebruik van PR zo simpel mogelijk gemaakt. Door Vivado kan makkelijk een PR flow aange-maakt worden. Ook het laden van de partial bitstreams wordt zo eenvoudig mogelijk gebruikt. In oudere methodes moest er rekening worden gehouden met registers. Tegenwoordig kan in PYNQ in versie 2.4 en hoger met 1 functie een partial bitstream geladen worden. Wel is het nadeel hiervan, dat de werking niet in details wordt weergeven. Bij errors kan het dan moeilijker zijn om erachter te komen wat er precies fout gaat.

Vergeleken met andere onderzoeken, blijven de basis principes van PR wel hetzelfde. Er wordt gebruik gemaakt van reconfigurable modules en er worden partial regions aangemaakt voor de partial bitstreams.

Bij complexe designs worden vaak ook ingebouwde functies gebruikt van bepaalde FPGA boards. In dit onderzoek wordt immer de PYNQ-Z1 gebruikt, een redelijk simpel FPGA board, terwijl in andere onderzoeken gebruik wordt gemaakt van FPGA boards met ingebouwde features zoals de Virtex-5. De reden om de methode van PR zo simpel mogelijk te houden, is dus omdat een simpel PR design gebruikt wordt op een simpel FPGA board.

(23)

HOOFDSTUK 4

Experimenten

Experimenten moeten worden uitgevoerd om de performance te analyseren van de overlays met PR en de overlays zonder PR. Met PYNQ wordt een jupyter notebook aangemaakt waardoor overlays worden gedownload. De overlay dat PR gebruikt zal bestaan uit meerdere bitstream files en ´e´en tcl file. De tcl file is het design waar de overlay zich aan houdt. Tegenwoordig genereert Vivado ook een hwh file dat de tcl file vervangt, omdat tcl files in de toekomst niet meer gebruikt zullen worden. Voor het laden van de overlays wordt dan ook de hwh file gebruikt inplaats van de tcl file. De bitstream files bestaan uit 1 statische bitstream en meerdere partial bitstreams. Het aantal partial bitstream files is afhankelijk van het aantal reconfigurable modules in het design. De statische bitstream is de logica dat niet aangepast kan worden op run-time. De partial bitstreams kunnen wel aangepast worden tijdens run-time.

Een experiment wordt uitgevoerd om de tijd te meten om de bitstreams van de overlays te downloaden. Op de overlays met PR wordt de totale laadtijd van de bitstream bepaald door de laadtijd van de statische bitstreams en de partial bitstreams bij elkaar op te tellen. Voor de overlays zonder PR wordt alleen de laadtijd van de statische bitstream gemeten, aangezien het niet beschikt over partial bitstreams. De laadtijd van overlays met PR en overlays zonder PR worden dan met elkaar vergeleken.

Ook wordt er gekeken naar de hardware grootte van elke overlay. Hier wordt gekeken naar het aantal LUTs en FLOP-LATCHs. Deze eigenschappen zijn zichtbaar in Vivado na de synthese fase en implementatie fase. De eigenschappen worden gelezen na de implementatie fase, omdat het design dan is geoptimaliseerd om zo min mogelijk LUTs en FLOP-LATCHs te gebruiken. Met deze experimenten wordt geanalyseerd hoe PR invloed heeft op de laadtijd en hardware grootte van overlays. Hiermee kan dan gezien worden hoe partial reconfiguration invloed heeft op de performance van de FPGAs. Hoe sneller de bitstreams geladen worden, hoe beter de performance. De bitstream laadtijd van de designs zonder PR en de designs met PR worden met elkaar vergeleken om de onderzoeksvraag te beantwoorden. Met deze analyse wordt er dus achterhaald hoe partial reconfiguration de performance van een FPGA kan veranderen.

Door naar het verschil in LUTs en FLOP-LATCHs te kijken, wordt er geanalyseerd wat voor invloed designs met PR hebben op de hardware recourses. Een design met PR zal meer functies hebben dan een design zonder PR. Als het weinig hardware recourses kost voor meer functies zal het dus invloed hebben op de flexibiliteit van de FPGA. Hiermee kan dus erachter gekomen worden of PR een positieve of negatieve invloed heeft op de flexibiliteit van FPGAs.

(24)
(25)

HOOFDSTUK 5

Resultaten

5.0.1

LEDs

De overlay om LED lampen aan en uit te zetten op de PYNQ-Z1 is succesvol gemaakt. De tijd om de bitstream te downloaden wordt gemeten van de overlay dat 1 LED lamp aan zet en geen PR gebruikt. Deze overlay laadt dus alleen een statische bitstream. Met 50 metingen is een gemiddelde tijd van 608.55 milliseconden (ms) verkregen met een standaarddeviatie van 85.68.

Figuur 5.1: 50 metingen om 1 LED te laten branden zonder PR

Op het design van de overlay wordt PR uitgevoerd met het gpio 0 block als reconfigurable module. Het laden van deze reconfigurable module is de partial bitstream. De overlay dat PR gebruikt begint eerst met 0 LED lampen aan. Nadat de partial bitstream van de reconfigurable module wordt geladen, gaat 1 LED lamp aan. Hiervan wordt 50 keer de tijd gemeten van de statische bitstream en van de partial bitstream. Als resultaat volgt een gemiddelde van 623.43 ms voor de statische bitstream met een standaarddeviatie van 82.26 en een gemiddelde van 248.92 ms met een standaarddeviatie van 84.46. De totale laadtijd is dus gemiddeld 872.35 ms met een standaarddeviatie van 110.41.

(26)

Figuur 5.2: 50 metingen om 1 LED te laten branden met PR

Het is te zien dat partial reconfiguration een vertraging opleverd door een te grote overhead van de partial bitstream. Ook is laadtijd van het statische bitstream van het design met PR 2.4% langzamer dan de laadtijd van het design zonder PR. Dit is te verklaren dat het design met PR rekening moet houden met de pblock die voor de PR zorgt. Wat ook opvalt is dat er om de zoveel metingen een uitschieter plaatsvindt. Een mogelijke verklaring is dat er gebruik wordt gemaakt van het RAM block tijdens het laden van de bitstreams. Doordat er steeds weer nieuwe bitstreams geladen moeten worden, kan het RAM block vol raken. De FPGA maakt dan een soft reset, waardoor de laadtijd van de bitstreams iets langer wordt.

De PYNQ-Z1 beschikt echter over 4 LED lampen. Er zijn dus 16 mogelijkheden voor de volgorde van het aantal LEDs dat aan en uit kunnen zijn. Het design zonder PR wordt aangepast. Er zijn 16 overlays gemaakt dat geen PR gebruikt om al deze mogelijkheden te krijgen. De gemiddelde tijd van 50 metingen wordt gemeten om al deze 16 overlays te laden. Een gemiddelde van 9976.20 ms is gemeten met een standaarddeviatie van 288.17.

(27)

Hetzelfde resultaat van alle mogelijkheden van LEDs kan ook verkregen worden door 1 overlay en 15 reconfigurable modules door PR. Hierop wordt de gemiddelde laadtijd van de totale bit-stream van 50 metingen gemeten voor verschillende aantal reconfigurable modules. Uit resultaat volgt een gemiddelde van 4174,71 ms om alle mogelijkheden van LEDs te laden.

Figuur 5.4: De gemiddelde tijd om de 1 overlay met 15 reconfigurable modules te laden Het is te zien dat 1 overlay met 1 RM al sneller is om te laden dan om 2 overlays te laden. Ook is het gebruik van meerdere RMs lineair in de laadtijd. Zoveel mogelijk RMs moeten dus gebruikt worden om PR zo effici¨ent mogelijk te gebruiken; zolang de FPGA maar genoeg LUTs en FLOP-LATCHs heeft. Bij 1 overlay met 15 reconfigurable modules is de maximale efficientie van PR bereikt met designs voor de 4 LEDs. 1 overlay met 15 RMs is 2,39 keer sneller om te laden dan 16 overlays. Dit komt ten kosten van hardware recourses. Het design zonder PR gebruikt 3335 LUTs en 4357 FLOP-LATCHs. Het design met PR gebruikt 3435 LUTs en 4471 FLOP-LATCHs plus 98 LUTs en 114 FLOP-LATCHs per reconfigurable module. Met 15 reconfigurable modules heeft het design dus 1570 LUTs en 1824 FLOP-LATCHs meer. In de volgende tabel is het aantal LUTs en FLOP-LATCHs voor elk overlay te zien:

Design no PR Design with PR 0 RM 1 RM 2 RM 3 RM 4 RM 5 RM 6 RM

LUTs 3335 3435 3533 3631 3729 3827 3925 4023

FLOP-LATCHs 4357 4471 4585 4699 4813 4927 5041 5155

7 RM 8 RM 9 RM 10 RM 11 RM 12 RM 13 RM 14 RM 15 RM 4121 4219 4317 4415 4513 4611 4709 4807 4905 5269 5383 5497 5611 5725 5839 5953 6067 6181

Tabel 5.1: De LUTs en FLOP-LATCHs voor de designs van de LED lampen

5.0.2

Grafische filters

Het design met de Sobel edge detection filter is succesvol gemaakt, zowel met PR als zonder PR. De overlay zonder PR wordt met PYNQ geladen. Om de grafische pipeline te gebruiken wordt

(28)

gebruik gemaakt van de HDMI functies van PYNQ. De video input data van de HDMI-in wordt aangepast door de Sobel filter dat vervolgens door de HDMI-out wordt weergeven.

Figuur 5.5: Resultaat edge detection filter

Er zijn 3 overlays gemaakt van het video design. De eerste overlay gebruikt de red filter zonder PR. De tweede overlay gebruikt de Sobel edge detection filter zonder PR. De laatste overlay gebruikt beide filters als RM doormiddel van PR. Er wordt ongeveer hetzelfde resultaat verwacht als bij de designs van de LEDs, waarbij het design met PR meer hardware recourses nodig heeft. De verwachting wordt dan dat het design met PR een langere laadtijd heeft op de statische bitstreams dan de designs zonder PR, maar dat de laadtijd van partial bitstreams het ervoor zorgt dat er snel van filters gewisseld kan worden.

De laadtijd van de bitstreams worden voor elke overlay gemeten. Uit 100 metingen wordt de gemiddelde laadtijd van de bitstreams verkregen. De red filter zonder PR heeft een gemiddelde laadtijd van 494.69 ms met een standaarddeviatie van 72.21. De Sobel edge detection filter zon-der PR heeft een gemiddelde laadtijd van 523.71 ms met een standaarddeviatie van 134.67. Bij de overlay dat wel PR gebruikt wordt 100 keer de laadtijd van de statische bitstream gemeten en 100 keer de partial bitstream per filter. Ook wordt 100 keer de partial bitstream laadtijd gemeten van het wisselen van de red filter naar de Sobel filter en andersom. Uit resultaat heeft de statische bitstream een gemiddelde laadtijd van 561.30 ms met een standaarddeviatie van 140.87. De partial bitstream laadtijd van de red filter heeft een gemiddelde van 279.25 ms met een standaard deviatie van 91.08. De partial bitstream laadtijd van de Sobel edge detection filter heeft een gemiddelde van 291.58 ms met een standaarddeviatie van 119.21. Bij het wisselen van de red filter naar de Sobel filter is een gemiddelde laadtijd gemeten van 265.98 ms met een stn-daarddeviatie van 110.03. Bij het wisselen van de Sobel filter naar de red filter is de gemiddelde laadtijd 282.43 ms met een standaarddeviatie van 98.18.

(29)

de laadtijd om allebei de filters te krijgen gemiddeld 1132.13 ms. Door het design met PR te gebruiken is er dus een vertraging van 11,2%. Dit is te verklaren doordat er niet optimaal gebruik wordt gemaakt van PR, omdat er maar 2 RMs gebruikt worden. Bij het design voor de LEDs is te zien dat hoe meer RMs er gebruikt worden, hoe effici¨enter het laden van bitstreams wordt. Een andere reden is dat het desin dat PR gebruikt een stuk meer LUTs en FLOP-LATCHs ge-bruikt, dan de andere overlays. Dit komt omdat het pblock in het design extra groot is gemaakt, waardoor het design een extra 1293 LUTs en 2185 FLOP-LATCHs groter is. De reden voor de vergroting van de pblocks is dat de RMs veel groter zijn dan bij het design van de LEDs, waardoor een grotere pblock noodzakelijk is om critical errors te verkomen.

In de volgende tabel zijn de LUTs en FLOP-LATCHs voor elke overlay en de IP blocks van de filters zichtbaar:

Red overlay Red filter block Sobel overlay Sobel filter block Red & Sobel PR overlay

LUTs 16214 726 16670 1182 18689

FLOP-LATCHs 24899 1100 25557 1785 28869

Tabel 5.2: De LUTs en FLOP-LATCHs voor de filter blocks en de totale designs van de grafische filters

Wat ook opvalt, is dat de statische bitstream laadtijd hier korter is dan bij het design voor de LEDs, terwijl de designs van de grafische filters veel meer LUTs en FLOP-LATCHs gebrui-ken. Een mogelijke verklaring is dat de logica van de gpio’s voor de LEDs, switches, RGBLEDs en buttons langer duurt om te laden dan de logica voor een grafische pipeline. Ook kunnen de signalen die gestuurd worden naar de LEDs een grote rol spelen in een vertraging van de laadtijd van de bitstreams, waarbij het een aantal milliseconden als overhead geeft. Deze over-head kan dan zo groot zijn dat de overover-head van het verschil in hardware recourses overschaduwd wordt. Bij de laadtijd van de partial bitstreams is wel een verschil te zien, waarbij het laden van de filters groter is dan de LEDs. De filters hebben immers meer logica en hardware recour-ses nodig. Ook is te zien dat de laadtijd van het omwisselen van de red filter naar de Sobel filter bijna hetzelfde is als het wisselen van de Sobel filter naar de red filter, terwijl de Sobel filter meer hardware recourses nodig heeft. Het verschil van de hardware sources en logica van de Sobel filter en de red filter is echter niet groot genoeg om een verschil in de laadtijd te merken. Een voordeel van de grafische filter design is wel dat het flexibeler in gebruik is dan de de-signs zonder PR. Inplaats van dat er voor elke filter een aparte overlay wordt gemaakt, beschikt 1 overlay over beide filters. De grootste eigenschap van een FPGA is dat het flexibel is. PR geeft dus de mogelijkheid om designs dat image processing gebruikt, in dit geval dus grafische filters, om nog flexibeler te zijn. Als er meer gebruik wordt gemaakt van de PR flow en dus meer RMs worden gebruikt, zal hierbij ook een betere performance ontstaan bij het laden van de bitstreams.

(30)
(31)

HOOFDSTUK 6

Discussie

6.1

Conclusie

Uit de resultaten is te zien dat Partial Reconfiguration een goede methode is om te gebruiken in designs dat in run-time bepaalde functies moet aanpassen. Hoe meer reconfigurable modules in de PR flow gebruikt worden, hoe beter de performance wordt qua laadtijd van de bitstreams. Dit gaat wel ten kosten van hardware recourses, maar vaak zullen de reconfigurable modules een klein deel zijn van de totale hardware recourses van de overlay. De kost van hardware recourses is dus een kleine kost voor een grote winst in de laadtijd van de bitstreams. Ook is te zien bij de resultaten van de grafische filter design, dat PR het gunstiger maakt om snel van filters te wisselen. Er is dus geen noodzaak voor aparte overlays per grafische filter. Met PR kan 1 overlay beschikken over meerdere grafische filters. Door PR worden designs met grafische filters dus flexibeler en geven ook een betere performance in de laadtijd van de bitstreams. Met deze resultaten kunnen de onderzoeksvragen beantwoord worden. Door PR te gebruiken, verandert de performance van een FPGA met een reconfigurable processor dus op een positieve manier. Door PR op een effici¨ente manier te gebruiken, met zoveel mogelijk reconfigurable modules, wordt er dus een betere performance geleverd. Ook verandert PR de flexibiliteit van de FPGA op een positieve manier. Doordat de FPGA meerdere grafische filters kan gebruiken in 1 design met PR, is het dus flexibeler in gebruik. PR heeft dus een positieve invloed op zowel de performance van de laadtijd van de bitstreams als de flexibiliteit van FPGAs.

6.2

Ethiek

Het is te discussi¨eren of het analyseren van de performance van FPGAs ethisch verantwoord is. Het gebruik van hardware kan zowel voor als tegen de mensheid gebruikt worden. Zo kunnen FPGAs gebruikt worden in militaire wapens, aangezien FPGAs flexibel, goedkoop en effici¨ent in energie zijn. FPGAs kunnen ook in de nieuwste technologie¨en gebruikt worden om het dagelijks leven van mensen te verbeteren. In dit onderzoek is vooral de performance geanalyseerd op de PYNQ-Z1. Vergeleken met andere FPGAs, is de PYNQ-Z1 ´e´en van de zwakkere FPGAs. Dit FPGA board is dus te zwak voor militaire wapens en wordt juist meer gebruikt in elektronica voor consumenten. Ook zal de performance van hardware altijd blijven verbeteren. Het verbeteren van de performance van hardware technologie is dan ook een goed iets, zodat de mens gemakkelijker kan leven. Het onderzoeken van methodes om hardware effici¨enter te gebruiken kan dus gezien worden als een goed iets in de sociale maatschappij. In dit geval is het onderzoeken van partial reconfiguration op FPGAs dus wel etisch verantwoord.

(32)

6.3

Toekomstige onderzoeken

Er is geconcludeerd dat partial reconfiguration de performance van het laden van de bitstreams kan verbeteren. Wel kan hierop voortgebouwd worden in toekomstige onderzoeken. In dit on-derzoek is gezien dat PR effici¨ent in grafische filters gebruikt kunnen worden. Hier zijn alleen kleur filters en edge detection filters gebruikt. In een toekomstig onderzoek kunnen er dus andere filters gebruikt worden. Ook kan het verder uitgebreid worden tot een object detection filter. Het object detection filter zal dan gebruik maken van een convolutional neural network (CNN). Hierbij kan dan ook onderzocht worden of partial reconfiguration de performance kan verbeteren van een CNN.

Voor een ander onderzoek zou een ander FPGA board gebruikt kunnen worden. In dit onderzoek is alleen de PYNQ-Z1 gebruikt. Een toekomstig onderzoek zou gebruik kunnen maken van een andere FPGA board, dat niet over PYNQ beschikt. Hierbij zal de implementatie meer verschillen en kan er geanalyseerd worden of er andere resultaten gevormd worden.

(33)

Referenties

Al Kadi, Muhammed e.a. (2013). “Dynamic and partial reconfiguration of Zynq 7000 under Linux”. In: 2013 International Conference on Reconfigurable Computing and FPGAs (Re-ConFig). IEEE, p. 1–5.

Eldredge, James G en Brad L Hutchings (1994). “RRANN: The run-time reconfiguration artificial neural network”. In: Proceedings of IEEE Custom Integrated Circuits Conference-CICC’94. IEEE, p. 77–80.

Gentsos, C. e.a. (2010). “Real-time canny edge detection parallel implementation for FPGAs”. In: 2010 17th IEEE International Conference on Electronics, Circuits and Systems, p. 499– 502.

Guo, Zhengyang, Wenbo Xu en Zhilei Chai (2010). “Image edge detection based on FPGA”. In: 2010 Ninth International Symposium on Distributed Computing and Applications to Business, Engineering and Science. IEEE, p. 169–171.

Kao, Cindy (2005). “Benefits of partial reconfiguration”. In: Xcell journal 55, p. 65–67.

Kuon, I. en J. Rose (2007). “Measuring the Gap Between FPGAs and ASICs”. In: IEEE Trans-actions on Computer-Aided Design of Integrated Circuits and Systems 26.2, p. 203–215. Monson, J., M. Wirthlin en B. L. Hutchings (2013). “Optimization techniques for a high level

synthesis implementation of the Sobel filter”. In: 2013 International Conference on Reconfi-gurable Computing and FPGAs (ReConFig), p. 1–6.

Raikovich, Tam´as en B´ela Feh´er (2010). “Application of partial reconfiguration of FPGAs in image processing”. In: 6th Conference on Ph. D. Research in Microelectronics & Electronics. IEEE, p. 1–4.

Saban, Kirk (2011). “Xilinx stacked silicon interconnect technology delivers breakthrough FPGA capacity, bandwidth, and power efficiency”. In: Xilinx, White Paper 1.1, p. 1–10.

Vallina, Fernando Martinez, Christian Kohn en Pallav Joshi (2012). “Zynq All Programmable SoC Sobel Filter Implementation Using the Vivado HLS Tool”. In:

Zhang, Peiyue e.a. (2018). “Real time object detection based on FPGA with big data”. In: 2018 4th International Conference on Big Data Computing and Communications (BIGCOM). IEEE, p. 54–59.

Referenties

GERELATEERDE DOCUMENTEN

The logic of the modules that belong to a specific configuration is placed into the partial region of the FPGA fabric and interface nets are reconnected.. Finally, we end up with

In bus macros, one logic primitive is placed in the static system, and another one in the reconfigurable area and wires between them are used to carry out the routing between the

This work analyses the routing of partial reconfigurable modules and how this can be changed using the open-source tool RapidSmith2. This tool provides an important interface

The platform is verified with a case study executing the parallelized C-codes of a simple producer-consumer and JPEG decoder applications on a NoC-based MPSoC on a Xilinx FPGA.. Based

Veel van dit materiaal is heden ten dage voor de bouw in- teressant; tras, gemalen tuf is zeer geschikt als specie voor waterdicht metselwerk.. Bims, puimsteenkorrels tot

De gesprekstechniek is natuurlijk enkel een leidraad. De vrijwilliger mag hieraan zijn eigen draai geven. Wanneer de vrijwilliger bijvoorbeeld verschillende huisbezoeken wil

Designs with two singular values include (v, k, λ) designs and transversal designs, but also some less familiar designs such as partial geometric designs and uniform

Under the first level of redress, a data subject would submit a formal complaint to the PCAOB Office of the Hearing Officer describing with specificity the data subject’s claims