Forum: FPGA, VHDL & Co. Einige Fragen zu VHDL


von Mathias Slawitschek (Gast)


Lesenswert?

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

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


Lesenswert?

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

von Mathias Slawitschek (Gast)


Lesenswert?

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.

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


Lesenswert?

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

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


Lesenswert?

Ich vergaß zu erwähnen:
Im den ersten paar Monaten deiner VHDL-Karriere brauchst du
keine Variablen und keine Schleifen.

von Mathias Slawitschek (Gast)


Lesenswert?

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

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


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

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.

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


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

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.

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.