Forum: FPGA, VHDL & Co. In Gebiet der FPGA einsteigen?


von Elektrotechnik-Student (Gast)


Lesenswert?

Hallo,
aktuell studiere ich Elektrotechnik im 2. Semester und habe demnächst 
Semesterferien. Da ich diese auch nutzen will, habe ich mir überlegt, 
entweder Python zu lernen oder in das Gebiet der FPGA einzusteigen.

Ich habe bereits jede Menge Erfahrungen mit AVR-µC und dementsprechend 
C- und C++-Programmierung gemacht.

Meine Frage wäre nun: Rentiert es sich, in die Welt der FPGA's 
einzutauchen oder sollte ich lieber Python lernen?

Ich tendiere eher zum Bereich der Nachrichten- oder 
Automatisierungstechnik, weshalb ich mir gut vorstellen kann, beides für 
den späteren Beruf gebrauchen zu können. Soweit ich weiß, werden wir im 
Rahmen des Studiums Python und FPGA's nicht kennen lernen.

Mit freundlichen Grüßen
Ein Student

von Jan H. (janhenrik)


Lesenswert?

Du musst dich halt fragen was für dich den größeren Wert hat,

Python wird eher dazu verwendet Programme, Scripte und Ähnliche für den 
Computer zu schreiben.

FPGA's sind da natürlich was ganz anderes, aber auch nicht unpraktisch.

Mit C und C++ wirst du bei FPGA's überhaupt nicht weiter kommen.

Sich in die Thematik FPGA/CPLD und z.b. VHDL einzuarbeiten ist deutlich 
"Schwieriger" bzw. umfassender als Python zu lernen. Da du C und C++ 
schon kannst, brauchst du für Python nicht viel Lernen, daher würde ich 
an deiner Stelle mich in FPGA's/CPLD's einarbeiten. Python kannst du 
bestimmt auch nebenbei machen, ist sehr einfach.

- Jan Henrik

von Nils P. (torus)


Lesenswert?

Es ist beides hilfreich, ich würde Dir aber raten dich in die FPGA/CPLD 
Entwicklung einzuarbeiten.

Eine weitere Programmiersprache kannst Du, wenn Du sie brauch, recht 
schnell nebenbei lernen. Bei FPGA/CPLD sieht das schon anders aus, da 
braucht man schon etwas Zeit und Sitzfleisch für.

Jetzt hast Du das noch in den Semesterferien. Wenn Du erst mal 
Arbeitest wird es schwer werden die Zeit für FPGA Entwicklung zu finden.


Achja, ich würde an Deiner Stelle erst mal mit einem billigen CPLD 
anfangen. Das ist einfacher, und wenn Du Blut geleckt hast lassen sich 
die Erfahrung 1:1 auf FPGA übertragen.
Einen CPLD lässt sich auch problemlos in eigene Projekte integrieren. 
Wenn er erst mal programmiert ist, dann verbaut er sich wie ein ganz 
normaler Logic Baustein. Beim FPGA hast Du einen ungleich höheren 
Aufwand was Power-Supply, Flash und Programmierung angeht.

von Jan H. (janhenrik)


Lesenswert?

Nils P. schrieb:
> Es ist beides hilfreich, ich würde Dir aber raten dich in die FPGA/CPLD
...
> Aufwand was Power-Supply, Flash und Programmierung angeht.

Kann ich nur zustimmen, Jedoch kann das MachXO2 von Lattice für den 
Anfang empfehlen, habe ich auch genommen. Auch wenn dieses kein CPLD, 
sondern ein FPGA ist. (Vermutlich musst du mit dem MachXO3 vergnügen, 
das MachXO2 ist schon älter)

von 1N 4. (1n4148)


Lesenswert?

Mein Rat entgegen dem der Vorschreiber: Fang mit FPGA an, CPLD kannst du 
später immer noch für spezielle Aufgaben, die ein kleines Logikgrab 
erfordern, verwenden.

Solltest du keine Peripherie rumliegen haben (LEDs, Schalter, etc. usw.) 
würde ich zu nem billigen Eval-Board (Altera rd. 50€ in der Bucht inkl. 
Programmer) raten.

von Carsten S. (dg3ycs)


