Forum: FPGA, VHDL & Co. hardwarenahes VHDL Tutorial


von Armin (Gast)


Lesenswert?

ich habe hier einen xilinx XC9572XL und mache meine ersten 
VHDL-Gehversuche.

Dazu arbeite ich dieses Tutorial (auf mikrocontroller empfohlen) durch:
http://www.vhdl-online.de/tutorial

und muss sagen, dass das ziemlich enttäuschend ist. Hier wird 
größtenteils nur der VHDL Formalismus durchgekaut, ohne genauere Infos, 
was in der Hardware passiert. Aufgabenstellungen für den Leser gibt es 
keine, nur fertige Beispiele; bloß dass da ständig Code verwendet wird, 
zu dem die Einführung und die Erklärung fehlt. Klar: kann man sich 
zusammenreimen, aber schön ist das nicht. Zur Form brauch ich nichts 
sagen (2 Fenster; Frames; breite, kurze Textblöcke;...).

Meine Frage also: gibt es ein hardwarenäheres Tutorial für 
programmierbare Logik?
Eines, das erklärt, was die Teile können und wie ich die entsprechenden 
Funktionen über VHDL anspreche?
Eines, mit Beispielen, die ich in der Hardware ausprobieren kann und 
deren Ergebnisse ich sehe (auch wenn ich sie an meinen Testaufbau 
anpassen muss)?

Gerade auf die tollen Fähigkeiten dieser Chips, nämlich der hohen 
Parallelisierung wird nur wenig eingegangen.
Für mich ist Beispielsweise dasda eine "race condition":
1
   STUDENT_2 <= STUDENT_1;
2
   STUDENT_2.BIRTHDAY.YEAR <= 1974;
kein Wort dazu, was der Code macht.
Und austesten ist nicht, weil sehen tut man ja nichts.

Wenn das Tutorial zu einer Zeit entstanden ist, als 1974er-Jahrgänge in 
die Schule gegangen sind, weiß ich auch nicht, wie aktuell das gelernte 
Wissen ist :D

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


Lesenswert?

> Für mich ist Beispielsweise dasda eine "race condition":
Ist es nicht, denn wenn die Studenten/Schüler Signale sind, und das in 
einem Prozess abgebildet wird, dann greift die einfachste VHDL-Regel: 
Die letzte Zuweisung an ein Signal in einem Prozess setzt dessen Wert.
Der STUDENT_2 ist also abgesehen von der Jahreszahl genau der selbe wie 
der STUDENT_1.

> Meine Frage also: gibt es ein hardwarenäheres Tutorial für
> programmierbare Logik?
Kauf dir als Tutorial das Buch VHDL-Synthese von Reichardt und Schwarz. 
Dort sind gängige VHDL-Konstrukte beschrieben, und was die Synthese 
daraus macht.

> Meine Frage also: gibt es ein hardwarenäheres Tutorial für
> programmierbare Logik? Eines, das erklärt, was die Teile können und
> wie ich die entsprechenden Funktionen über VHDL anspreche?
In einem kleinen CPLD wie dem 9572 hast du kaum hardwarespezifische 
Elemente (Clock-Manager, RAM, IO-Standards...) die du ansprechen kannst. 
Zudem sind da drin nur 72 FFs, das reicht nicht weit. Mehr dazu im 
Beitrag "Re: Überblick, Einschätzung der Möglichkeiten von CPLD/FPGA"

> Eines, mit Beispielen, die ich in der Hardware ausprobieren kann und
> deren Ergebnisse ich sehe (auch wenn ich sie an meinen Testaufbau
> anpassen muss)?
Schau mal auf meiner HP die Code-Schnipsel an: 
http://www.lothar-miller.de
Da ist exemplarisch das "Hello World" der Hardware, also ein Lauflicht, 
auf verschiedene Arten realisiert. Wenn du dir die Beschreibungen 
ansiehst und dazu den von der Synthese daraus erzeugten RTL-Plan, dann 
könnte der Zündfunke kommen  ;-)

von Armin (Gast)


Lesenswert?

