Unterschied: Arduino vs. FPGA?

Hallo,

ich möchte gerne hobbymäßig in die Elektronik einsteigen und so Sachen wie Rolladenfernsteuerung, Abstandsmesser, etc. basteln, bzw. erst mal einsteigen.
In der Uni hatten wir bereits mit FPGA’s entwickelt (in VHDL), so wollte ich mit so ein FPGA-Einsteiger-Kit (Xilinx oder Atmel o.ä.) kaufen.
Mittlertweile ist Arduino gut verbreitet. Soweit ich verstanden habe ist Arduino ein programmierbarer Mikrokontroller auf Opensource Basis…

Mir ist der praktische Unterschied noch nocht so ganz klar. Prinzipiell könnte ich ja zumindestens einfachere Sachen mit beiden Architekturen Umsetzen.
Was spricht für:
±------------------------±--------------------------+
| Arduino | FPGA |
±------------------------±--------------------------+
| Modular erweiterbar | DSP |
| Opensource | IDE Erfahrung |
| … | … |
±------------------------±--------------------------+

Und weiter?

Ich danke für alle hinweise…
Gruß Lespaul

hallo.

Mir ist der praktische Unterschied noch nocht so ganz klar.

praktisch sieht’s so aus, daß du mit einem µC relativ schnell loslegen kannst, weil die ganze peripherie schon drin ist (speicher, timer, schnittstellen… usb, tcp/ip etc.) und es zig foren mit zig fertigen lösungen für zig verschiedene problemstellungen gibt.

die fpga-gemeinde dürfte deutlich kleiner sein. entsprechend geringer ist der „kostenlose support“.

Prinzipiell könnte ich ja zumindestens einfachere Sachen mit
beiden Architekturen Umsetzen.

ja. prinzipiell kannst du auch einen µC im fpga zusammenbasteln - und dann wiederum auf die lösungen für den µC zurückgreifen…

brauchen tust du ein fpga weder für eine rolladenfernsteuerung noch für einen abstandsmesser (wobei’s hier auf die zu messenden abstände ankommt :wink: )

Was spricht für:
±------------------------±--------------------------+
| Arduino | FPGA |
±------------------------±--------------------------+
| Modular erweiterbar | DSP |
| Opensource | IDE Erfahrung |
| … | … |
±------------------------±--------------------------+

Und weiter?

für den fpga-baustein spricht generell die flexibilität und die geschwindigkeit.
dagegen sprechen evtl. größe, preis und aufwand für externe bauteile (speicher).

aber das alles dürfte für dich als hobbyheimelektroniker eh wurscht sein.
also entweder du begibst dich auf die fpga-schiene und fuchst dich weiter rein, weil VHDL einfach dein ding ist.
oder du gehst auf mikrocontroller, lernst ein bißchen C (oder basic oder was auch immer) und kommst wahrscheinlich schneller und/oder mit weniger aufwand ans ziel.

gruß

michael

Hallo L3Paul,

Michael hat ja schon wesentliches gesagt.

Ich selbst beschäftige mich jetzt seit gut 3 Jahren mit dem (besser gesagt den Arduinos, da es ja eine ganze Reihe unterschiedlicher Ausführungen gibt) und bin nach wie vor begeistert.

Einerseits ist ein schneller Einstieg sehr einfach, da der z.b. der Standard-Arduino - der UNO - bereits über eine Vielzahl von Schnittstellen bzw Ein- und Ausgängen verfügt.

Andererseits lassen sich auch komplexe Projekte verwirklichen. Nicht zuletzt auf Grund der Schnittstellen zu anderen „Sprachen“ wie z.B. Processing (Java-basiert) oder OpenFrameworks (C++).

Auf (nicht nur)

http://macherzin.net

kannst du dir mal einen Überblick über die Möglichkeiten des Arduino & Co. verschaffen.

Grüße

godam

Vielen Dank für die Antworten!

Ja ich war auch kurz davor mit einen Arduino Mega2560 zu bestellen.

  • Shields sind Erweiterungen, die man in die Pins stecken kann ja?
  • Mich würden u.a. GSM/GPS Shields [0] und CAN Shields [1] interessieren. Kann man dann auch merhere Shields parallel auf ein Arduino stecken?

Und auf so einem CAN-Bus kommen Botschaften schon im Millisekundenbereich an. Kann das der CAN Shield handlen? Bin da mit den Abtastraten skeptisch.

[0] - http://www.cooking-hacks.com/index.php/documentation…
[1] - https://www.sparkfun.com/products/10039

Vielen Vielen Dank im voraus…
MfG Lespaul

Hallo Lespaul,

Mir ist der praktische Unterschied noch nocht so ganz klar.
Prinzipiell könnte ich ja zumindestens einfachere Sachen mit
beiden Architekturen Umsetzen.

Richtig.

Der Arduino ist ein Computer und sein Verhalten wird zu Laufzeit vom Programm bestimmt. Da das Programm sequentiall abgearbeitet wird, kann er aber nur Dinge nacheinander ausführen. Schnelle Reaktionen kann man über Interrupts erzwingen, aber dieser Mechanismus braucht halt seine Zeit (Zyklen).
Bei einem Microcontroller sind heute viele Funktionen schon mit auf dem Chip (Timer, Serielle Schnittstellen, Ports usw.). PROM un RAM sind auch schon auf dem Chip mit drauf.

