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
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
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.
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)
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.
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
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
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 :)
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.
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!
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