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
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.
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
Du koenntest die Files nicht unabhaengig von der Hauptentity compilieren/simulieren lassen. Das waere jetzt glaube ich der Hauptgrund, das ueberall reinzuschreiben.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.