hallo!
Ich bin Anfänger was Elektronik betrifft...
Ich überlege zur Zeit, ob ich mich in Zukunft mit FPGAs oder doch lieber
mit Mikrocontrollern wie Arduino beschäftigen soll, was ja leichter ist.
Ich frage mich irgendwie warum in der Industrie überhaupt FPGA benutzt
wird oder ob es nicht schon längst abgelöst worden ist von
Mikrocontrollern die man in modernen Programmiersprachen wie C
programmieren kann???
Guten Abend,
ich hoffe du kannst dir die Frage selber beantworten: Kannst du dir
vorstellen, dass du in einem Mikrocontroller mit 40-100G Ethernet noch
arbeiten kannst? In Echtzeit Filme schneiden, komprimieren, Mischen.
Oder du brauchst ein bestimmtes Signal mit einem sehr genauen Timing -
im µC keine Chance. Und und und
Überall wo wirklich viel gleichzeitig passieren muss, hoher
Datendurchsatz ist (also in Gigabyte-Bereich) da stößt man mit µC, CPU
etc sehr schnell an die Grenzen.
Aber ich kann dir versichern, wenn du dich mal mit FPGAs
auseinandersetzt, dann wirst du merken, dass die Dinger echt praktisch
sind und irgendwann sind sie nicht mehr wegzudenken. Aber für den
Einstieg sind die Dinger komplizierter und du sollst dich auf jeden Fall
mal mit den Grundlagen der Digitaltechnik vertraut machen!
Gute Nacht ;-)
Wie mein Vorredner schon sagte. Ein FPGA ist ein Stueck parallele Logik.
Ein FPGA nimmt man ueblicherweise als Zusatz zu einem Controller, wenn
dieser die Geschwindigkit nicht mehr bringt. Bei einem hinreichend
grossen FPGA hat dieser Controller eben auch gleich Platz im FPGA. Der
Controller im FPGA ist nicht irgendwas, sondern der Controller fuer den
man eh schon die Entwicklungswerkzeuge hat, und fuer den ein Core
existiert. Es gibt nicht von allen Controllern Cores, denn der
Hersteller muesste die Lizenzen freigeben. Standard ist zB ein 8051, der
wurde ueber 20 Jahre lang vom ersteller ausgelutscht, und dann weiter
lizenziert. Es ist leider nicht so, dass der FPGA Compiler einen an das
Problem angepassten Core giessen wuerde. Als Anfaenger wuerde ich daher
einen externen Controller den man kennt vorziehen, ausser man arbeitet
eh schon mit den 8051.
Mein neustes Projekt, ein 4 fach DDS, erzeugt zwei Frequenzen im Bereich
< 20MHz jeweils in Quadratur. Dazu verwende ich einen AVR, ein kleineres
FPGA und 4 externe 120MHz DAC.
Nicht zu vergessen, dass man von den FPGA-Herstellern einen uC core in
ihrer Programmiersoftware mitgeliefert bekommt, sozusagen einen
"Soft-Core". Damit hast Du dann beides, FPGA und uC-Programmierung. Wenn
Du dann etwas weiter bist, kannst du auch von Drittanbietern oder
Open-Source cores in Deinen FPGA flashen. Da gibt es alles von 4 Bit bis
32 Bit-ARM, und von kostenlos bis Xtausend Euro. Aber von heute auf
morgen geht das alles nicht, mit zwei bis drei Jahren Lernkurve musst Du
schon rechnen.
PSoC.
PSoC schrieb:> Damit hast Du dann beides, FPGA und uC-Programmierung.
Dazu auch das hier:
Beitrag "Softcore - was bringts?"Beitrag "Mikrocontroller (Softcore) in einem FPGA"
Zurück zur Frage:
> Ich überlege zur Zeit, ob ich mich in Zukunft mit FPGAs oder doch lieber> mit Mikrocontrollern wie Arduino beschäftigen soll, was ja leichter ist.
Richtig. Für den Anfang wäre ein uC garantiert einfacher, weil du eher
andere Anwender und damit Unterstützung bei Problemen finden wirst.
> Ich frage mich irgendwie warum in der Industrie überhaupt FPGA benutzt> wird oder ob es nicht schon längst abgelöst worden ist von> Mikrocontrollern die man in modernen Programmiersprachen wie C> programmieren kann???
Es ist manchmal einfach eine Geshcwindigkeitsfrage. Mach mal mit einem
"normalen" uC 100 Millionen Multiplikationen pro Sekunde... ;-)
> modernen Programmiersprachen wie C
Hmmmm, weißt du, wie alt C schon ist?
VHDL ist gute 10 Jahre jünger... ;-)
Hallo Sven,
über leg Dir was Du willst. Wenn Du einen Mikroprozessor entwickeln
willst, ist der FPGA die erste Wahl. Wenn es Dir um Stuerungen geht,
Lüfterstuerungen, Roboter, etc.. dürfte Arduino sinnvoller sein.
Als Anfänger würde ich Dir sowieso das Arduino System empfehlen.
Einfacher und billiger kommst Du nicht an den Start. Es gibt sehr viel
Beispiele und Tutorials im Internet. Ein Buch ist kaum erforderlich. Die
Entwicklungumgebung ist frei und einfach zu bedienen. Es gibt für fast
alles fertige Bibliotheken (Temperatursensoren, LCD, Servos, etc.).
Der Einstieg in VHDL ist etwas anspruchsvoller. Ich hab ein Spartan-3
Board von Digilent. Das ist schon der günstigste Einstieg in die
Technik. VHDL ist schon etwas anders. Es wird hier kein Ablauf
programmiert sondern das Verhalten einer Schaltung. Es läuft alles
parallel und zeitgleich. Dementsprechend ist die Programmierung anfangs
etwas gewöhnungsbedürftig. Ich fand auch die XILINX IDE am Anfang etwas
umständlich. Ist sie aber nicht wirklich, eben nur etwas "anders". Man
gewöhnt sich schnell dran.
Mein Tipp: Fang mal mit Andruino an. Das führt schneller zum Erfolg,
wenn Du programmieren lernen willst. Der Frustfaktor ist kleiner. Es
lassen sich tolle Projekte lötfrei(!) erstellen. Vieles ist steckbar
ausgeführt. Die Programmiererfahrungen kannst Du später einfach auf
andere Mikrocontroller anwenden.
Alternativ kann ich Dir noch das Launchpad von TI empfehlen. Richtig
billig für den Einstieg. Allerdings schnell Lötkolben erforderlich.
Limitierte IDE kostenlos erhältlich.
Gruß
Carsten