Forum: FPGA, VHDL & Co. [VHDL] Use vor jeder Entity, was ist mit Library?


von Matthias L. (matze88)


Lesenswert?

Hallo zusammen,

Ich lerne gerade VHDL fürs Studium. Das geht mehr oder minder gut, ich 
stehe jedenfalls noch direkt am Anfang und habe kurz 2 kleine Fragen:

Warum muss ich vor jeder Entity die use-Anweisung wiederholen? (Bsp: use 
ieee.std_logic_1164.ALL)

Und:
http://public.tfh-berlin.de/~haas/lehre/eda1/WS02/unterl1.pdf dort 
(gegoogelt) steht, dass man die Library Anweisung (LIBRARY ieee) nur 1x 
pro Datei(zu Beginn) braucht; mein Quartus II hätte die aber ebenfalls 
gerne vor jeder Entity bzw. vor dem jeweiligen Use, da er sonst "object 
ieee is used but not declared" bringt.

Ich kann das ja nun hinnehmen; Aber warum ist das so?

Vielen Dank schonmal,

Matthias

von Klaus F. (kfalser)


Lesenswert?

Warum Quartus das so braucht, weiss ich nicht, aber die meisten 
schreiben in eine Datei nur eine Entity.
Es wird normalerweise empfohlen, und man nennt die Datei gleich wie die 
Entity, Extension .vhd.

von Matthias L. (matze88)


Lesenswert?

Erklärt zwar nicht alles (aber vielleicht gibts ja auch keine Erklärung 
außer "Ist so"), aber immerhin weiß ich jetzt was Sache ist :-)

Dankeschön!

Matthias

von Gast (Gast)


Lesenswert?

Du koenntest die Files nicht unabhaengig von der Hauptentity 
compilieren/simulieren lassen. Das waere jetzt glaube ich der 
Hauptgrund, das ueberall reinzuschreiben.

von nixda (Gast)


Lesenswert?

hi,

das vhdl-lrm (language reference manual) definiert was vhdl ist (syntax 
und semantik). das lrm definiert sachen diskutiert aber nicht pro/cons 
bzw design entscheidungen warum es so ist. dies laeuft in den working 
groups zum standard:

die frage fuer dich heisst: fuer welchen scope gilt die "library clause" 
bzw die "use-clause"? grob gesprochen gelten use/library clause vom 
punkt nach der stelle im text bis an das ende der "declarative region" 
der design unit die zur declaration gehoert.

also zb. library+use vor der entity gilt auch fuer die architecture. 
library+use vor der architecture gilt nur fuer die architecture.


die library clause ermoeglicht es dir ueberhaupt auf sachen in einer 
library zuzugreifen. libraries stehen im lrm vhdl87-11.2

die use clause macht symbole in einem scope sichtbar ohne dass man den 
package/library noch mit angeben muss (vhdl87-10.4). dort ist auch genau 
definiert wie weit der scope der use cause reicht (bzw was bei 
konflikten passiert).

klingt abstrakt? einfach mal die lrm abschnitte lesen und die beispiele 
durchsehen. alternativ die lrm-faq im netz.

regards

von Matthias L. (matze88)


Lesenswert?

Vielen Dank, vor allem an nixda (Gast), für die tolle Erklärung.

Ich habe das jetzt soweit verstanden und kann das so hinnehmen :-) Die 
Klausur ist inzwischen auch schon gelaufen (ging garnicht so weit ins 
VHDL Detail - nur ne simple 3-Prozess Modellierung einer Art 2-bit 
Zähler bzw. /4 Frequenzteiler) und an VHDL werde ich 
wohl/vll/hoffentlich trotzdem noch länger dran bleiben :-)

-Thema erledigt-
Matthias

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.