Lesenswert?

Elektrotechnik-Student schrieb:
> Soweit ich weiß, werden wir im
> Rahmen des Studiums Python und FPGA's nicht kennen lernen.

Zumindest im Bachelor wirst du recht haben.
WEnn, dann wird wohl in den meisten Hochschulen höchstens im Nebensatz 
mal ein paar Minuten erwähnt das es das gibt und was es ist.

Im Master kann, je nach Vertiefung & Hochschule, FPGA natürlich dann 
schon ein wichtiges Thema sein.

Was du aber bei PLD (egal ob FPGA oder CPLD) bedenken solltest ist das 
zu den Grundlagen -um es wirklich u verstehen was man da macht- eine 
Menge Grundlagenwissen "Digitaltechnik" gehört.
Um mal nur ein paar Schlagworte zu nennen: Logische Verknüpfungen, 
Gattertypen, ZEitverhalten incl. Hazards/glitches, TEchnologiefamilien 
u.v.m.

Erst wenn diese Grundlagen sicher sitzen macht es meiner Ansicht nach 
Sinn sich speziell mit den PLD zu beschäftigen. Egal welches 
Entwurfssprache (z.B VHDL) man für den Einstieg wählt.

Diese Grundlagen WERDEN aber mit ziemlicher Sicherheit bei dir im 
Studium noch Thema sein.

Auch solltest du bedenken das die Vorlesungsfreie Zeit zwar teilweise, 
aber nicht komplett, als Freizeit gedacht ist. Das hängt aber wieder von 
der Hochschule ab. In vielen Hochschulen werden ja die Klausuren vor und 
nach den Semesterferien geschrieben. Wenn das bei dir aus so ist, dann 
solltest du auf jeden Fall auch einige Zeit für die Vorbereitung dafür 
und die Nachbereitung der Fächer im letzten Semester die im nächsten 
Semester inhaltlich weitergeführt werden einplanen.
Und natürlich auch die wirkliche Entspannung keinesfalls vergessen!

Daher würde ICH sagen:
Wenn du die oben genannten Vorkenntnisse zumindest teilweise bereits 
hast, z.b. durch langjährige Hobbytätigkeit, durch die Ausbildung oder 
weil es bereits Thema im Studium war, DANN würde ich den Vorschreibern 
zustimmen das eine Beschäftigung mit dem Thema PLD mehr Sinn macht als 
mit noch einer weiteren (zusätzlichen) Programmiersprache.
Denn wenn man schon einie Programmiersprachen kennt lernt sich Phyton 
Bedarf recht schnell, während PLD ein ganz anderer Brocken sind.

Sind die oben genannten Vorkenntnisse aber noch gar nicht vorhanden, 
dann würde ich auf jeden Fall vorher mal schauen ob diese nicht noch 
Thema im Studium werden. Und wenn dies so ist, dann den Einstieg in die 
PLD Welt auf den Zeitpunkt verschieben nach dem die Thema war.

Denn sonnst verbringst du unte Umständen viel Zeit damit dir die 
Grundlagen beizubringen die du im nächsten Semester sowieso lernst und 
kommst erst gar nicht zu den interessanten Stellen. (unnützer 
Zeitaufwand)

Oder du verzichtest auf die Grundlagen und wirst so zwangsläufig auf 
unterstem Bastlerniveau steckenbleiben. Beides für die weitere Zukunft 
nicht besonders sinnvoll.

Da würde eine gründliche Beschäftigung mit Phyton vielleicht doch mehr 
bringen.

Gruß
Carsten

von Oberlehrer (Gast)


Lesenswert?

> Phyton

Es heisst PYTHON.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Elektrotechnik-Student schrieb:
> Meine Frage wäre nun: Rentiert es sich, in die Welt der FPGA's
> einzutauchen oder sollte ich lieber Python lernen?

So eine Frage ist von dem Kaliber wie:
Ich hab' Hunger. Soll ich lieber Pizza essen oder einen Doener?

Wie soll man so eine Frage beantworten?
Mein Sohn, du bist 42 Jahr' 'n Elektroingenieur: Mach das, an dem du 
Spass hast, was dich interessiert. Alles andere ist Mumpitz.