Ein FPGA entspricht eigntlich mehr einer Bastelkiste mit Logik-Gattern. Nur anstatt eines Lötkolbens, verwedest du z.B. VHDL um die Verdrahtung zu erstellen.
Mittlerweile gibt es auch FPGAs welche auch analoge Bausteine, wie z.B. OpAmps, enthalten.
FPGAs können massiv parallel und auch schnellere Signale als Microcontroller verarbeiten. Wie schon gesagt wurde, kann man mit einem FPGA auch einen massgeschneiderten Arduino bilden.
FPGAsgehen aber sehr ineffizient mit der Chipfläche um. Es müssen jede Menge Verbindungen zwischen den Zellen vorhanden sein, von welchen aber in einem Projekt nur ein geringer Teil tatsächlich benutzt werden.
Ein Arduino als FPGA wird also immer viel mehr Chipfläche benötigen, und somit teurer sein, als der optimiert Arduino-Chip.

Ein Untrschied besteht dann im Debugging, also der Schritt von der theoretischen Lösung zur pratisch funktionierenden.
Bei einem Computer-Programm ist das meist wesentlich einfacher als bei einem FPGA mit der selben Kompexität.

Für deine Aufgaben wird ein Arduino völlig genügen.

MfG Peter(TOO)

Hallo,

der Mega 2560 ist ein nettes und sehr leistungsfähiges Gerät.

Shield sind aufsteckbare Erweiterungen. Momentan dürfte es bummelige 300 verschiedene Shields für den Arduino geben.

Ob man mehrere Shields übereinander stecken kann (Sandwich) hängt von den Shields und vor allem der Pin-Belegung ab. Wenn z.B. Shield 1 den digitalen Pin 7 nutzt und Shield 2 ebenfalls, gibt es natürlich Probleme.

Hier die Pin-Belegung für das CAN-Bus-Shield:

http://shieldlist.org/skpang/canbus

da bleiben nicht mehr viele freie Pins …

Unter

macherzin.net/Arduino+Shields

findest du einige Hinweise. Interessant ist auf jeden Fall der Link zu shieldlist.org, da du dort die genauen Pin-Belegungen der einzelnen Shields sehen und ggf. den o.a. Konfliktmöglichkeiten aus dem Weg gehen kannst.

Mit den Abtastraten solltest du in Regel keine Probleme haben. Dies hängt aber natürlich auch stark von der Programmierung ab. Der direkte Zugriff auf Register kann schon mal einen Geschwindigkeitsvorteil um den Faktor 100 bringen.

Hier ein kurze Übersicht zu diesem Thema:

http://macherzin.net/Splitter#Timer

Zu den angegeben Shields: Die aussagen von Sparkfun sind eigentlich sehr vertrauenswürdig. Dir ist aber bewußt, daß das Can-Bus-Shield schon einen Sockel für ein GPS-Modul hat?

Grüße

godam

hallo.

Und auf so einem CAN-Bus kommen Botschaften schon im
Millisekundenbereich an. Kann das der CAN Shield handlen? Bin
da mit den Abtastraten skeptisch.

keine angst, der MCP2515 schafft das schon.
der knackpunkt wird eher sein, wie flink deine „SPI2CAN“-software die daten abholen bzw. rausschreiben kann.
das hängt natürlich auch (aber nicht nur) davon ab, wie schnell du die SPI deines arduino überhaupt betreiben kannst.

gruß

michael

Nochmals Danke für eure Antworten.
Habe mir heute den Arduino ADK bestellt. Mit dem zusätzlichen USB-Port könnte man mit einem Android interagieren.

Nun steht hier http://arduino.cc/en/Main/ArduinoBoardADK " It has a USB host interface to connect with Android based phones, based on the MAX3421e IC."

Heisst das nun, man man _nur_ mit den Android Geräten verbinden kann die diesen ‚MAX3421e IC‘ Chip haben, oder war das nur unglücklich formuliert (dass dann mit allen Android Geräten verbunden werden kann)?

Vielen Dank nochmals…
Gruß Lespaul

Hallo Lespaul,

Nun steht hier http://arduino.cc/en/Main/ArduinoBoardADK " It
has a USB host interface to connect with Android based phones,
based on the MAX3421e IC."

Heisst das nun, man man _nur_ mit den Android Geräten
verbinden kann die diesen ‚MAX3421e IC‘ Chip haben, oder war
das nur unglücklich formuliert (dass dann mit allen Android
Geräten verbunden werden kann)?

Das war unglücklich gelesen :wink:

Das USB-Interface des Arduino ADK verwendet den MAX3421e.

Welcher Baustein sich im Smartphone befindet ist egal.

Im Prinzip ist auch das Betriebssystem des Smatphones egal, aber für Android gibt es passende Treiber/Software, für andere BS müsstest du den selber programmieren.

MfG Peter(TOO)

Hi!

Ich kann auch nur meinen Vorpostern zustimmen.

Ganz vereinfacht (und bitte nicht beleidigend verstehen) würde ich sagen: Wenn du jemand fragen musst, ob du mit FPGAs oder Mikrocontrollern entwickeln sollst, dann sind FPGAs definitiv falsch, also nimm Mikrocontroller.

FPGAs sind um etliches komplexer, und die Denkweise und Arbeitsweise ist eine wesentlich anspruchsvollere. Selbst wenn du auf der Uni schon mal mit VHDL gearbeitet hast, habt ihr vermutlich die wirkliche Herausforderung nicht zu Gesicht bekommen.

Für Interessenten möchte ich auf den Schüler-Wettbewerb „Invent a Chip“ hinweisen, wo Schüler selbst einen Chip entwickeln können (mit VHDL). Wir veranstalten im kommenden Schuljahr schon die dritte Periode in Österreich, in Deutschland gibts den Wettbewerb schon deutlich länger.

Bye
Hansi