Voeg FPGA toe aan de dev boards van Arduino of Raspberry Pi

Er heeft een revolutie plaatsgevonden in de manier waarop ingebedde systemen worden ontwikkeld, ook dankzij de Arduino en Raspberry Pi development boards. Vroeger begon de ontwikkeling van een ingebed systeem bij de hardware. De projectstappen zagen er over het algemeen ongeveer zo uit:

  1. Systeemvereisten inventariseren, inclusief een inschatting van de benodigde processorsnelheid en de I/O-vereisten.
  2. Passende microcontroller of microprocessor selecteren met het vereiste van vermogen en prestaties, binnen het budget.
  3. Hardware-prototype aansluiten.
  4. Hardware-prototype debuggen. Indien nodig een stukje drivercode schijven.
  5. Als de hardware draait, code uitvoeren.
  6. Code debuggen.
  7. En... klaar voor de verkoop.

Tegenwoordig is dit proces niet meer zo straight-forward. Ten eerste zijn er letterlijk duizenden processors en microcontrollers om uit te kiezen, van talloze leveranciers. Het is onmogelijk om al die alternatieven op een rijtje te zetten.

En ten tweede is het aansluiten van een hardware-prototype een groot probleem geworden na de overstap op opbouwmontage – ongeveer 30 jaar geleden. Handmatige bedradingen en wire-wrapping, de meest voorkomende techniek om prototypes op te zetten in de jaren 70, was het vakwerk van de elektrotechnologie. Tegenwoordig is het een zeldzame bezigheid. Je moet er echt een printplaat voor ontwerpen, maken en dan de aansluitingen solderen. Wie verspilt daar nog tijd aan als er betere (en snellere en goedkopere) alternatieven beschikbaar zijn?

Het was een gat in de markt voor dev boards die de stappen één tot vier konden consolideren. De meeste bekende dev boards die momenteel op de markt zijn, zijn de Arduino Uno (en de talloze variaties hierop) en natuurlijk Raspberry Pi. Het meest recente model van Raspberry Pi is de Raspberry Pi 3 Model B+. Hoewel Arduino en Raspberry Pi vaak samen worden genoemd, lijken de dev boards totaal niet op elkaar.

Arduino staat voor een bedrijf dat zich richt op open source hardware & software, maar het is ook een project van de open source gebruikerscommunity die de Arduino dev boards ontwerpt en maakt. Verder is Arduino een geïntegreerde ontwikkelomgeving – meestal afgekort tot IDE voor het Engelse 'integrated development environment. En tot slot verwijst Arduino ook naar het eigenlijke board van de microcontroller. De naam Arduino komt van een bar in het Italiaanse Ivrea, waar de originele oprichters van het Arduino-project vroeger met elkaar afspraken.

Afbeelding 1: De Arduino Uno is een instapmodel dev board op basis van een 8-bit Atmel microcontroller met diverse eenvoudige I/O-mogelijkheden. Dit board is geschikt voor de ontwikkeling van ingebedde ontwerpen die geen hoge performance vereisen. (Afbeeldingsbron: Arduino)

De eerste development boards van Arduino waren gebaseerd op Atmel AVR microcontrollers. De code werd ontwikkeld met de Arduino IDE, die vervolgens de code compileerde en downloadde naar het flash-geheugen van de ingebouwde microcontroller. De Arduino IDE ondersteunt de programmeertalen C en C++ met speciale regels voor de codestructuur, die uniek zijn voor de Arduino IDE. Omdat het Arduino-concept enorm is gegroeid, zijn er nieuwe Arduino-varianten ontwikkeld, inclusief microcontrollers op basis van de 32-bits Arm® Cortex®-M0 voor meer performance (afbeelding 1).

De Arduino-boards hebben alleen simpele I/O-mogelijkheden, omdat ze ontworpen zijn als instapmodel. Het zijn microprocessor-boards voor de besturing van relatief eenvoudige ingebedde systemen. De dev boards van Arduino Uno hebben een paar stiftlijsten van 0,1" met eenvoudige digitale en analoge input-pinnen, een USB-poort en een paar ingebouwde LED's om te knipperen. Meer niet. De I/O-pinnen vallen onder de softwarebesturing, dus daar kunnen verder geen krachtige prestaties worden verwacht.

Een niveau hoger: Raspberry Pi