Gruss
WK

von Yalu X. (yalu) (Moderator)


Lesenswert?

Entscheide dich für das Thema, wofür du bereits konkrete Anwendungen im
Auge hast.

Den es bringt meiner Meinung nach nicht allzu viel, ein Tutorial
durchzuarbeiten und ein paar Übungsaufgaben dazu zu machen, wenn du das
Gelernte nicht zeitnah für etwas Nützliches (und nicht allzu Triviales)
anwenden kannst.

Ich selber habe mich vor Jahren ebenfalls in Python und FPGA-Design
eingearbeitet. Beides fand ich sehr spannend, aber für die FPGAs fehlten
mir die konkreten Anwendungen. Ich habe mir dann irgendwelche Ideen aus
den Fingern gesaugt, die über die Beispiele und Übungsaufgaben aus den
Tutorials hinausgehen, und habe diese dann auch nacheinander erfolgreich
realisiert. Das war's dann aber auch schon. Seitdem verstaubt das Eval-
Board im Regal, und das Gelernte habe ich größtenteils wieder vergessen.

Anders bei Python: Nach zwei oder drei Tagen hatte ich das Tutorial
durchgearbeitet und sofort zig Ideen, welche nützlichen Tools ich damit
realisieren könnte. Zudem konnte ich Python auch beruflich zum Skripten
von Abläufen innerhalb bereits bestehender Softwaresysteme einsetzen.
Seither nutze ich Python fast täglich für kleinere Einwegprogramme,
schreibe darin aber hin und wieder auch komplexere Anwendungen. Sehr oft
benutze ich es aber auch einfach nur als besseren Taschenrechner. Es ist
für mich so eine Art Schweizer Taschenmesser, das ich nie wieder
hergeben möchte.

Stand heute: In Python programmieren kann ich ziemlich gut, FPGA-Design
fast überhaupt nicht. Trotzdem war der FPGA-Exkurs nicht ganz umsonst,
denn immerhin habe ich noch einen ganz guten Überblick darüber, was man
mit einem FPGA anstellen kann und was nicht und wie bei der Entwicklung
von Designs prinzipiell vorgegangen wird. Falls mir irgendwann noch noch
eine sinnvolle FPGA-Anwendung über den Weg laufen sollte, werde ich sie
(hoffentlich) sofort als solche erkennen und für die Realisierung
deutlich weniger Zeit benötigen als wenn ich komplett bei Null anfangen
müsste.

Es kann bei dir natürlich auch genauso gut umgekehrt sein.

Falls du immer noch nicht sicher bist, was du zuerst in Angriff nehmen
solltest, dann fang mit Python an.

In zwei Tagen kannst du dir ca. 80% bis 90% des Sprachumfangs erarbeiten
und in zwei weiteren Tagen einen Überblick über die mitgelieferten
Bibliotheksmodule verschaffen, die einen entscheidenden Anteil an der
Mächtigkeit der Sprache haben. Danach kannst du unter Zuhilfenahme von
Nachschlagewerken (Sprachreferenz, Dokumentation der Bibliotheksmodule)
erste komplexere Anwendungen realisieren.

Da die Semesterferien dann noch lange nicht vorbei sind, kannst du
anschließend mit den FPGAs beginnen und schauen, wie weit du damit bis
zum Ende der Ferien kommst. Wahrscheinlich wirst du damit noch nicht
allzu viel Nützliches auf die Beine stellen, aber Erfolgserlebnisse und
Aha-Effekte werden garantiert nicht ausbleiben.

Viel Spaß damit :)

: Bearbeitet durch Moderator
von Im Beruf stehender Ingenieur (Gast)


Lesenswert?

Carsten S. schrieb:

> Auch solltest du bedenken das die Vorlesungsfreie Zeit zwar teilweise,
> aber nicht komplett, als Freizeit gedacht ist.
Ach was! Wusste ich noch gar nicht. Ich dachte, dass das zum Aufarbeiten 
des Lernstoffes, zur Vorbereitung der Klausuren und Ableisten der 
Praktika gedacht sei, aber das ist wohl falsch in der 
Freizeitgesellschaft.