Lothar Miller schrieb:
>> Für mich ist Beispielsweise dasda eine "race condition":
> Ist es nicht, denn wenn die Studenten/Schüler Signale sind, und das in
> einem Prozess abgebildet wird, dann greift die einfachste VHDL-Regel:
> Die letzte Zuweisung an ein Signal in einem Prozess setzt dessen Wert.
> Der STUDENT_2 ist also abgesehen von der Jahreszahl genau der selbe wie
> der STUDENT_1.

ja, ich hatte zu diesem Zeitpunkt noch nicht gelesen, dass es mehrere 
Möglichkeiten gibt. Dieser Codeschnipsel war NICHT in einem Prozess, 
sondern wird parallel ausgeführt - stand einfach so in der architecture
(http://www.vhdl-online.de/tutorial/deutsch/t_80.htm#pgfId-1017987)

Hier schreiben also parallel zwei Quellen auf das Signal

Lothar Miller schrieb:
>> Meine Frage also: gibt es ein hardwarenäheres Tutorial für
>> programmierbare Logik? Eines, das erklärt, was die Teile können und
>> wie ich die entsprechenden Funktionen über VHDL anspreche?
> In einem kleinen CPLD wie dem 9572 hast du kaum hardwarespezifische
> Elemente (Clock-Manager, RAM, IO-Standards...) die du ansprechen kannst.

Es geht ja nicht darum, dass es viele Elemente sind. Aber es fehlt 
einfach die Erklärung, was auf dem Weg von VHDL --> CPLD passiert.
Man kann ja (über Loops) z.B. auch Flipflop's aus NANDs zusammenbauen.
Keine erklärung, warum
1
Out2 <= In1 NAND Out1;
2
Out1 <= In2 NAND Out2;
funktioniert, aber z.B.
1
-- T-FlipFlop
2
Out2 <= (In1 NAND Out1) NAND Out1;
3
Out1 <= (In1 NAND Out2) NAND Out2;
nicht.


Deine Seite ist tatsächlich toll. Du hast dich ausgiebig damit 
beschäftigt und jede Menge Zeug ausprobiert.
Aber sie ist kein Tutorial. Und auch wenn immerhin die Synthese an 
vielen Stellen analysiert wird, fehlen die Begründungen, warum etwas wie 
übersetzt wird. Aber wer soll das schon wissen? ^^

danke auf jeden Fall

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


Lesenswert?

> Und auch wenn immerhin die Synthese an vielen Stellen analysiert wird,
> fehlen die Begründungen, warum etwas wie übersetzt wird.
Die Begründungen sind fast immer die selben. Als Grundlage kann ich nur 
auf das von mir zitierte Buch verweisen. Ich habe noch kein besseres 
deutsch-sprachiges Buch zum Thema "Synthese" gefunden.

Und anschliessend zum Vertiefen und zum weiteren Ausbau:
P. Ashenden "The designer's guide to VHDL".

> Keine erklärung, warum
> Out2 <= In1 NAND Out1;
> Out1 <= In2 NAND Out2;
> funktioniert, aber z.B.
> Out2 <= (In1 NAND Out1) NAND Out1;
> Out1 <= (In1 NAND Out2) NAND Out2;
> nicht.
Dir muß klar sein, dass in einem FPGA jede Beschreibung auf Logik und 
D-FFs abgebildet werden muß. Es kann daher nicht jede VHDL-Beschreibung 
umgesetzt werden. Deine T-FF Beschreibung ist sehr grenzwertig, weil so 
ein T-FF nur mit definierten Laufzeiten funktioniert.
In der Praxis wird für diese Aufgabe (Teiler durch 2) ein getaktetes 
D-FF mit entsprechender Kombinatorik (Inverter) zwischen Aus- und 
Eingang verwendet.

Es gibt im Idealfall im FPGA genau 1 Takt. Alles andere wird erst mal 
auf diesen Takt synchronisiert und dann mit diesem Mastertakt weiter 
verarbeitet.

von Stefan Salewski (Gast)


Lesenswert?

>und muss sagen, dass das ziemlich enttäuschend ist. Hier wird
>größtenteils nur der VHDL Formalismus durchgekaut, ohne genauere Infos,
>was in der Hardware passiert. Aufgabenstellungen für den Leser gibt es
>keine, nur fertige Beispiele; bloß dass da ständig Code verwendet wird,
>zu dem die Einführung und die Erklärung fehlt. Klar: kann man sich
>zusammenreimen, aber schön ist das nicht.

Ja, immer schön meckern...

Was Du suchst ist wohl eher ein Buch statt einem Tutoriual, etwa 
Reichardt/Schwarz. Ja, kostet etwas.

von Armin (Gast)


Lesenswert?

nö,
nur wenn etwas schlecht ist, wird gemeckert.
Aber dann richtig.

Gut ist Beispielsweise dieses Tutorial:
http://tut.php-quake.net/de/
hat aber hier thematisch nichts zu suchen ^^

trotzdem:
bei Quakenet wird ein code dargestellt und dann jedes Zeichen erkärt.
Das fehlt im VHDL-Tutorial.
Und meine Erfahrungen mit Büchern zeigt, dass diese auch nicht so 
aufgebaut sind.

Kann aber in dem oben genannten anders sein, weswegen ich mir das bei 
Gelegenheit ansehen werde.
Meistens sind Bücher aber zeitintensiver als Tutorials.


Wer meint, ich würde mir selbst widersprechen (schnell & viele Details), 
der sollte mal da oben PHP lernen!

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


Lesenswert?

Armin schrieb:
> Wer meint, ich würde mir selbst widersprechen (schnell & viele Details),
> der sollte mal da oben PHP lernen!
Die Ursache könnte sein, dass es 10000 Bücher und Tutorials zum Thema 
PHP geben dürfte, und die Wahrscheinlichkeit ist damit hoch, dass 
mindestens eines davon gut ist. VHDL hat dagegen einen etwas geringeren 
Verbreitungsgrad, da wird das von dir gesuchte Turorial schon noch 
irgendwann kommen...


> Meistens sind Bücher aber zeitintensiver als Tutorials.
Von nichts kommt nichts... :-/
Mach es kurz: Kauf das Buch, darin geht es nicht um VHDL als 
(Simulations-)Sprache, sondern genau wie der Titel es verspricht um VHDL 
für die Hardwarebeschreibung.
BTW: Hardwarebeschreibung ist wesentlich weniger intuitiv als so eine 
prozedurale Programmiersprache, da hilft nur üben. Es hilft dir nichts 
(oder nur ganz wenig) wenn du vorher C gelernt hast, denn die 
Denkweise ist eine komplett andere.

von Duke Scarring (Gast)


Lesenswert?

@Armin:
So etwas schönes wie das AVR-GCC-Tutorial habe ich für FPGA auch noch 
nicht gefunden. Es gibt z.B. in der Xilinx-Hilfe ein Getting started 
und
http://www.fpga4fun.com/

Duke

von Klaus F. (kfalser)


Lesenswert?

Armin schrieb:
> Wer meint, ich würde mir selbst widersprechen (schnell & viele Details),
> der sollte mal da oben PHP lernen!

Du verstehtst von der Sache noch gar nichts und meckerst herum.
Warum glaubst Du eigentlich, dass man jede x-beliebige Sache mit Hilfe 
eines Tutorials lernen kann, bzw. dass es nur von der Qualität des 
Tutorials abhängt ob Du etwas verstehst oder nicht?

Jeder hat ein anderes Basiswissen und jedes Tutorial oder Buch setzt 
eben gewisse Sachen voraus. Wenn ein Buch zu viele Grundlagen erlärt 
wird es langweilig für die einen die schon mehr verstehen.
Ein PHP Tutorial setzt meist auch schon voraus, dass der Leser weiss, 
was die Tastatur und was die Festplatte ist.
Bei VHDL geht es halt um Hardware, dort fehlt Dir wahrscheinlich noch 
das Grundlagenwissen was die "Festplatte" ist.

Leider muss man es doch immer wieder wiederholen :
VHDL ist keine Programmiersprache!!!
Du kannst sie nicht mit PHP vergleichen.

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.