personal/stageverslag

stageverslag.md in master
Repositories | Summary | Log | Files

stageverslag.md (54970B) download


  1\clearpage
  2\thispagestyle{empty}
  3\null
  4\clearpage
  5\large
  6\vspace*{\fill}
  7|                        |                               |
  8| ---------------------: | ----------------------------- |
  9|              **Titel** | \thetitle                     |
 10|    **Plaats en Datum** | Assen, \today                 |
 11|                        |                               |
 12|             **Auteur** | \theauthor                    |
 13|      **Studentnummer** | 445455                        |
 14|             **E-mail** | [email protected]           |
 15|                        |                               |
 16|            **Bedrijf** | EVAbits                       |
 17|            **Locatie** | Skagerak 26                   |
 18|                        | 9723JR Groningen              |
 19| **Bedrijfsbegeleider** | Jan Stegenga                  |
 20|                        | Erik Kallen                   |
 21|                        |                               |
 22|          **Opleiding** | Software Engineering, HBO-ICT |
 23|             **School** | Hanze Groningen               |
 24|            **Locatie** | Zernikeplein 11               |
 25|                        | 9747 AS Groningen             |
 26|   **Docentbegeleider** | Kobus Bijker                  |
 27|                        | Nienke van der Spek           |
 28
 29Copyright \copyright \the\year{} \theauthor
 30
 31\normalsize
 32\newpage
 33\newpage
 34
 35# Voorwoord {.unnumbered}
 36
 37Voor u ligt het verantwoordingsverslag van mijn stage bij EVAbits, uitgevoerd gedurende semester 3.2 als onderdeel van de derdejaarsstage HBO-ICT aan de Hanze Groningen. Tijdens deze stage heb ik gewerkt aan de EVAjig, een innovatief product van EVAbits. EVAbits begon als een start-up in opdrachtprogrammering in Bedum en is inmiddels uitgegroeid tot een gevestigd bedrijf in Euvelgunne, Groningen. Sinds twee jaar werkt EVAbits aan de ontwikkeling van hun eigen product, de EVAjig. Dankzij mijn interesse en kennis in Embedded Programming heb ik EVAbits kunnen ondersteunen en een bijdrage kunnen leveren aan de EVAjig.
 38
 39Dit verslag geeft een overzicht van mijn ervaringen en werkzaamheden gedurende de afgelopen twintig weken. Ik heb een leuke tijd gehad waarin ik mijn kennis heb kunnen verbreden en mezelf verder heb kunnen ontwikkelen. Mijn inzet en kennis werden bij EVAbits gewaardeerd, wat heeft geleid tot een werkcontract na afronding van mijn stage. Ik ben zeer dankbaar voor deze kans.
 40
 41Graag wil ik mijn begeleider van de Hanze, Kobus Bijker, bedanken voor zijn ondersteuning en waardevolle feedback gedurende mijn stageperiode.
 42
 43Assen, \today
 44
 45Friedel Schön
 46
 47# Samenvatting {.unnumbered}
 48
 49De hoofdlijn van dit stageproject is werken met Field-Programmable Gate Arrays (FPGA's). FPGA's bieden op flexibele wijze een breed scala aan functies, daardoor zijn FPGA's geschikt voor complexe en flexibele toepassingen. In dit verslag zou dieper ingegaan worden op de werkwijze van FPGA's. EVAbits, een klein bedrijf gevestigd in Euvelgunne, Groningen, is gespecialiseerd in Embedded Engineering en Architectural Design. Het bedrijf heeft sinds twee jaar een eigen product ontwikkeld: de EVAjig, een testkast voor het testen van printplaatassemblages (PCBA's).
 50
 51De EVAjig maakt het mogelijk verschillende PCBA's te testen zonder aanpassingen. Momenteel is de EVAjig gebaseerd op een microcontroller met beperkte communicatiemogelijkheden, wat resulteert in een beperkt aantal te testen PCBA's. EVAbits streeft ernaar dit probleem op te lossen door een FPGA te gebruiken. Daarom is de opdracht gegeven om een proof-of-concept te ontwikkelen. Om een probleem aan te pakken is het vereist om een uitgebreide fasering en planning te bespreken.
 52
 53Tijdens de stage is er een onderzoek uitgevoerd met als hoofdvraag "_Wat zijn voor- en nadelen van communicatiemiddelen tussen FPGA en computer op basis van van snelheid, betrouwbaarheid en kosten?_". Een belangrijk aspect van dit project is het onderzoek naar het meest geschikte communicatieprotocol tussen de FPGA en de computer. De opdrachtgever vraagt specifiek naar de voor- en nadelen van verschillende communicatiemiddelen op het gebied van snelheid, betrouwbaarheid en kosten. Op basis van dit onderzoek zijn aanbevelingen geformuleerd voor toekomstige werkzaamheden. Uit dit onderzoek is gebleken dat het Serial Peripheral Interface (SPI) het meest geschikte protocol is voor de EVAjig, door de flexibiliteit en snelheid die dit protocol biedt.
 54
 55# Begrippenlijst {.unnumbered}
 56
 57- **Architecture Design**: Het ontwerpen van de structuur en organisatie van hardware of software systemen.
 58
 59- **Baud**: De eenheid van symbolen per seconde in communicatie, gebruikt om de snelheid van dataoverdracht in asynchrone protocollen zoals UART te specificeren.
 60
 61- **Clock-signaal**: Een elektrisch signaal dat de timing en snelheid van communicatie in een protocol bepaalt.
 62
 63- **(Data-)bus**: Meerdere peripherals zijn parallel aangesloten aan de datalijnen en communiceren zo onderling of met de master. De bus kan verbreed worden, zonder de complexiteit te moeten verhogen.
 64
 65- **(Data-)lijn** of **Signaal**: Een bekabeling van chip naar chip.
 66
 67- **Datastructuur**: Een specifieke manier om gegevens te organiseren, te beheren en op te slaan zodat ze efficiënt kunnen worden gebruikt en gecommuniceerd.
 68
 69- **Half-Duplex**: Er kan maar in een richting gecommuniceerd worden tegelijkertijd. 
 70
 71- **Full-Duplex**: Er kan tegelijk in twee richtingen gecommuniceerd worden.
 72
 73- **Echo** of **Ping-Pong**: Een programma, die op een _ping_-request een _pong_-response terug geeft. Op deze manier is de connectie en snelheid te testen.
 74
 75- **Efinix Titanium**: Een type FPGA geproduceerd door Efinix, bekend om zijn snelheid en energiezuinigheid.
 76
 77- **Embedded Programming**: Het schrijven van software die direct op de hardware van een apparaat draait, vaak gebruikt in speciale hardware- en software-integraties.
 78
 79- **EVAjig**: Een testapparaat van EVAbits ontworpen om het programmeren, instellen en testen van printplaatassemblages (PCBA) te vergemakkelijken.
 80
 81- **Field-Programmable Gate Array (FPGA)**: Een type geïntegreerd circuit dat door de gebruiker geconfigureerd kan worden om specifieke taken uit te voeren.
 82
 83- **Google’s Protobuffers (Protobuf)**: Een efficiënt en taalneutraal data-serialisatieformaat ontwikkeld door Google, gebruikt voor het uitwisselen van gestructureerde informatie tussen verschillende programma's en systemen.
 84
 85- **Hardware Description Language (HDL)**: Een programmeertaal waarmee de configuraties en functies van de logische blokken binnen een FPGA worden beschreven.
 86
 87- **Hot-swapping**: De mogelijkheid om componenten toe te voegen of te verwijderen uit een systeem zonder dat het systeem hoeft te worden uitgeschakeld of opnieuw opgestart.
 88
 89- **Implementatie**: Het proces van het realiseren van een ontwerp of plan door middel van hardware of software.
 90
 91- **Inter-Integrated-Circuit (\iic{})**: Een eenvoudige, goedkope bus-systeem protocol dat een master en een of meer slaves gebruikt voor communicatie, met twee lijnen: een voor data en een voor clock.
 92
 93- **Master-Slave**: Een communicatieprincipe waarbij een master-apparaat controle heeft over de communicatie met één of meer slave-apparaten die reageren op de commando's van de master.
 94
 95- **Microcontroller**: Een klein computer op een chip met een processor, geheugen, en invoer-/uitvoerpoorten, gebruikt voor specifieke taken in elektronische systemen.
 96
 97- **Node**: Een individueel apparaat of punt in een netwerk of bus-systeem dat deelneemt aan de communicatie.
 98
 99- **Open Source**: Een programma is opgebouwd met geschreven code (de broncode). Ontwikkelaars kunnen ervoor kiezen deze broncode voor iedereen publiek toegankelijk te maken, iedereen kan de broncode lezen en verbeteren.
100
101- **Peripheral**: Een controller (of computer) bestaat uit meerdere peripherals, dit zijn chips of elementen die een functie toevoegen. Voorbeeld: de processor op een microcontroller, de UART-naar-USB chip op een computer.
102
103- **Printplaatassemblages (PCBA)**: Een geassembleerde printplaat waarop verschillende elektronische componenten zijn bevestigd.
104
105- **RISC-V**: Een open standaard instructieset architectuur (ISA) gebaseerd op de principes van verminderde instructieset computing (RISC).
106
107- **Real-Time Operating System (RTOS)**: Een besturingssysteem ontworpen om applicaties te draaien die binnen strikte tijdslimieten moeten reageren op gebeurtenissen, vaak gebruikt in embedded systemen.
108
109- **Request-Response**: Een gebruiker stuurt een verzoek (request) naar een server, de server stuurt een antwoord (response) naar de gebruiker. Voorbeeld: De gebruiker vraagt `hanze.nl` op (request), de webserver stuurt de gegevens van de website (response).
110
111- **Serial Peripheral Interface (SPI)**: Een flexibel bus-systeem protocol met drie signalen: clock, MOSI (Master Out, Slave In), en MISO (Master In, Slave Out), plus een optionele Chip-Select lijn.
112
113- **Synchrone Communicatie**: Zender en ontvanger zijn gesynchroniseerd door een gezamenlijke clock. Er wordt alleen op de klokslag data verzonden of ontvangen.
114
115- **Asynchrone Communicatie**: Zender en ontvanger zijn niet gesynchroniseerd door een gezamenlijke clock. Data kan onafhankelijk van elkaar verzonden worden.
116
117- **Universal Asynchronous Receiver/Transmitter (UART)**: Een asynchroon protocol voor communicatie tussen twee nodes, waarbij twee datalijnen (RX en TX) gebruikt worden zonder clock, met een gedefinieerde baud-snelheid.
118
119- **Versiebeheer**: Met versiebeheer worden veranderingen in de geschreven software opgeslagen in vorm van een versie, daardoor is het mogelijk naar oudere versies te kijken. Een groot voordeel is het efficiënte samenwerken. 
120
121- **Zephyr OS**: Een open-source real-time operating system ontwikkeld voor embedded apparaten, bekend om zijn lichtgewicht, schaalbare en veilige ontwerp.
122
123- \textoverline{CS}: Een lijn boven een signaal-naam betekent, dat deze active-low is. Een lijn, die actief is als het laag is getrokken.
124
125\toc <!-- TABLE OF CONTENTS -->
126
127# Hoofdstuk Inleiding
128
129De opdrachtgever EVAbits is een klein bedrijf gevestigd in Euvelgunne te Groningen. Het bedrijf is gespecialiseerd in het schrijven en onderhouden van software en firmware in de kader van Embedded Programming en Architecture Design. Het bedrijf is begonnen met opdrachtprogrammering, maar is ook sinds een aantal jaren bezig met hun eigen product: de EVAjig.
130
131De EVAjig is een testapparaat dat speciaal is ontworpen om het proces van programmeren, instellen en testen van printplaatassemblages (PCBA) te vergemakkelijken. Dit apparaat is uitgerust met een dashboard en een online portaal. Een van de opvallende kenmerken van de EVAjig is de mogelijkheid om cassettes met PCBA's gemakkelijk te verwisselen. Dit betekent dat je met hetzelfde apparaat verschillende soorten PCB kunt ontwerpen en testen zonder veel tijd kwijt te zijn aan het aanpassen van de testopstelling.
132Daarnaast biedt de EVAjig een breed scala aan algemene functies, waardoor het een veelzijdig hulpmiddel is voor verschillende testbehoeften. Dit maakt het apparaat bijzonder geschikt voor bedrijven en technici die regelmatig met verschillende PCB ontwerpen werken.
133
134Dit verantwoordingsverslag licht de opdracht toe en verantwoordt de gemaakte keuzes en de aanpak van de problemen. Het verslag begint met een toelichting op de EVAjig en het probleem dat de opdrachtgever ermee heeft. Vervolgens wordt het uitgevoerde onderzoek besproken in hoofdstuk vier, dit omvat een conclusie met aanbevelingen aan de opdrachtgever. In het vijfde hoofdstuk worden de HBO-I-competenties toegelicht en wordt beschreven hoe deze zijn bereikt. Er wordt afgesloten met 'Lessons Learned' met onderdelen die in de stage zijn geleerd of verbetert inclusief een korte zelfreflectie.
135
136# Hoofdstuk Opdrachtbeschrijving
137
138In dit hoofdstuk wordt de stageopdracht uitgebreid beschreven en is opgedeeld in verschillende secties om een duidelijk overzicht te bieden. Eerst wordt in de sectie 'Probleem' het huidige probleem van de opdrachtgever toegelicht. Vervolgens wordt in de sectie 'Oplossing' de voorgestelde oplossing van EVAbits uitgelegd. De sectie 'Doel' behandelt de doelstellingen van de opdracht, inclusief de gemaakte afspraken en de scope van het project. Daarna worden in de sectie 'Stakeholders' de betrokken personen voorgesteld die een rol spelen in dit project. Tot slot worden in de sectie 'Beroepsproducten' de te ontwikkelen beroepsproducten gepresenteerd.
139
140## Probleem
141
142De EVAjig is geïmplementeerd door middel van een microcontroller. Een microcontroller is een klein circuit dat als een complete computer op een chip fungeert. Het bevat alle essentiële componenten die een computer nodig heeft om te werken, zoals een processor (de 'hersenen' van de computer), geheugen (om gegevens op te slaan), en invoer-/uitvoerpoorten (om te communiceren met andere apparaten). Microcontrollers worden vaak gebruikt in elektronische apparaten en systemen om specifieke taken uit te voeren.
143Wat microcontrollers bijzonder maakt, is hun vermogen om geprogrammeerd te worden voor specifieke taken. Dit betekent dat je de microcontroller instructies kunt geven om bepaalde acties uit te voeren op basis van de informatie die het ontvangt van sensoren of andere invoerapparaten. Dit programmeerbare karakter maakt het flexibel en toepasbaar in een breed scala van toepassingen, van eenvoudige huishoudelijke apparaten tot complexe industriële machines.
144
145Een nadeel van de huidige implementatie met een microcontroller is de beperkte flexibiliteit in communicatie, die vaak via externe chips wordt afgehandeld. Communicatieprotocollen werken op een hoge snelheid, vaak in de miljoenen bytes per second. Een microcontroller is niet snel genoeg om deze communicatie in software af te handelen en laat dit over aan een externe chip. Op de microcontroller is de processor vast aan de communicatie chipjes gekoppeld, zonder de mogelijkheid iets aan deze constructie te veranderen. Meestal is dit geen probleem voor de applicatie van een microcontroller, maar voor de EVAjig is dit een beperkend criteria door de brede schaal aan PCBA’s die moeten getest kunnen worden. 
146
147## Oplossing
148
149EVAbits heeft dit probleem herkent en heeft een opdracht begonnen om deze beperkingen te verhelpen. Het bedrijf heeft kennis in field-programmable gate arrays (FPGA). Een FPGA is een type circuit door de gebruiker kan worden geconfigureerd om specifieke taken uit te voeren. Deze configuratie gebeurt door middel van het programmeren van logische blokken en verbindingsroutes binnen de FPGA. Hierdoor kan een FPGA worden aangepast aan een breed scala van toepassingen, van eenvoudige logische functies tot complexe digitale systemen.
150
151De kern van een FPGA bestaat uit duizenden tot miljoenen programmeerbare logische blokken en een netwerk van interconnecties. Deze logische blokken kunnen worden geconfigureerd om elementaire functies zoals AND, OR en NOT-operaties uit te voeren. Door deze elementaire blokken te combineren kunnen complexere circuits gevormd worden. De interconnecties zorgen ervoor dat deze logische blokken op verschillende manieren met elkaar kunnen worden verbonden, afhankelijk van de vereisten van de toepassing.
152
153Een van de grootste voordelen van een FPGA is zijn flexibiliteit. Omdat het apparaat kan worden geherprogrammeerd, kunnen ontwerpers hun hardwareontwerpen aanpassen en optimaliseren zonder dat nieuwe fysieke chips nodig zijn. Daarnaast kunnen FPGA's meerdere taken parallel uitvoeren, wat resulteert in hoge verwerkingssnelheden. Dit maakt ze ideaal voor gebruik in toepassingen zoals signaalverwerking, communicatiesystemen en complexe rekenintensieve taken.
154
155In vergelijking met een microcontroller biedt een FPGA veel meer flexibiliteit. Waar een microcontroller vast gekoppeld is aan bepaalde communicatiechips, kan een FPGA deze functionaliteit emuleren door de hardware intern opnieuw te configureren. Dit betekent dat een FPGA verschillende soorten communicatieprotocollen kan nabootsen zonder de beperkingen van vooraf vastgestelde hardware. Hierdoor kan een FPGA meerdere functies en communicatieprotocollen tegelijkertijd afhandelen, wat ideaal is voor complexe en veelzijdige toepassingen. De configuraties binnen de FPGA worden beschreven in een Hardware Description Language (HDL), waarin signalen en primitieve logica’s worden gedefinieerd.
156
157Voor deze specifieke oplossing heeft de opdrachtgever gekozen voor de Efinix Titanium FPGA. Efinix staat bekend om hun snelle en energiezuinige FPGA's, wat hen een geschikte keuze maakt voor de vereisten van de EVAjig.
158
159## Doel
160
161Het doel van de opdrachtgever is om binnen twintig weken een proof-of-concept te implementeren voor de EVAjig, waarbij de huidige microcontroller gebaseerde implementatie wordt vergeleken met een nieuwe FPGA-gebaseerde oplossing. Deze proof-of-concept moet aantonen dat de FPGA-oplossing verbetering biedt in flexibiliteit en communicatiecapaciteit vergeleken met de huidige implementatie. 
162
163## Onderzoek
164
165De opdrachtgever vroeg om een onderzoek te doen over de FPGA. De concrete onderzoeksvraag is "_Wat zijn voor- en nadelen van communicatiemiddelen tussen FPGA en computer op basis van snelheid, betrouwbaarheid en kosten?_"
166
167De huidige implementatie op de microcontroller, de software op de microcontroller, hoort bijna onveranderd op de FPGA-implementatie te kunnen draaien. Wel moet de software met de FPGA kunnen praten, dit vereist een vast communicatieprotocol tussen de software en de firmware architectuur. Er zijn vele communicatieprotocollen beschikbaar met elk hun eigen use-case. In dit verslag is onderzoek gedaan naar welk protocol het beste geschikt is voor communicatie tussen de firmware en de software op basis van snelheid, flexibiliteit en kosten.
168
169## Stakeholders
170
171Bij de opdracht zijn meerdere personen betrokken, deze personen zijn als volgt
172
173| Naam                | Organisatie     | Rol                             |
174| ------------------- | --------------- | ------------------------------- |
175| Jan Stegenga        | EVAbits         | Stagebegeleiding                |
176| Erik Kallen         | EVAbits         | Stagebegeleiding                |
177| Kobus Bijker        | Hanzehogeschool | Stagebegeleiding  / Beoordelaar |
178| Nienke van der Spek | Hanzehogeschool | Beoordelaar Communicatie        |
179
180# Hoofdstuk Projectaanpak
181
182## Beroepsproducten
183
184Concrete beroepsproducten die van EVAbits werden gevraagd zijn:
185
186### Demonstratie Zephyr OS op Efinix' Sapphire Core
187
188Voor de huidige implementatie op de microcontroller maakt de opdrachtgever gebruik van Zephyr OS. Zephyr OS is een Real-Time Operating System (RTOS), speciaal ontworpen om applicaties te draaien waarbij het cruciaal is om binnen strikte tijdslimieten te reageren op gebeurtenissen. Dit type besturingssysteem wordt veel toegepast in embedded systemen, waar betrouwbare en tijdige reacties op externe signalen van essentieel belang zijn.
189
190Zephyr OS is een open-source RTOS dat is geoptimaliseerd voor gebruik op embedded apparaten. Het systeem is ontworpen om lichtgewicht, schaalbaar en veilig te zijn, waardoor het geschikt is voor een breed scala aan toepassingen, van simpele sensoren tot complexe industriële besturingssystemen.
191
192Efinix is een fabrikant van FPGA's en biedt een reeks handige core-modules aan. De Sapphire Core, een processor logicamodule geoptimaliseerd voor hun FPGA, maakt het mogelijk om minder primitieve operaties binnen Zephyr OS uit te voeren. Deze core maakt gebruik van de RISC-V architectuur. Om verwarring met Zephyr OS te voorkomen, wordt deze core ook wel aangeduid als de RISC-V core.
193
194#### Requirements {.unnumbered}
195
196- Maak een programma, die een LED laat knipperen op Zephyr OS, die op de RISC-V Core kan draaien met gebruik van de Efinix Handleidingen. Het aansturen werkt direct op de GPIO-bus van de RISC-V Core.
197
198### Demonstratie communicatie tussen de FPGA en een computer via EVAbus (RISC-V Core)
199
200EVAbits heeft hun eigen datastructuur bedacht voor het effectieve aansturen van de EVAjig, dit is geïmplementeerd met behulp van Google’s Protobuffers (Protobuf). Protobuf is een efficiënt en taalneutraal data-serialisatieformaat ontwikkeld door Google, het wordt gebruikt voor het uitwisselen van gestructureerde informatie tussen verschillende programma's en systemen. Verder maakt het gebruik van een eenvoudig en uitgebreid berichtformaat om data in een compacte, snelle en makkelijk te lezen manier te coderen en decoderen.
201
202#### Requirements {.unnumbered}
203
204- Maak een basic echo-programma op Zephyr OS, die een dummy-response terug geeft aan de computer.
205
206### Demonstratie communicatie tussen de FPGA en RISC-V Core (VHDL)
207
208Vervolgens moet er gecommuniceerd worden tussen de primitieve FPGA Core en de RISC-V Core om data zoals configuratie uit te wisselen. Dit moet van beide kanten ontwikkeld worden.
209
210#### Requirements {.unnumbered}
211
212- Maak een programma, dat een LED laat knipperen op Zephyr OS. Laat Zephyr OS communiceren met de FPGA-implementatie om de LED te laten knipperen.
213
214### Implementatie van een driver in Zephyr OS voor het aansturen van de FPGA
215
216Zephyr OS is modulair ontwikkeld om een brede schaal aan microcontrollers te ondersteunen, hiervoor zijn verschillende drivers beschikbaar. De FPGA hoort zelf geconfigureerd te worden, hiervoor is geen driver beschikbaar en deze dient zelf ontwikkeld te worden. EVAbits wil graag dat er een driver voor Zephyr OS wordt geschreven om makkelijk de FPGA aan te sturen. 
217
218#### Requirement {.unnumbered}
219
220- Met de standaard-interface van Zephyr OS moet een peripheral kunnen worden aangestuurd.
221- De driver moet de conventions van Zephyr volgen. 
222
223### Onderzoeksrapport communicatieprotocollen
224
225De communicatie tussen de FPGA en de RISC-V Core kan op verschillende manieren geïmplementeerd worden. Hiervoor zijn vele protocollen beschikbaar en toepasbaar. De opdrachtgever wil graag een vergelijking hebben tussen deze protocollen om beter te kunnen kiezen welke voor de EVAjig het meest geschikt is.
226
227#### Requirements
228
229- Het onderzoeksrapport wordt onderdeel van het verantwoordingsverslag.
230- Er moeten volgende protocollen vergeleken worden: SPI, \iic{}, UART, APB
231
232## Planning
233
234Er werd meegewerkt aan de Agile werkwijze van de opdrachtgever. Bij EVAbits vindt aan het begin van elke dag een 'to do'-meeting plaats, waarin wordt besproken wie welke taak gaat uitvoeren en of er problemen zijn. Aan het einde van de dag wordt een 'recap' gedaan, hierbij wordt gekeken naar welke werkzaamheden zijn uitgevoerd op deze dag.
235
236### Fases
237
238Aan het begin van de stage werden vijf fases gedefinieerd:
239
240| Fase         | Betekenis                                                                        |
241| ------------ | -------------------------------------------------------------------------------- |
242| Oriëntatie   | Opdracht onderzoeken, een planning maken en oriënteren in het bedrijf            |
243| Ontwerp      | Eerste ontwerpen voor de producten maken, details onderzoeken                    |
244| Onderzoek    | Communicatieprotocollen onderzoeken, werkwijze begrijpen                         |
245| Ontwikkeling | Producten ontwikkelen                                                            |
246| Afronding    | Producten en de stage afronden, verslag afronden en eindpresentatie voorbereiden |
247
248### Werkzaamheden
249
250In de eerste weken werd kennis gemaakt met de opdracht en de elementen erom heen. Vele dingen waren onbekend en niet behandeld gedurende de opleiding, deze onderwerpen moesten onderzocht worden. Dit is gedaan door uitgebreid onderzoek te voeren door middel van het internet en door gebruik te maken van de kennis binnen het team. Een onderwerp dat vooral veel aandacht opeiste is het concept _Zephyr OS_ en de tooling en ontwikkeling van de FPGA.
251
252| Week | Fase &nbsp;&nbsp; | Werkzaamheid                                                                    |
253| ---: | ----------------- | ------------------------------------------------------------------------------- |
254|    7 | Oriëntatie        | Stageplanning geschreven, Project gedefinieerd                                  |
255|    8 | Oriëntatie        | Onderzoek Zephyr OS                                                             |
256|    9 | Oriëntatie        | Onderzoek FPGA                                                                  |
257|   10 | Oriëntatie        | Onderzoek FPGA (Efinix Tooling)                                                 |
258|   11 | Ontwerp           | Combineren FPGA en Zephyr OS                                                    |
259|   12 | Ontwerp           | Communicatie FPGA en Computer (UART)                                            |
260|   13 | Ontwerp           | Onderzoek huidige implementatie IO-module en EVAbus                             |
261|   14 | Ontwerp           | Communicatie FPGA en Zephyr OS (UART) - Knipperende LED                         |
262|   15 | Ontwerp           | Onderzoek Zephyr OS Internals (hoe werken drivers? hoe worden deze geschreven?) |
263|   16 | Ontwerp           | Schrijven UART driver voor Zephyr OS                                            |
264|   17 | Ontwerp           | Implementatie EVAbus via UART                                                   |
265|   18 | Onderzoek         | Onderzoek Communicatieprotocollen                                               |
266|   19 | Onderzoek         | Onderzoek Communicatieprotocollen                                               |
267|   20 | Ontwikkeling      | Communicatie FPGA en Zephyr OS (APB)                                            |
268|   21 | Ontwikkeling      | Communicatie FPGA en Zephyr OS (SPI)                                            |
269|   22 | Ontwikkeling      | Communicatie FPGA en Zephyr OS (SPI)                                            |
270|      | Afronding         | Conceptverslag afmaken                                                          |
271|   23 | Afronding         | Communicatie FPGA en Zephyr OS (SPI)                                            |
272|   24 | Afronding         | Afmaken Verantwoordingsverslag                                                  |
273|   25 | Afronding         | Afmaken Verantwoordingsverslag en Eindpresentatie                               |
274|   26 | Afronding         | Eindpresentatie                                                                 |
275
276# Hoofdstuk Onderzoek
277
278Dit hoofdstuk gaat over het onderzoek: _Wat zijn voor- en nadelen van communicatiemiddelen tussen FPGA en computer op basis van snelheid, betrouwbaarheid en kosten?_
279
280Eerst worden verschillende protocollen toegelicht en vergeleken. Daaruit volgt een conclusie.
281
282## Protocollen
283
284In dit hoofdstuk worden verschillende protocollen toegelicht. Een protocol is een afspraak tussen apparaten hoe gecommuniceerd wordt. Een voorbeeld is een spreektaal, er is afgesproken hoe bepaalde dingen worden genoemd en dat er regels zijn in de taal. Als twee personen er niet over eens zijn, welke taal wordt gesproken of hoe zij de taal spreken, kunnen zij niet met elkaar communiceren. In communicatieprotocollen is gedefinieerd welke signalen (draadjes/lijnen) er zijn en hoe deze moeten worden aangestuurd; wanneer gaat stroom over welk signaal, hoeveel tijd zit er tussen, etc.
285
286Protocollen hebben meestal een clock-signaal die de snelheid van communicatie bepaald. Bijvoorbeeld wanneer het signaal stijgend is (oftewel van een lage waarde naar een hoge waarde gaat) worden de data signalen op een bepaalde manier uitgelezen. Als het signaal van een hoge waarde naar een lage waarde gaat, is het een vallend signaal.
287
288In de volgende beschrijvingen worden VDD en GND niet genoemd of meegeteld. VDD is de stroomvoering van desbetreffende chip en GND is de aarding van de chip.
289
290Vele protocollen werken naar het bus- of master-slave principe. Bij een bus zijn meerdere apparaten, zoals chips en processoren, parallel aan de signalen aangesloten. Er is één master gedefinieerd, die controle heeft over het gebeuren op de bus en één of meerdere slaves die, op aanvraag van de master, kunnen lezen van de bus of schrijven op de bus. Een aangesloten chip zou voortaan *node* genoemd worden.
291
292### Inter-Integrated-Circuit Protocol
293
294Inter-Integrated-Circuit (\iic{}) is één van de meest makkelijke protocollen. \iic{} is ontwikkeld in 1982 door Philips Semiconductor. [@i2c-ti, chap. 1.1] \iic{} is een bus-systeem, die minstens één master en één slave eist. \iic{} bestaat uit twee signalen, één voor de data die moet worden verstuurd en één voor de clock. [@i2c-ti, chap. 2.1]
295
296Elke node heeft een adres waarop het wordt aangestuurd. Er is alleen communicatie mogelijk tussen de master en een slave, het is niet mogelijk dat slaves onderling kunnen communiceren. Als standaard is 100kbit/s gedefinieerd als snelheid van communicatie, maar \iic{} is compatibel tot een snelheid van 3,4Mbit/s genoemd _high speed mode_. [@i2c-ti, chap. 1.2]
297
298#### Bedrading {.unnumbered}
299
300| Naam               | Breedte | Functie                                              |
301| ------------------ | ------- | ---------------------------------------------------- |
302| Serial Clock (SCL) | 1       | Dit is de clock voor de communicatie (master-driven) |
303| Serial Data (SDA)  | 1       | Over deze lijn worden command's of data gestuurd     |
304
305#### Voordelen {.unnumbered}
306
307\iic{} heeft een eenvoudige bedrading en is makkelijker en goedkoper te implementeren. Ook is hot-swapping met \iic{} mogelijk, dat betekent dat slaves verwijderd of toegevoegd kunnen worden aan de bus zonder dat de bus uitgeschakeld of herstart moet worden. [@i2c-hotswap]
308
309#### Nadelen {.unnumbered}
310
311Doordat er maar één datalijn is, is \iic{} half-duplex. Half-duplex houdt in dat er of geschreven kan worden door de master of door een slave, er kan dus niet tegelijk gecommuniceerd worden. [@i2c-ti, chap. 2.1] Ook is \iic{} relatief langzaam in vergelijking met bv. SPI. [@i2c-ti, chap. 1.2; @spi-silabs]
312
313### Universal Asynchronous Receiver/Transmitter
314
315Universal Asynchronous Receiver/Transmitter (UART) is een asynchroon, full-duplex protocol, dus er kan onafhankelijk tegelijk geschreven en gelezen worden. In tegenstelling tot de bovenstaande protocollen is UART geen bus-protocol en werkt deze alleen tussen twee nodes (point-to-point). UART heeft twee datalijnen: RX en TX, RX staat voor _Receive Text_ en TX staat voor _Transmit Text_ en heeft geen clock. Er is niet gedefinieerd welke richting RX of TX data verstuurd door evenwaardige aard van nodes. Soms moet RX en TX gedraaid worden in de bedrading (één lijn van RX naar TX en één lijn van TX naar RX). Door beide nodes wordt een clock-snelheid gedefinieerd, deze wordt _Baud_ genoemd. Hierbij wordt de data simpelweg geschreven met de gedefinieerde snelheid inclusief een start- en stop-bit en optioneel een parity-bit voor fout-detectie. 
316
317#### Bedrading {.unnumbered}
318
319| Naam | Breedte | Functie                                        |
320| ---- | ------- | ---------------------------------------------- |
321| RX   | 1       | Op deze lijn wordt data verzonden of ontvangen |
322| TX   | 1       | Op deze lijn wordt data verzonden of ontvangen |
323
324#### Voordelen {.unnumbered}
325
326Zoals bij \iic{} heeft UART een eenvoudige bedrading, het is dus goedkoop te implementeren. Doordat het asynchroon is zijn beide nodes evenwaardig en is het niet vereist om één node als master te definiëren.
327
328#### Nadelen {.unnumbered}
329
330Doordat UART een point-to-point connectie is, is het niet geschikt voor meerdere nodes. Als er gecommuniceerd moet worden naar meerdere nodes moeten er onderling UART-signals geplaatst worden. Door de asynchrone aard van UART, zou UART onstabiel worden bij hoge snelheden en dit resulteert in een verlaagde maximale snelheid. 
331
332### Serial Peripheral Interface
333
334Het Serial Peripheral Interface (SPI) protocol is een bus-protocol dat, in vergelijking met zowel Inter-Integrated Circuit (I2C) als Universal Asynchronous Receiver/Transmitter (UART), complexer en flexibeler is. SPI maakt gebruik van drie hoofd-signalen: een clock, geleverd door de master, een MOSI-signaal (Master Out, Slave In) om data naar een slave te sturen, en een MISO-signaal (Master In, Slave Out) om data vanuit een slave naar de master te sturen. Daarnaast is er een optionele Chip-Select lijn om eenvoudig een specifieke node te selecteren.[@spi-ti, chap. 2.2]
335
336#### Bedrading {.unnumbered}
337
338| Naam                            | Breedte       | Functie                                                                      |
339| ------------------------------- | ------------- | ---------------------------------------------------------------------------- |
340| Serial Clock (SCLK)             | 1             | Dit is de clock voor de communicatie (master-driven)                         |
341| Master-Out Slave-In (MOSI)      | 1             | Data wordt verstuurd door de master naar de slaves                           |
342| Master-In Slave-Out (MISO)      | 1             | Data wordt verstuurd door een slave naar de master                           |
343| Chip Select (\textoverline{CS}) | n peripherals | Naar elke peripheral gaat een clip-select om te bepalen, wie geadresseerd is |
344
345#### Voordelen {.unnumbered}
346
347Een groot voordeel van SPI is de snelheid. SPI is niet gebonden aan een gedefinieerde snelheid en kan zo snel mogelijk communiceren. Ook is SPI full-duplex, dus is het zeer efficiënt bij een hoeveelheid data in beide richtingen. De implementatie is heel flexibel en geeft vrijheid voor verschillende toepassingen. Doordat er een gezamenlijke clock is, is SPI betrouwbaar bij hoge snelheden ten opzichte van UART.
348
349#### Nadelen {.unnumbered}
350
351Doordat SPI full-duplex ondersteunt, is de bedrading complexer dan bij \iic{} of UART, dit is nadelig omdat het implementeren moeilijker en duurder is. SPI vereist vier lijnen, niet slechts twee lijnen zoals bij de eerder genoemde protocollen. Ook ondersteund SPI maar één master, die het clock-signaal maakt, daardoor is het moeilijk om verschillende peripherals aan te sluiten. \iic{} ondersteund een bus-systeem, dus er kan een reeks nodes aangesloten worden zonder de complexiteit te moeten verhogen; SPI maakt gebruikt van de chip-select lijn, waardoor het niet mogelijk is een simpel bus te maken.
352
353Ten opzichte van UART heeft SPI geen standaard manier om fouten te detecteren, dit moet door de ontwikkelaar handmatig geïmplementeerd worden, wat de complexiteit kan verhogen.
354
355### Advanced Peripheral Bus
356
357De Advanced Peripheral Bus (APB) is een onderdeel van de Advanced Microcontroller Bus Architecture (AMBA). AMBA is een specificatie voor communicatie tussen peripherals. APB is gedesignd voor lage datahoeveelheden en een simpel interface. [@apb-arm chap. 1.1] ABP is een synchrone, full-duplex communicatieprotocol.
358
359#### Bedrading {.unnumbered}
360
361| Naam [@apb-arm table 2.1] | Breedte    | Functie                                                                                                                                                     |
362| ------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
363| PCLK                      | 1          | Dit is de clock voor de communicatie, kan apart gegenereed worden                                                                                           |
364| \textoverline{PRESETn}    | 1          | Hiermee kan elke peripheral gereset worden naar een bekende staat                                                                                           |
365| PADDR                     | adres      | Aansturing adresbus                                                                                                                                         |
366| PPROT                     | 3          | Beschermingstype, in hoeverre de data moet beschermd zijn                                                                                                   |
367| PNSE                      | 1          | Uitbreiding naar beschermingstype                                                                                                                           |
368| PSELx                     | 1          | De aanvrager genereert een PSELx-signaal voor elke afhandelaar. PSELx geeft aan dat de afhandelaar is geselecteerd en dat een gegevensoverdracht vereist is |
369| PENABLE                   | 1          | PENABLE geeft de tweede en volgende cycli van een communicatie aan                                                                                          |
370| PWRITE                    | 1          | PWRITE geeft de schrijfrichting aan                                                                                                                         |
371| PWDATA                    | data       | Geeft de data aan, die wordt geschreven                                                                                                                     |
372| PSTRB                     | data/8     | PSTRB geeft aan welke bytelanes moeten worden bijgewerkt tijdens een schrijftransactie. Er is één schrijfstrobe voor elke 8 bits van de schrijfgegevensbus  |
373| PREADY                    | 1          | Gereed. PREADY wordt gebruikt om communicatie door de afhandelaar te verlengen.                                                                             |
374| PRDATA                    | data       | In deze bus wordt data gelezen                                                                                                                              |
375| PSLVERR                   | 0-1        | Deze geeft aan, als er een fout is gevonden                                                                                                                 |
376| PWAKEUP                   | 1          | Deze geeft aan, dat er iets wordt gedaan op de bus                                                                                                          |
377| PAUSER                    | u_request  | Gebruikersaanvraagattribuut                                                                                                                                 |
378| PWUSER                    | u_data     | Gebruikersschrijfgegevensattribuut                                                                                                                          |
379| PRUSER                    | u_data     | Gebruikersleesgegevensattribuut                                                                                                                             |
380| PBUSER                    | u_response | Gebruikersreactieattribuut                                                                                                                                  |
381
382#### Voordelen {.unnumbered}
383
384APB heeft meerdere voordelen ten opzichte van bovengenoemde protocollen. APB ondersteunt parallele communicatie, er kunnen dus meerdere bits tegelijk worden verstuurd. De andere protocollen zijn puur serieel, dat betekent dat data bit-per-bit wordt verstuurd. Door de adres-architectuur is het eenvoudig om verschillende peripherals aan te spreken aan de bus, met SPI moet er een chip-select naar elke peripheral leggen om de zelfde uitkomst te behalen, en bij \iic{} zou dit handmatig moeten worden geïmplementeerd.   
385
386#### Nadelen {.unnumbered}
387
388Ten opzichte van \iic{}, SPI en UART is APB erg complex. Doordat parallel data wordt verstuurd, moeten er vele lijnen worden aangesloten. Daardoor is APB meer geschikt voor een bus intern, in bijvoorbeeld de FPGA, dan voor communicatie extern van chip naar chip. En afsluitend is APB veel energie nodig, door de hoeveelheid lijnen met een lagere kloksnelheid en dus een lagere datasnelheid.
389
390Een nadeel specifiek voor de Efinix FPGA is, dat de APB slecht gedocumenteerd staat en lastig te implementeren is. Verder is er ook niet veel informatie beschikbaar om een driver te ontwikkelen. Tijdens het onderzoek is het daardoor dus ook niet gelukt APB te draaien op de FPGA van de opdrachtgever.
391
392## Toepassing op de EVAjig
393
394\tikzset{
395    block/.style={rectangle, rounded corners, minimum width=2cm, minimum height=1cm, text centered, draw=black, fill=green!30},
396    line/.style={draw, -{Latex[length=3mm,width=2mm]}}
397}
398
399\begin{tikzpicture}[align=center,node distance=2cm]
400
401% Nodes
402\node (computer) [block] {Computer};
403\node (fpga) [block, below of=computer] {Soft Core op FPGA};
404\node (fpga_hardware) [block, below of=fpga] {FPGA Hardware};
405\node (pcb0) [block, below right=1cm and 2cm of fpga_hardware] {PCB};
406\node (pcb1) [block, right=2cm of fpga_hardware] {PCB};
407\node (pcb2) [block, above right=1cm and 2cm of fpga_hardware] {PCB};
408
409% Arrows
410\draw [line] (computer) -- node[right]{via USB} (fpga);
411\draw [line] (fpga) -- node[right]{via SPI} (fpga_hardware);
412\draw [line] (fpga_hardware) -- node[above]{via SPI} (pcb0);
413\draw [line] (fpga_hardware) -- node[above]{via \iic{}} (pcb1);
414\draw [line] (fpga_hardware) -- node[below]{via UART} (pcb2);
415
416\end{tikzpicture}
417
418In de bovenstaande graaf wordt de communicatiestructuur binnen het systeem geïllustreerd. Het systeem omvat verschillende componenten die onderling communiceren om gegevens en commando's uit te wisselen. De componenten en communicatiepaden zijn als volgt:
419
420- Computer: Dit fungeert als de bron van gegevens of commando's.
421- Soft Core op FPGA: Dit is een verwerkingsunit die op een FPGA draait.
422- FPGA Hardware: Fysieke hardwarecomponenten die worden gesimuleerd door de FPGA.
423
424Verschillende PCB's worden getoond als bestemmingen voor gegevens of commando's vanuit de FPGA Hardware:
425
426- PCB0: Ontvangt gegevens via het SPI (Serial Peripheral Interface) protocol.
427- PCB1: Ontvangt gegevens via het I2C protocol.
428- PCB2: Ontvangt gegevens via het UART protocol.
429
430De communicatiepaden worden als volgt weergegeven:
431
432- Computer naar Soft Core op FPGA: Gegevens of commando's worden via USB verzonden.
433- Soft Core op FPGA naar FPGA Hardware: Communicatie vindt plaats via het SPI protocol.
434- FPGA Hardware naar PCBs: De FPGA Hardware communiceert met de verschillende PCB's via hun respectievelijke communicatieprotocollen.
435
436Deze diagram illustreert de complexe communicatiestructuur binnen het systeem, waarbij verschillende protocollen worden gebruikt om de juiste overdracht van gegevens te waarborgen.
437
438## Vergelijking van SPI, I2C en UART
439
440Hieronder is een tabel opgenomen waarin de drie communicatieprotocollen SPI, I2C en UART worden vergeleken op verschillende criteria:
441
442\small
443| Criteria &nbsp;&nbsp; | SPI (Serial Peripheral Interface)                | I2C (Inter-Integrated Circuit)                  | UART (Universal Asynchronous Receiver-Transmitter)        | APB (Advanced Peripheral Bus)                   |
444| --------------------- | ------------------------------------------------ | ----------------------------------------------- | --------------------------------------------------------- | ----------------------------------------------- |
445| **Protocol Type**     | Synchroon or Asynchroon                          | Synchroon                                       | Asynchroon                                                | Asynchroon, Parallel                            |
446| **Complexiteit**      | 3 (MOSI, MISO, SCK) + optional CS                | 2 (SDA, SCL)                                    | 2 (TX, RX)                                                | Hoog                                            |
447| **Clock Signal**      | Ja (master-driven)                               | Ja (master-driven)                              | Nee                                                       | Ja (extern)                                     |
448| **Data Snelheid**     | tot tientallen Mbps                              | tot 3.4 Mbps                                    | max. ~1 Mbps voor standaard UART                          | tot enkele tientallen Mbps                      |
449| **Multi-Master**      | Nee                                              | Ja                                              | Nee                                                       | Nee                                             |
450| **Multi-Slave**       | Ja (met aparte CS lijnen per slave)              | Ja (adressering)                                | Nee (point-to-point)                                      | Ja                                              |
451| **Foutdetectie**      | Geen ingebouwde foutdetectie                     | Basis (ACK/NACK)                                | Basis (pariteitsbit)                                      | Ja (optioneel)                                  |
452| **Bus**               | Nee                                              | Ja                                              | Nee                                                       | Ja                                              |
453| **Kosten**            | Matig (extra lijnen en complexiteit)             | Laag (weinig lijnen, eenvoudiger)               | Laag (weinig lijnen, eenvoudig)                           | Hoog (vele datalijnen)                          |
454| **Energiekosten**     | Hoog (door continue clock)                       | Laag tot matig (lage complexiteit, bus-systeem) | Laag (eenvoudig en lage snelheid)                         | Hoog (parallele communicatie)                   |
455| **Geschikt voor**     | Hoge snelheid, korte afstand, en meerdere slaves | Lange afstand, meerdere masters/slaves          | Eenvoudige, lange afstand, en point-to-point verbindingen | Korte afstand, veel data, onderling peripherals |
456\normalsize
457
458### Conclusie
459
460Tijdens de stage is uitgebreid onderzoek uitgevoerd naar de voor- en nadelen van verschillende communicatieprotocollen. Dit protocol zou dienen als communicatie tussen FPGA en de soft-core op de FPGA op de EVAjig. Onderzocht zijn de protocollen \iic{}, UART en SPI, met elk verschillende kenmerken en beperkingen.
461
462\iic{} heeft een eenvoudige bedrading en is flexibel met de mogelijkheid om meerdere peripherals aan een bus aan te sluiten. Wel is \iic{} beperkt door een lagere snelheid en half-duplex.
463
464UART is ook eenvoudig te bedraden en flexibel te gebruiken, wel is UART ongeschikt voor het communiceren met meerdere peripherals. Het is een asynchroon protocol, wat het moeilijk maakt om data op een hoge snelheid te versturen.
465
466SPI bied wel een hoge snelheid met full-duplex communicatie, maar wel met de consequentie dat de complexiteit relatief hoog is. Ook is SPI niet geschikt voor bus-systemen, doordat er een chip-select lijn naar elke node moet gaan. 
467
468APB is het meest complexe protocol, wel is deze goed geschikt voor de FPGA door middel van snelheid en flexibiliteit. In het onderzoek is het protocol geanalyseerd en geïmplementeerd, maar door een gebrek aan documentatie is het helaas niet gelukt om deze verder uit te voeren. In overleg met de opdrachtgever is een alternatief gevonden. 
469
470Op basis van dit onderzoek is theoretisch bekeken, welk protocol het meest geschikt is voor de EVAjig. Gezien dat het gekozen protocol de bottleneck zou zijn is snelheid een prioriteit. Ook is een bus-mogelijkheid niet vereist, omdat er slechts tussen twee nodes (de FPGA en de soft-core) gecommuniceerd wordt. SPI blijkt het meest geschikte communicatieprotocol te zijn voor de EVAjig, het biedt de juiste snelheid en flexibiliteit. Doordat alles op de FPGA draait en door de Hardware Description Language wordt beschreven is complexiteit hierbij geen probleem.
471
472### Aanbevelingen
473
474Op basis van de conclusies van dit onderzoek, zijn er volgende aanbevelingen opgesteld om de communicatie op de EVAjig te optimaliseren:
475
476- **Integratie van SPI in de FPGA-architectuur**: Het wordt aanbevolen om de FPGA te ontwikkelen met het SPI-protocol, hierbij is het eenvoudig om de bestaande hardware clock te gebruiken en dus de FPGA-kant de master te maken. Dit biedt maximale flexibiliteit in communicatie met verschillende apparaten en systemen.
477- **Ontwikkeling van een SPI-driver voor Zephyr OS**: Efinix biedt geen SPI-driver aan voor Zephyr OS. Om de integratie van SPI eenvoudig te laten verlopen, moet er een aangepaste SPI-driver worden ontwikkeld voor Zephyr OS. Op basis van de geleverde driver van Efinix en de handleidingen kan de driver voor Zephyr OS ontwikkelt worden. Het is belangrijk om de driver goed te documenteren, zowel voor de gebruiker, maar ook voor de ontwikkelaar om het gebruik eenvoudig te maken.
478- **Optimalisatie van communicatieprotocol**: Door de aard van de FPGA, kan er een hoge datasnelheid toegepast worden. Er moet een test gemaakt worden met meerderde kloksnelheden, om de meest geschikte snelheid te vinden. De snelheid bepaald ook de betrouwbaarheid van de communicatie.
479- **Optimalisatie door APB**: APB blijkt een goed geschikt protocol te zijn voor de FPGA, wel is er nog een gebrek aan documentatie in de Efinix' handleidingen. Er wordt aanbevolen om dieper onderzoek naar de werkwijze te doen van APB in plaats van SPI.
480
481Door deze aanbevelingen kan EVAbits de functionaliteit van de EVAjig verbeteren, als er gebruik gemaakt wordt van een FPGA.
482
483# Hoofdstuk HBO-I competenties
484
485Tijdens de stageperiode zijn er planningen gemaakt om de werkzaamheden gestructureerd aan te pakken. Dit hoofdstuk beschrijft hoe de HBO-I competenties zijn toegepast en ontwikkeld gedurende deze periode.
486
487## Onderzoeken
488
489In de oriëntatie- en onderzoekfase werd uitgebreid onderzoek verricht naar de meest geschikte communicatieprotocollen voor de toepassing op de FPGA. Dit omvatte het vergelijken van de snelheid, betrouwbaarheid en kosten van verschillende protocollen zoals SPI, UART, \iic{} en APB. Daarnaast werd onderzocht hoe de bestaande microcontroller-gebaseerde implementatie kon worden overgezet naar een FPGA-implementatie.
490
491## Projectmatig Werken
492
493Bij de opdrachtgever is een agile werkwijze gebruikt, waarbij iteratieve sessies hielpen om de status in de gaten te houden en aan te passen waar nodig. Aan het begin van de stage werd een duidelijke fasering gedefinieerd, die als leidraad diende voor het gehele project. Dit gestructureerde proces zorgde voor een overzichtelijke en efficiënte werkwijze, waarbij elke fase van het project zorgvuldig werd gepland en uitgevoerd. Bij het onderzoek zijn problemen opgekomen betreffend APB, deze problemen zijn projectmatig en in overleg met de opdrachtgever opgelost.
494
495## Analyseren
496
497Een grondige analyse van de huidige implementatie van het systeem bracht diverse verbeterpunten aan het licht. Deze analyse omvatte het bekijken van de beperkingen en de mogelijkheden voor optimalisatie van de bestaande microcontroller-oplossing. De resultaten van deze analyse werden gebruikt om de nieuwe FPGA-implementatie te verbeteren, met als doel de functionaliteit en efficiëntie te verhogen. De protocollen werden geanalyseerd om het meest geschikte protocol te gebruiken.
498
499## Ontwerpen
500
501Op basis van de uitslag uit de analysefase werden nieuwe implementaties ontworpen voor de FPGA. Het ontwerpen van deze nieuwe configuraties vereiste een diepgaand begrip van de FPGA-architectuur en de specificaties van de te gebruiken communicatieprotocollen. De ontwerpactiviteiten zorgden ervoor dat de nieuwe oplossing zowel flexibel als efficiënt was, met verbeterde communicatiecapaciteiten.
502
503## Realiseren
504
505De nieuwe ontwerpen werden vervolgens geïmplementeerd en getest op de FPGA om de functionaliteit te verifiëren. Deze testfase was cruciaal om te bevestigen dat de theoretische ontwerpen in de praktijk werkten zoals gepland. Eventuele problemen die tijdens de tests naar voren kwamen, werden geanalyseerd en opgelost.
506
507## Adviseren
508
509Op basis van de nieuwe implementatie werden aanbevelingen gedaan voor verdere optimalisaties en verbeterpunten. Deze aanbevelingen omvatten suggesties voor toekomstige verbeteringen en uitbreidingen van de EVAjig. Door deze aanbevelingen kon EVAbits verder bouwen op de behaalde resultaten en de ontwikkeling van hun product continu verbeteren.
510
511## Schriftelijke Vaardigheden
512
513Gedurende de stage werden diverse documentaties opgesteld, waaronder technische documenten en dit verantwoordingsverslag. Deze documenten dienden als waardevolle hulpmiddelen voor zowel de opdrachtgever als de Hanze. De geschreven stukken werden zorgvuldig samengesteld om de voortgang, bevindingen en aanbevelingen van het project helder en gedetailleerd weer te geven. Deze schriftelijke vaardigheden waren essentieel voor de communicatie en documentatie van het project.
514
515# Hoofdstuk Lessons Learned
516
517Tijdens mijn stage bij EVAbits heb ik veel geleerd over verschillende technieken en professionele en persoonlijke ontwikkeling. Ik zou in dit hoofdstuk dieper op deze punten ingaan.
518
519## Technische Vaardigheden
520
521- **Diepgaande kennis van FPGA's**
522  Gedurende mijn stage heb ik uitgebreide ervaring opgedaan met FPGA's, met name de RISC-V Core van Efinix. Het ontwikkelen van schema's met gebruik van een Hardware Description Language was een uitdaging zowel het tooling om de FPGA heen.
523
524- **Real-Time Operating Systems (RTOS)**
525  Het werken met Zephyr OS heeft me waardevolle ervaring gegeven in het gebruik van een RTOS voor embedded systemen. Ik heb geleerd hoe ik effectieve drivers kan schrijven en hoe ik de voordelen van een RTOS kan benutten om efficiënte programma's te schrijven.
526
527- **Communicatieprotocollen**
528  De vergelijking van verschillende communicatieprotocollen (SPI, \iic{}, UART) en de implementatie van de protocollen hebben mij veel over het innerlijk van computercommunicatie laten zien. Ik heb geleerd hoe ik de voor- en nadelen van elk protocol kan vergelijken om de beste oplossing voor een specifieke toepassing te kiezen.
529
530## Professionele Ontwikkeling
531
532- **Problemen oplossen**
533  In het onderzoek ben ik vast gelopen bij het implementeren van APB. Ik heb geleerd om daarmee om te gaan en naar alternatieven te zoeken om dit probleem te verhelpen.
534
535- **Onderzoek en Analyse**
536  Het onderzoeken en analyseren van de communicatieprotocollen heeft de vaardigheid versterkt. Ik heb geleerd een bestaande implementatie te begrijpen en te analyseren om deze theoretisch toe te passen op een andere casus.
537
538- **Documentatie en Schriftelijke Vaardigheden**
539  Het opstellen van documentatie en rapporten, zoals dit stageverslag, heeft mijn schriftelijke vaardigheden verbeterd. Ik heb geleerd hoe ik technische informatie duidelijk en gestructureerd kan presenteren, wat essentieel is voor het delen van kennis.
540
541## Reflectie en Toekomstige Verbeteringen
542
543Het werken binnen de ICT is nieuw geweest en verschilt erg van eerder gedaan werk. Ik heb belangrijke contacten gemaakt en dat er een baan is aangeboden bevestigd mijn plek in de Embedded Engineering-sector.
544
545Kortom, de stage bij EVAbits was een waardevolle leerervaring die me goed heeft voorbereid op mijn toekomstige carrière. Ik ben dankbaar voor de kansen die ik heb gekregen en kijk uit naar de uitdagingen en kansen die voor me liggen.
546
547# Literatuurlijst