> Und natürlich auch die wirkliche Entspannung keinesfalls vergessen!
Genau! Entspannt euch richtig! Das Leben wartet auf euch, bis ihr 
richtig fit seid und bereit, was zu tun.


> Grundlagen
Ich würde einen Studiegang nehmen, wo das richtig gelehrt wird, weil man 
im Selbststudium ineffektiv ist.

von Elektrotechnik-Student (Gast)


Lesenswert?

Vielen Dank für die tollen und hilfreichen Antworten.

@Carsten Sch. Die Grundlagen der Digitaltechnik hatte ich bereits im 1. 
Semester, ich habe also bereits eine Ahnung von Gattern, Hazards und Co. 
Zudem habe ich im kommenden Semester Digitaltechnik II, es könnte also 
durchaus hilfreich sein, mit FPGA's Digitaltechnik I nochmal 
"aufzufrischen", um einen guten Start in die Vorlesungszeit zu 
garantieren ;).
Bei uns sind aktuell (direkt nach den Vorlesungen) Prüfungen, ich habe 
also demnächst zwei Monate Freizeit.

@Yalu Genau das habe ich mir auch gedacht, dass die Einarbeitung in 
FPGA's evtl. größtenteils umsonst war, während ich eben recht oft gehört 
habe, dass Python sehr viel hergenommen wird und auch Matlab viele 
Ähnlichkeiten zu Python aufweist.

Ich werde mir in den nächsten Wochen nun Python anschauen und 
einarbeiten, und sobald ich damit "durch" bin und noch genug (Frei-)Zeit 
habe, werde ich mir eines der Altera Cyclons im Online-Auktionshaus 
bestellen.

Noch einmal Vielen Dank für die Antworten!

von berndl (Gast)


Lesenswert?

Du kannst natuerlich auch beides verbinden, z.B. siehe hier: 
https://groups.google.com/forum/#!forum/fpgalink-users bzw. hier: 
https://github.com/makestuff/libfpgalink/wiki/FPGALink

Eines der unterstuetzten FPGA-boards nehmen und ueber USB via Python mit 
dem Ding kommunizieren.

von Strubi (Gast)


Lesenswert?

Moin,

Python und FPGA zusammen geht sehr gut, ich würde sogar behaupten, dass 
das von der akademischen Seite her den besten Einstieg bietet.
Das Modul heisst MyHDL und stellt Simulator und mächtiges 
Design/Verifikationstool. Die Synthese geht nur über 
VHDL/Verilog-Output.
Ich wäre versucht zu sagen: VHDL war gestern (wenn ich dafür nicht auf 
die Mütze bekäme). Der Spruch gilt auch nur für den Einstieg. Spätestens 
für die Synthese muss man sich Coding-Prinzipien aneignen, die 
gleichermassen für Verilog und VHDL gelten, sonst kommt hinten nix 
funktionierendes raus.

Ist etwa ähnlich wie mit Java vs. Assembler. Letzteren muss man auch 
immer anfassen, wenn man von Grund auf eine Plattform hochzieht, 
insofern muss man sich gelegentlich anschauen, was MyHDL ausgibt. D.h. 
der Workflow ist typischerweise: Funktionale Verifikation in MyHDL, 
schlussendlich findet die vollständige Simulation dann doch im 
HDL-Simulator deiner Wahl statt.

Mit MyHDL sind auch Ansätze möglich, wo das Xilinx C->HDL-Zeug eher am 
Akzeptanzminimum rumkrebst, d.h. man kann auch später sehr komplexe 
Geschichten wie DSP-Pipelines für dedizierte Berechnungen relativ 
einfach hinschreiben, verifizieren und in synthetisierbares 
Low-Level-HDL ausgeben.
Da gibt es IMHO nichts besseres, von System* und wie sie alle heissen 
kann man eigentlich die Finger lassen, wenn der lokale Standard (die 
Firma) nicht danach schreit.

Da wie genannt Python das bessere Matlab/Labview/usw. sein kann, wenn du 
es entsprechend programmierst, kannst du schlussendlich furchtbar viel 
mit geringem Aufwand verketten, anstatt dich mit nervigen Aspekten 
schwerfälliger Computersprachen herumschlagen zu müssen.

Grüsse,

- Strubi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.