Hallo zusammen, nachdem ich mir die Grundlagen von FPGA's / CLPD's angesehen habe, habe ich mir dann auch ein Board mit einem Cyclone II zugelegt. Damit habe ich schon ein bisschen rum gespielt (logische Grundblöcke zusammen geklickt, LED's mit Zählern blinken lassen, ..., dasselbe mit VHDL, ...). Soweit so gut aber wie geht es jetzt weiter? Daher meine erste Frage kennt jemand von euch ein schönes Tutorial das ein bisschen weiter geht? Ich würde außerdem gerne eine Verbindung zur Außenwelt bekommen (I2C, SPI, UART, Ethernet) aber da werden dann die Tutorials langsam dünner. Ich bin bei meiner bisherigen Suche bereits auf Qsys gestoßen aber verstehe das System dahinter noch nicht ganz (Avalon Master ...) wenn jemand dazu speziell ein Tutorial kennt wäre das nicht schlecht. Und das letzte ist das ich teilweise immer wieder kompletten Code für Schnittstellen gefunden habe aber leider nicht weiß wie man fertigen Code in seinem eigenen Code benutzt. Ist das dann wie in C einen Art Unterfunktion mit Übergabeparametern und Rückgabewerten? Kurz noch zu mir: Ich bin Student der Elektrotechnik und kenne die klassische Logik und dessen Entwurf. Außerdem programmiere ich seit einigen Jahren Mikrocontroller (auch wenn mir das Momentan nicht hilft^^) Über hilfreiche Antworten bzw. Anregungen wäre ich sehr Dankbar.
Dominik G. schrieb: > habe ich mir dann auch ein Board mit einem Cyclone II zugelegt. Nur interessehalber: Welches?
Irgendwann hört es mit den Tutorials halt auf und du musst dich durch Praxis weiterbilden. Du hast dir ja schon fast selbst eine kleine Aufgabe gestellt. Entwerf doch mal einen einfachen UART receiver und steuer deine LEDs vom PC an. Nicht ganz trivial aber auch nicht die Welt. Wenn du langfristig Spass an der Arbeit haben möchtest, brauchst du aber ein Projekt was für dich sinnvoll ist. Darf auch ein bisschen hochgegriffen sein. Wenn ich irgendwann die Zeit finde will ich z.B. eine Zynq-basierte flight control unit für nen Quadcopter entwerfen. Aber da musst du schon dein eigenes Ding finden :).
:
Bearbeitet durch User
Ich habe das Altera CycloneII EP2C5T144 FPGA Learning Board + USB Blaster JTAG programmer von ebay gekauft http://www.ebay.de/itm/Altera-CycloneII-EP2C5T144-FPGA-Learning-Board-USB-Blaster-JTAG-programmer-/111738218269?hash=item1a041de71d Ja so in etwa war auch mein Plan aber mir fällt der Einstieg in die Praxis etwas schwer und ich hoffte das der ein oder andere erfahrene Entwickler vielleicht ein paar nützliche Einsteiger Tipps oder Tutorials hat ;) (Bücher, generelle Herangehensweisen, ... )
@Dominik: Das Board ist schon ganz gut, wenn man ein fertiges Projekt im Hinterkopf hat. Zum rumexperimentieren gibt es aber bessere Boards, die noch etwas IO-Hardware mitbringen. Wenn man später noch was mit Retro-Computing rumspielen möchte, dann sollte man nach einem Board mit SRAM ausschau halten. SD-RAM ist leider etwas komplexer als SRAM. Aber zum eigentlichen Thema: Ich habe mit VHDL angefangen und hatte große Probleme mit dem Einstieg in die Welt der FPGAs. Mir fehlten auch die passenden Tutorials um umfangreichere Projekte umzusetzen. Ich hab erstmal alles frustiert zur Seite gelegt und weiter mit AVRs rumgespielt. Dann bin ich auf NAND2Tetris gestoßen und mir ist aufgefallen, daß die im Buch verwendete HDL sehr stark an Verilog angelehnt ist. Ich hab mir dann das Buch "Verilog by example" gekauft und diverse Tutorials durchgelesen. Das war für mich der Durchbruch: Heute bekomme ich es hin, einfache Systeme mit dem T65 Core und dem AX8 Core zu basteln. PS/2, RS232 und SPI sind auch kein Problem mehr. Ich steh zwar noch ganz am Anfang... aber der Einstieg ist da. Jetzt fehlt mir nur noch die Freizeit zum rumbasteln. Gruß, SIGINT
Sigint 1. schrieb: > Mir fehlten auch die passenden Tutorials um umfangreichere Projekte > umzusetzen. Manchmal muss man einfach sagen: ab hier gibt es kein Tutorial mehr. Das muss ich wahrscheinlich selber machen... > Ich habe mit VHDL angefangen > und hatte große Probleme mit dem Einstieg in die Welt der FPGAs. Das sind aber 2 Sachen, die nicht automatisch korrelieren. Dass der Einstieg in Hardwarebeschreibung beschwerlich ist, liegt nicht an der HDL, sondern an der Denkweise. Ich vermute, dass der Frust, den du mit VHDL hattest, ganz einfach dein Weltbild des Themas "programmierbare Logik" ausgerichtet hat. Und dann die Verilog-Sache nur noch das bereits korrigierte und überschlafene FPGA-Weltbild mit Leben füllen musste. Denn das Problem bei VHDL ist nicht die "Komplexität" der Sprache, sondern, dass nur 5-10% von VHDL tatsächlich auf Hardware umgesetzt werden können. Ich finde Denkfehler und Strukturfehler auch in Verilog-Beschreibungen, obwohl ich die Syntax dieser Sprache nicht kenne. Dominik G. schrieb: > Hallo zusammen, > nachdem ich mir die Grundlagen von FPGA's / CLPD's angesehen habe, habe > ich mir dann auch ein Board mit einem Cyclone II zugelegt. Damit habe > ich schon ein bisschen rum gespielt > Soweit so gut aber wie geht es jetzt weiter? Ich würde jetzt mal einen VGA-Monitor ansteuern. Den hat man zuhause und man kann das Timing noch gut simulieren und man sieht sofort, was herauskommt. Und dann steuerst du den Monitor über eine RS232 Schnitte an, machst Pong drauf, usw. Aber eben: DU mach es selber. Denn ein "Tutorial nachgemacht" ist eben nicht "gelernt", weil dir der Tutorialmacher einfach alle Steine aus dem Weg geräumt hat.... Zum Thema "Schaltplaneingabe" noch der Klassiker: Beitrag "kruder Fehler bei FPGA-Programmierung (ISE WEBpack-Schematic)" Lies ihn durch. Du wirst dabei lernen.
Vielen Dank für die bisherigen Tipps. Kann mir einer von euch noch ein bisschen was zu Qsys sagen? Bzw. das Einbinden von fremdem Code? Soweit ich gesehen habe ist das schreiben einer RS232 Schnittelle überschaubar aber ich kann mir gut vorstellen das andere Protokolle / Schnittstellen etwas umfangreicher sind und nicht jeder wird immer alles selbst "programmieren". Falls noch andere Anfänger auf diesen Eintrag stoßen ich habe hier eine ganz nette Seite gefunden: http://www.fpga4fun.com/index.html
Dominik G. schrieb: > ich habe hier eine ganz nette Seite gefunden: Da ein wenig aufpassen: da sind auch so typische hingemurkste amerikanische "Reißnagel auf Sperrholzbrett" Basteleien dabei: asynchrone Eingänge und asynchrone Taktdomänenübergänge... Sieh dir auf jeden Fall auch andere Seiten an: http://www.lothar-miller.de Und die ist auch toll: http://www.stefanvhdl.com/
:
Bearbeitet durch Moderator
Vielen Dank für die Warnung und die Links dann werde ich mich mal an mein erstes größeres Projekt wagen.
Nach dem Ansehen einiger kleinerer Tutorials hab ich mich zunächst etwas ich die Sprache VHDL eingelesen (kürzere Dokumente mit bis zu 30 Seiten) doch viele Fragen blieben offen. Ganzen unten zu dem Artikel VHDL auf dieser (mikrocontroller.net) fanden sich dann auch einige Links zu weiterer Lektüre. Darunter auch das Buch: "Schaltungsdesign mit VHDL Gunther Lehmann, Bernhard Wunder, Manfred Selz" das Buch ist recht ausführlich und angenehm zu lesen jedoch wurde es 1994 geschrieben und verweist an zwei Stellen auf die beiliegende Diskette (deren Inhalte bei dem Link nicht dabei sind). Auch wenn das Buch nicht aktuell ist (Änderungen 2002 und 2008 logischer weise nicht enthalten) empfand ich es als gut gelungen Einstieg.
Sieh dir mal VHDL-Synthese von Reichardt&Schwarz. Denn das ist es, was du machen willst: du willst nicht VHDL lernen, sondern FPGA. Oder besser: du willst genau die 5% von VHDL lernen, die du für das FPGA verwenden kannst. Aus diesem Grund brauchst du nicht ein Buch, das jedes ausgeschlafene Syntaxelement von VHDL erklärt, sondern eines, das dir die "Hardwaredenkweise", also die Sicht des Synthesizers vermittelt.
Das verstehe ich nicht ganz. Heißt das dass ich lediglich ~5% von VHDL in einem FPGA umsetzen kann? Oder dass ich nur ~5% von VHDL brauche um mit einem FPGA an mein Ziel zu kommen? Danke für den Tipp hätte mich ansonsten weiter in VHDL vertieft. Hab das Buch gerade auf dem Tisch und werde es mir mal durchlesen.
Dominik G. schrieb: > Heißt das dass ich lediglich ~5% von VHDL in einem FPGA umsetzen kann? Ja man könnte doch einfach ein Blinklicht so beschreiben: led <= not led after 500 ms; Blöd, dass das nur im Simulator geht, aber eben nicht auf der Hardware... > Hab das Buch gerade auf dem Tisch und werde es mir mal durchlesen. Verinnerliche dir, dass da ganz oft der RTL-Schaltplan angesehen wird. Das ist sinnvoll, denn VHDL ist ja eine HardwareBESCHREIBUNGssprache, und das was dort asl Schaltplan herauskommt, sollte vorher in deinem Kopf gewesen sein. Wenn ich beispielsweise einen Zähler von 0 bis 200 hinschreibe, dann habe ich 8 Flipflops vor dem geistigen Auge... Es gibt auch ein paar Schwachpunkte im Buch im Beitrag "Re: Verständnisproblem Xilinx XC9572 CPLD" Und ein paar Korrekturen: http://users.etech.fh-hamburg.de/users/reichardt/buch.html Und dann ist da noch das hier im Beitrag "Re: Gutes VHDL Tutorial" Und beim Thema VHDL ist dann Peter Ashenden mit "The Designers Guide to VHDL" mit dabei...
Lothar M. schrieb: > Ja man könnte doch einfach ein Blinklicht so beschreiben: > led <= not led after 500 ms; > Blöd, dass das nur im Simulator geht, aber eben nicht auf der > Hardware... Ja das wurde explizit erwähnt, dass die Hardware keine Zeiten kennt (im Sinne 2ms 5us ...) und dass man das nur zu Simulation nutzen kann. Aber sonst finde ich doch vieles im Inhaltsverzeichnis von "VHDL-Synthese" wieder. Lothar M. schrieb: > Es gibt auch ein paar Schwachpunkte im Buch im > Beitrag "Re: Verständnisproblem Xilinx XC9572 CPLD" Danke gut zu wissen, schade das solche Listen nicht aktuell gehalten werden Ok die anderen beiden Threads hab ich mir durchgelesen und so verstanden das "The VHDL Cookbook" nochmal einen Blick wert ist
Dominik G. schrieb: > Aber sonst finde ich doch vieles im Inhaltsverzeichnis von > "VHDL-Synthese" wieder. Der Teufel steckt im Detail. So werden von der Synthese die allerwenigsten Attribute unterstützt: nach 'event ist schon Schluss. Zudem müssen die VDHL-Codezeilen oft in einer ganz bestimmten Reihenfolge dastehen, dass der Synthesizer noch was draus machen kann, das hinterher auch zuverlässig läuft.
Lothar M. schrieb: > So werden von der Synthese die > allerwenigsten Attribute unterstützt: nach 'event ist schon Schluss. Nanana. 'high, 'low, 'left, 'right, 'range, 'length und 'pos nehme ich ganz gern. Außerdem sollten 'reverse_range, 'ascending und 'last_value laut Dokumentation (UG687, S.72) auch funktionieren. Duke
Duke Scarring schrieb: > Lothar M. schrieb: >> So werden von der Synthese die >> allerwenigsten Attribute unterstützt: nach 'event ist schon Schluss. > Nanana. Oh Mann, klar. Ich hatte da nur die ganzen zeitlichen Attribute im Kopf...
Ich habe mittlerweile ein bisschen in dem Buch "VHDL-Synthese" gelesen und bin schon auf die ein oder andere Sache gestoßen die man beim "programmieren" von Hardware beachten muss aber auch wenn man Befehle wie WAIT FOR oder AFTER auf der Hardware nicht benutzen kann so benötigt man sie doch wenn man Testtenchs schreiben möchte, sodass es mir immer wichtiger erscheint sich zuerst mit der gesamten Sprache auseinander zu setzen bevor man sich dann mit den Hardware spezifischen Eigenheiten beschäftigt. Ich sehe aber das es wesentlich sinnvoller ist wenn beides in ein und demselben Buch behandelt wird wie es Herr Reichardt und Herr Schwarz tuen, daher nochmal vielen Dank für den Buchtipp. Jedoch hab ich schon Kleinigkeiten bemerkt die in diesem Buch vergessen wurde wie zum Beispiel das man in Variablen Namen keine doppelten Unterstriche verwenden darf
Ich stoße beim lesen immer wieder auf Befehle oder Datentypen die auf der Hardware nicht genutzt werden können, ist dies bei allen HDL Sprachen so (Verilog, ...) oder ist dies ein Phänomen das sich nur auf wenige Sprachen bezieht?
Dominik G. schrieb: > Ich stoße beim lesen immer wieder auf Befehle oder Datentypen die auf > der Hardware nicht genutzt werden können, ist dies bei allen HDL > Sprachen so (Verilog, ...) oder ist dies ein Phänomen das sich nur auf > wenige Sprachen bezieht? In jeder Sprache, die nicht ausschließlich der Synthese dient, wird es Datentypen geben, die nicht auf Hardware umsetzbar sind. Nehmen wir einfach mal dden Datentyp time, der aus einfach nachvollziehbaren Gründen nicht umgesetzt werden kann. Man kann jetzt dieser Geschichte aus dem Weg gehen, indem es in der Sprache einfach keinen solchen Datentypen gibt. Zum Schluss kommt dann aber eine ziemlich zielgerichtete und plattformabhängige Sprache heraus. Hochsprachen wie VHDL oder Verilog oder System-C werden immer Komponenten beinhalten, die nicht synthetisierbar sind. https://www.mikrocontroller.net/articles/Verilog#Synthetisierbare_Konstrukte https://de.wikipedia.org/wiki/Very_High_Speed_Integrated_Circuit_Hardware_Description_Language#Synthesef.C3.A4higer_und_funktionaler_VHDL-Code
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.