Als u krachtigere prestaties nodig heeft voor uw ingebedde systeem, levert het dev board Raspberry Pi 3 B+ behoorlijk wat meer dan de Arduino (afbeelding 2). De belangrijkste specs op een rij:

  • Broadcom BCM2837B0, Cortex®-A53 (Arm®v8) 64-bits SoC @ 1,4 GHz
  • 1 GB LPDDR2 SDRAM
  • 2,4 GHz en 5 GHz IEEE 802.11.b/g/n/ac draadloos LAN, Bluetooth 4.2, BLE
  • Gigabit Ethernet via USB 2.0 (met maximaal 300 Mbps)
  • Uitgebreide 40-pins GPIO stiftlijst
  • Full-size HDMI
  • Vier USB 2.0-poorten
  • Uitgebreide 40-pins GPIO stiftlijst
  • CSI-camera-aansluiting voor Raspberry Pi-camera
  • DSI DisplayPort om een Raspberry Pi-display met touchscreen aan te sluiten
  • 4-polige stereo-uitgang en composiet video-poort
  • Micro-SD-poort om een besturingssysteem te laden en gegevens op te slaan
  • 5 V/2,5 A DC vermogensingang
  • Ondersteuning voor Power over Ethernet (PoE), vereist aparte PoE HAT

Afbeelding 2: Het Raspberry Pi 3 Model B+ is uitstekend geschikt als ontwikkelingsplatform voor embedded hardware met quad core, 64-bits Arm toepassingsprocessor, 1 Gbyte SDRAM en uitgebreide I/O-capaciteiten. (Afbeeldingsbron: Raspberry Pi)

Met zoveel processorkracht, geheugen en I/O-opties is veel mogelijk. De Raspberry Pi 3 B+ dev boards draaien op Linux en er is een gigantische community voor support. Gezien de lage prijs is de Raspberry Pi 3 Model B+ een uitstekend hardwareplatform voor uiteenlopende embedded ontwikkelingsprojecten.

En wat als snelheid belangrijk wordt?

Als de Raspberry Pi 3 Model B+ voldoet aan alle ontwerpvereisten voor uw ingebedde systeem, bent u klaar. Dit is een extreem goed dev board voor een lage prijs, dus waarom zou verder zoeken? Maar wat als uw ingebedde systeem speciale I/O-capaciteiten vereist, die de toch al indrukwekkende mogelijkheden van de Raspberry Pi Model 3 B+ te boven gaan?

Het antwoord is FPGA's, field-programmable gate arrays met extra hoge performance. Hiermee kunt u uitstekend nieuwe soorten high-speed interfaces definiëren, alleen maar via de software. Extra bedrading is dus overbodig. Bovendien zijn FPGA-mogelijkheden ingebouwd verkrijgbaar in de vormfactor van Raspberry Pi Model 2, met het dev board TE0726-03M van Trenz Electronic: de ZynqBerry (Afbeelding 3).

Afbeelding 3: het Trenz TE0726-03M ZynqBerry dev board met Xilinx Zynq Z-7010 SoC in een Raspberry Pi Model 2 vormfactor, voor ingebedde designs die om meer I/O-capaciteit vragen. (Afbeeldingsbron: Trenz Electronic)

De ZynqBerry is gebaseerd op een Xilinx Zynq Z-7010 SoC. Die combineert een dual core Arm® Cortex®-A9 32-bits microprocessor met een FPGA en kan hierdoor veel meer veeleisende taken verwerken dan een alleenstaande processor (of zelfs vier processors bij 1,4 GHz). Voor het programmeren van de Trenz ZynqBerry kunt u de downloadbare Xilinx Vivado toolsuite gebruiken, die een IDE bevat voor de software (processor) en hardware (FPGA) van de Zynq SoC.

Heeft u een voorkeur voor de vormfactor van Arduino?

Maar wat moet u kiezen als u liever werkt met de vormfactor van Arduino? Ook dan heeft Trenz Electronic een goed dev board in het assortiment, met de TE0723-03M ArduZynq (afbeelding 4).

Afbeelding 4: de TE0723-03M ArduZynq van Trenz Electronic past een Xilinx Zynq SoC toe op de vormfactor van een Arduino dev board, voor Arduino-projecten die meer rekenkracht en I/O-prestaties vereisten. (Afbeeldingsbron: Trenz Electronic)

Het programmeren van de Trenz ArduZynq werkt net als bij de Trenz ZynqBerry, met de Xilinx Vivado toolsuite die als download beschikbaar is.

Met boards als de Arduino Uno of de Raspberry Pi worden veel keuzes in de ontwikkeling van ingebedde systemen eenvoudiger, maar ze kunnen niet altijd voldoen aan alle uitdagingen voor embedded ontwerpen. Als uw vereisten de capaciteiten van deze dev boards echter te boven gaan, betekent dat niet dat u ook hun vormfactor verliest. U hoeft alleen maar wat FPGA toe te voegen.

Achtergrondinformatie over deze auteur

Image of Steve Leibson Steve Leibson werkte als systeemingenieur voor HP en Cadnetix, hij was de hoofdredacteur voor EDN en Microprocessor Report, een tech-blogger voor (onder andere) Xilinx en Cadence, en hij trad op als de technologie-expert tijdens twee episoden van “The Next Wave with Leonard Nimoy.” Al 33 jaar lang helpt hij ontwerpingenieurs om betere, snellere en betrouwbaardere systemen te ontwerpen.
More posts by Steve Leibson