Forum: FPGA, VHDL & Co. erweiterter Anfänger sucht Tutorial


von Dominik G. (grosdode)


Lesenswert?

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.

von Josef G. (bome) Benutzerseite


Lesenswert?

Dominik G. schrieb:
> habe ich mir dann auch ein Board mit einem Cyclone II zugelegt.

Nur interessehalber: Welches?

von S. N. (higgns)


Lesenswert?

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
von Dominik G. (grosdode)


Lesenswert?

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, ... )

von Sigint 112 (sigint)


Lesenswert?

@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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Dominik G. (grosdode)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Dominik G. (grosdode)


Lesenswert?

Vielen Dank für die Warnung und die Links dann werde ich mich mal an 
mein erstes größeres Projekt wagen.

von Dominik G. (grosdode)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Dominik G. (grosdode)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Dominik G. (grosdode)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Duke Scarring (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Dominik G. (grosdode)


Lesenswert?

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

von Dominik G. (grosdode)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.