Hallo, so ich habe ein eigenes Package Seg7Decoder in VHDL geschrieben und in der Datei MyFirstPackage abgespeichert. Alles funktioniert super. Ich habe nur ein Problem beim einbinden der Package in mein Projekt. Ich dachte mit: library Seg7Decoder use work.Seg7Decoder.all mache ich meinem Projekt die Library bekannt. Ich habe auch die Datei MyFirstPackage in den work Ordner kopiert. Aber es funktioniert nicht. Es funktiniert erst, wenn ich mein Projekt mittels Add Source die Datei MyFirstPackage.vhdl bekannt mache. Ich finde das aber unschön. Die Standard library IEEE kann ich schließlich auch ohne vorherige Add Source benutzen. Ich danke schon mal für Eure Tipps, Sebastian
library Seg7Decoder use work.Seg7Decoder.all ^^^^ der erste Teil nach use ist der Bibliotheksname, du nimmst das package aus work, nicht seg7decoder. Deine Library zeile ist zweckfrei. Bibliothek meint nicht Quelltext sondern compilierten Quelltext. Also du musst den Quelltext deines packages compilieren bzw. dem automat. Compilieren bekannt machen (z.B mit add source). Und du musst angeben in welche Bibliothek compiliert werde soll. Wenn nicht, wird standardmäßig nach work compiliert. Die IEEE ist als standardbibliothek schon vorcompiliert, deshalb musst Du das add nicht ausführen.
Hallo, @FPGAküchle danke für Deine Antwort. Damit komme ich, bestimmt weiter. Aber ich hab da noch zwei Fragen. Ich habe mein Package in einem "neuen Projekt" erstellt. Mir fällt auf, dass ich das nie compiliert habe. Sondern ich habe immer nur die Syntax checken lassen. Hier meine erste Frage, wie lasse ich mein Package compilieren? Ich sehe da kein XST- oder Compile-Knopf. Welche Endung hat meine compilierte Package dann??? *.lib ??? Danke für Eure Geduld, Sebastian
Hallo zusammen, also es tut mir echt leid aber ich denke ich bin zu blöd. Ich weiß nicht wie ich den Pfad ändern kann wohin XST compiliert. Ich habe in meinem extra Projekt, indem ich das Package geschrieben habe, einen Ordner namens work. In diesem befindet sich die Dateien: hdpdeps.ref hdlib.ref und dann noch einen Subordner namens sub00 mit vhpl00.vho und vhpl01.vho Ist da mein Package drin???? Wenn ja, dann finde ich das komisch, weil dann meine Packages immer den gleichen Dateienname bekommen. Ich bin es gewohnt von meinen C++Projekten libraries einfach in ein Projekt zu kopieren und fertig....#include... Danke Sebastian.
Ein #include oder ähnlichees gibt es in VHDL nicht. Allerdings steht es Dir frei deinen Quelltext vor Synthese/Simulation-Complation durch einen Präprozessor (wie der von C) zu schicken. Dann kannst Du natürlich mit #include arbeiten.
Mal für einen Idionten wir mir: 1.Schritt: Ich habe eine VHDL File namens MyFirstPackage.vhd (in einem völlig neuen Projekt). Das muss ich jetzt compilieren. Aber wie?
Für die Synthese kannst Du nicht die Library aus einem anderen Projekt einbinden, Du kannst nur den Quelltext einbinden. Das geht mit Menu "Projekt/Add Source..". Damit bleibt das Quellfile im Verzeichnis wo es ist. Du kannst aber auch mit "Project/Add Copy of source.." eine Kopie des Files MyFirstPackage.vhd in dein Projektverzeichnis kopieren. Wenn Du unbedingt dein File in eine getrennte Library kompilieren willst, dann mußt Du erst mit "Projekt/New Source.." eine neue VHDL Library erzeugen. Dann kannst Du dein Quellfile in diese Library verschieben (im rechten Fenster "Sources" das File auswählen, rechts klicken und "Move to Library .. "). Das Arbeiten mit Libraries bei der Synthese macht nur Sinn, wenn man bei der Simulation sein großes Projekt in Libraries aufgeteilt hat, und man am Quellcode kein Komma ändern will. Es ist aber nicht notwendig, dein Package in eine getrennte Library zu kompilieren. Du darfst Libraries in VHDL nicht unbedingt mit C++ Libraries vergleichen. Libraries sind logische Einheiten, wie der Compiler sie auf Files und Directories abbildet, ist implementierungsabhängig. Libraries machen Sinn um z.B. Testbench und Projekt zu trennen und generische Teile wiederzuverwenden. Bei Test und Simulation funktioniert dies gut, und der Simulator kann auf vorkompilierte Libraries einbinden und verwenden. XST ist ein Compiler für Hardware, er will alles jedesmal frisch kompilieren (jedenfalls bei den meisten Projekten, man kann ihn auch dazu bringen nur inkrementell zu kompilieren). Du darst jedenfalls nicht ein Verzeichnis aus einem Projekt in ein anders kopieren. Grüße Klaus
Danke Klaus für Deine ausführliche Antwort. Ich werde mir das mal in Ruhe am WE durch den Kopf gehen lassen. Sebastian
Hallo, also ich habe den Vorschlag vom Klaus Falser ausprobiert und ich bin damit sehr zufrieden. Auch die use & library Zeilen sind nun wirksam. Ich kann alles synthetisieren und auf mein Starterkit flashen :-) und alles funktioniert wie erhofft. Das einzigste was jetzt nicht mehr geht ist die Simulation. Ich bekomme immer den Fehler: Bad pointer access... closing vish. Irgendwie habe ich die Vermutung, dass die Testbench, die MyPackage.vhd-Datei in meinem MyLib-Ordner, NICHT einbindet. Gibt es dafür ein Lösung?
Hm, schau mal noch ner Warning von Modelsim, wie: "...No default binding..." "...will crash...". (Sorry ich weiss es nicht genauer). Dort sagt er dir was nicht stimmt, also das er ein Package oder Componente nicht findet, oder die die er findet nicht passt "port missmatch" oder so. Diese Warning kannst Du uns in Forum stellen, dann kann man eher sagen woran es liegt und was er nicht findet. Du kannst auch im Library Browser vom Modelsim (Irgendeinmenupunkt im Hauptfenster) schauen was in den Bibliotheken drin ist. Wenn was in der Bibliothek fehlt musst du es dort hinein compilieren, Das mache ich mit Modelsim selber, ich trau dem projektnavigator der ISE nicht. Da gibbets irgendwie den Menüpunkt compile, da klappet dan ein fenster auf zur Auswahl welches File in welche Bibliothek soll.
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.