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
> 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 ;-)
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<=In1NANDOut1;
2
Out1<=In2NANDOut2;
funktioniert, aber z.B.
1
-- T-FlipFlop
2
Out2<=(In1NANDOut1)NANDOut1;
3
Out1<=(In1NANDOut2)NANDOut2;
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
> 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.
>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.
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!
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.
@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
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.