Hallo Leute,
Ich habe erst seit kurzem begonnen mich mit VHDL zu beschäftigen. Ich
lese mich wil durch das Internet, und jetzt habe ich von einem freund
doch ein Skriputum bekommen.
Da ich wirklich ein absouluter Anfänger bin sind mir da ein paar Fagen
aufgefallen.
ENTITY and2 IS
PORT ( in1,in2: IN bit;
nd_out: OUT bit);
END and2;
ARCHITECTURE number_one OF and2 IS
BEGIN
and_out<=in1 AND in2;
END number_one;
Bis hier her ist alles klar, aber ich verstehe den CONFIGURATION-Teil
nicht, was soll der Befehl heissen "FOR number_one" ?
CONFIGURATION and2_config OF and2 IS
FOR number_one
END FOR;
END and2_config;
Meine nächste Frage handelt sich um die Entwurfsebenen in VHDL (
Algorithmische, Register-Transfer-Ebene, Logikebene)
Also die Logikebene Versteh ich, das sind die ganzen &,ODER
Verknüpfungen. Aber was heisst Entwurfsebene, muss man bevor man
programmiert iergendetwas vordefinieren in welcher Entwurfsebene man ist
?
Meine frage ist nur was die Algorithmische ebene ist und die
Register-Transfer-Ebene, wozu benötigt man diese und was heisst
eigentlich Register-Transfer...
2 Fragen hab ich noch.
In einer Architecture wird folgendes geschrieben:
ARCHITECTURE .... OF ... IS
BEGIN
...
write_data_alg:PROCESS //was bedeutet diese Zeile ?
BEGIN
...
END PROCESS write_data_alg
END Anrchitecturename...
Es handelt sich um einen Processkörper, meine Frage ist was ist
überhaupt ein so ein Processkörper, wozu wird er benötigt, wieso steht
er in der Architecture und was ist eine Sensitivity-List ( wan braucht
man die) ?
Sorry Leute, aber ich kann echt alles nur Bruchweise oder fast gar
nichts, ein gutes Buch find ich nicht und ich habe dieses Skriptum nur
von einem Freund bekommen. Ich hoffe ihr könt mir, bei den warscheinlich
logischsten Fragen :) , helfen.
MFG Mathias
Mathias Slawitschek schrieb:> ein gutes Buch find ich nicht
Leih dir "VHDL-Synthese" von Reichardt&Schwarz aus...
Das ist zumindest das bruchbarste deutsche Buch zum Thema.
Und dann natürlich/zusäztzlich als Nachschlagewerk Peter Ashenden
umfassender "Designers Guide to VHDL"
Es ist müßig, diese Grundlagenfragen zu beantworten, denn du hast noch
gar keinen Plan von VHDL (das ist nicht nicht böse gemeint), deshalb
könntest du mit irgendwelchen Antworten nichts anfangen. Bestenfalls
würden dann neue Fragen auftauchen...
Naja in dieser kurzen Zeit hab ich nichts gefunden was Bücher angeht.
Was ich vergessen habe ist, das ich in C schon Kentnisse habe, also
komplett blank bin ich nicht was im Allgemeinen das Programmieren
angeht.
Mathias Slawitschek schrieb:> Was ich vergessen habe ist, das ich in C schon Kentnisse habe,
Schlecht, schlecht... :-/
> also komplett blank bin ich nicht was im Allgemeinen> das Programmieren angeht.
Vergiss die Software- und Programmier-Denkweisen sofort. VHDL ist nicht
"Programmieren". VHDL ist Hardwarebeschreibung. Das bedeutet: du
beschreibst mit Buchstaben etwas, das du dir im Kopf als Logik und
Flipflops vorstellen kannst (nur diese Elemente gibt es in
programmierbarer Logik!). Wenn du dir die Funktion nicht vorstellen
kannst, dann kommt UNBEDINGT Schrott raus...
> Es handelt sich um einen Processkörper,
Soweit korrekt.
> meine Frage ist was ist überhaupt ein so ein Processkörper,
Es ist ein Syntaxelement der Sprache VHDL.
> wozu wird er benötigt,
Um sequentielle Beschreibungen zu gruppieren.
Und schon das Wort "sequentiell" ist in der Hardwarebeschreibung extrem
irreführend. Da ist nichts mit "hintereinander", da passiert alles
GLEICHZEITIG...
> wieso steht er in der Architecture
Nur dort darf er hin.
> und was ist eine Sensitivity-List
Das ist die Liste, die dem SIMULATOR angibt, bei welchen
Signaländerungen der Prozess neu zu berechnen ist.
> ( wan braucht man die) ?
Die braucht man imn jedem Prozess, der nicht mindestens ein wait
Statement enthält. Wenn der Prozess aber eine wait Anweisung enthält,
muss die Sensitivliste leer sein!
Zum Thema "FOR-Schleife und Anfänger"...
Such mal nach meinen Postulaten:
http://www.mikrocontroller.net/search?query=anf%C3%A4nger+postulate&forums[]=9&max_age=-&sort_by_date=1
Ich würde dir zu allererst mal das "Hello World" der Hardware empfehlen:
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html
Ich danke dir sehr für diese Antworten.
Trotzdem bleiben noch die Ebenen über, üerall in diesem Skriptum werden
sie erwähnt.
Könntest mir Bitte diese auch so leicht ie möglich erklären ?
Danke im Vorhinein
MFG
Mathias Slawitschek schrieb:> Meine nächste Frage handelt sich um die Entwurfsebenen in VHDL> (Algorithmische, Register-Transfer-Ebene, Logikebene)> Also die Logikebene Versteh ich, das sind die ganzen &,ODER> Verknüpfungen. Aber was heisst Entwurfsebene, muss man bevor man> programmiert iergendetwas vordefinieren in welcher Entwurfsebene man ist
Diese "Ebenen" sind nur logische Denkmodelle und ausschliesslich zur
Verwirrung von Schülern und Studenten da. Es gibt diese "Ebenen" nicht
wirklich. Du kannst die "Beschreibungsarten" jederzeit beliebig mischen.
Einen Addierer kann ich z.B. auf der "algoritmischen Ebene" einfach als
c <= a+b;
beschreiben. Ich kann den auch auf der "Logik-Ebene" mit Halbaddierern
und einer Carry-Kette beschreiben, oder gar auf der RTL-Ebene mit
Basiselementen (AND-Gatter, (X)OR-Gatter) die mir der Hersteller des
FPGAs anbietet.
Nur ist das ausgekochter Blödsinn, und deshalb spielt sich das Ganze
sinnvollerweise auf der höchsmöglichen "Ebene" ab, die dann auch am
einfachsten lesbar ist.
Blöderweise machen da einige Lehrer noch recht lange am RTL-Halb- und
Volladdierer rum...
BTW:
Bitte nicht plenken...
> in welcher Entwurfsebene man ist> ?
Ein Fragezeichen hat keine eigene Zeile verdient... :-/
Allgemein würde ich sagen solltest du erst mal ein paar Digitaltechnik
Bücher Lesen. Also Kombinatorische Bauelemente und Sequentielle wie Flip
Flops (sind keine Schuhe).Wie man aus Kombinatorischen Sequentielle
macht. Die unterschiedlichen Arten von Flip Flops D,T,JK, rote Flip
Flops, grüne mit Punkten usw. naja. Und wie man Sie verschaltet um etwas
bestimmtes zu erreichen.
Dann sollten Counter dran sein z.B. zeichne einen Binären Counter der
von 0 bis 9 Zählt vorwärt und Rückwärts usw.
Dann Statemachines, also Kombinatorische Bauelemente mit Sequentiellen
in allen Varianten. KV-Diagramme usw.
Dann Erkennen das man mit einer Normalen Programmiersprache eigentlich
alles Nachbilden Kann. Ausprobieren und erkennen das trotzdem alle
Kombinatorik IMMER sequentiell ist.
Nun eine Hardwarebeschreibungssprache wie VHDL probieren und alles wird
OK.
Uwe schrieb:> Also Kombinatorische Bauelemente und Sequentielle wie Flip Flops> :> das trotzdem alle Kombinatorik IMMER sequentiell ist.
Was ist jetzt sequentiell? Flipflops oder Kombinatorik?
Und was hat das mit einer sequentiellen Beschreibung (in einem Prozess)
oder einer nebenläufigen Beschreibung (ohne Prozess) zu tun?
Aber im Tenor stimme ich zu: die Hardware-Denkweise lernen.
Uwe schrieb:> Die unterschiedlichen Arten von Flip Flops D,T,JK, rote Flip> Flops, grüne mit Punkten usw.> Und wie man Sie verschaltet um etwas bestimmtes zu erreichen.
Das Kennen der unterschiedlichen Flipflops in einem FPGA ist schnell
erledigt: es gibt nur das D-Flipflop. Als Krönung mit Clock-Enable. Als
Gimmick mit Preset/Clear oder Set/Rest. Fertig ist die Laube.
Und dann gibt es noch, meist aus einer fehlerhaften Beschreibung
resultierend: das gemeine LATCH... :-o
Ich schrieb
-> Dann Erkennen das man mit einer Normalen Programmiersprache
eigentlich
-> alles Nachbilden Kann. Ausprobieren und erkennen das trotzdem alle
-> Kombinatorik IMMER sequentiell ist.
-> Nun eine Hardwarebeschreibungssprache wie VHDL probieren und alles
wird
-> OK.
Erklärung :
In einer Programmiersprache Versuchen bestimmte Schaltungen zu
realisieren und Erkennen das eine normale Programmiersprache immer
Sequentiel ist und man nur mit Tricks eine Nebenläufigkeit simmuliert
bekommt. (Multithreading und so mal ausgenommen)
Danach merkt man schnell das VHDL keine Programmiersprache ist sondern
eine Harware beschreibungssprache.