Forum: FPGA, VHDL & Co. Package (Quartus II)


von Flo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

vielleicht kann mir einer von euch weiter helfen!
Ich möchte ein Package mit Quartus erstellen, hab aber einige Probleme 
mit dem Kompiler.
Laut Fachbücher sollte der Code richtig sein und in anderen Programmen 
funktioniert er auch.
Falls jemand Erfahrungen hat, mit erstellen von Package mit Quartus II, 
meldet euch.

Vielen Dank

Gruß Flo

von Klaus F. (kfalser)


Lesenswert?

Ein Package ist keine Entity !!
Du mußt zuindest eine Top-Level Entity schreiben, in der die Prozezur 
concurrent aufgerufen wird.
Ob der Compiler das dann auch für die Synthese versteht, weiss ich aber 
nicht, empfehlenswert ist das aber in keinem Fall.

Aber warum so kompliziert für den Anfang?
Schreib eine normale Entity mit einem Prozess.

Klaus

von Flo (Gast)


Lesenswert?

Hallo Klaus,

danke für die Antwort.
Es ist nicht der Einstieg in VHDL.
Ich brauche sehr viele verschiedene Frequenzen und auch andere 
Funktionen für meine Programme.
Dafür möchte ich mir ein Package erstellen, welches ich in der Library 
aufrufe und dann mir zur Verfügügung steht, um meinen Programmcode 
übersichtler zu gestalten und nicht jedesmal neu erzeugen muss.
Ich versteh nicht warum mein Code in anderen Programmen kompilierbarbar 
ist und in Quartus II nicht!
Theoretisch müsste es doch funktionieren.

Florian

von Klaus F. (kfalser)


Lesenswert?

Die Verwendung eine Packages kann schon funktionieren, aber Quartus 
verlangt eine Entity als Top-Level.
Es wurde ja kompiliert, aber es meckert weil es eine entity "freq_pkg" 
sucht. Diese gibt es nicht, es gibt nur ein package mit diesem Namen.

Zum Erstellen von parametrisierbarem Kode gibt es die generics.
Auch wenn es vielleicht nicht dein erstes VHDL Programm ist, sattelfest 
scheinst Du doch nicht zu sein.
Du solltest also "konventionellere" Lösungen anstreben.

Klaus

von Flo (Gast)


Lesenswert?

Ja klaus da geb ich dir recht.
Sattelfest oder gar Profi bin ich noch lange nicht.
Ich möchte mich aber weiter entwickeln.

Und dafür hilft mir dein Kommentar leider nicht.

Ich würde mal gern sehen wie im Quartus ein package angelegt wird. Das 
kann doch nicht so schwer sein!
Eine entity hatte ich auch schon geschrieben aber der Kompiler meckert. 
Ich hatte schon einige Ansprechpartner, welche auch überfragt sind. 
Warum das in Quartus nicht funktioniert. Mit Xilinx funktioniert es ja 
auch, nur hier im Quartus nicht (und das soll ich im Rahmen des Studiums 
benutzen).

Liegt es vielleicht an der Web-edition?

Florian

von Klaus F. (kfalser)


Lesenswert?

> Und dafür hilft mir dein Kommentar leider nicht.

Wieso, jetzt habe ich es Dir doch schon 2x gesagt :
Quartus braucht eine Top-level Entity, diese hast Du nicht in deinem
Projekt !

Lege ein Projekt mit einer Entity an, mit Eingangs- und Ausgangsignalen.
Diese sei Dein Top-Level.
In eimem 2. File liegt dein Package mit der Prozedur.

Im der Architecture der Top-Level Entity wird deine Prozedur dann 
verwendet.
Anders funktioniert's bei Xilinx sicher auch nicht.

Und falls Du wirklich nicht weißt was der Unterschied zwischen einer 
Entity und einer Prozedur ist, dann hilft Jammern auch nicht weiter 
sondern nur das Nachlesen der Grundlagen.
Wo hast Du die Vorlage für Deinen Kode überhaupt her? Wenn es ein Buch 
ist, dann kauf Dir ein besseres.

von Flo (Gast)


Lesenswert?

Entschuldige, wollte dich nicht angreifen oder verärgern.

Ich bin dankbar, dass du mir weiter hilfst.
Weißt du wo ich ein package, welches mit Quartus programmiert wurde, im 
Internet finde?
Das würde mir sehr weiterhelfen.

Vielen Dank für deine Bemühungen.

Gruß Flo

von Klaus F. (kfalser)


Lesenswert?

Nein, leider, außerdem mit Quartus habe ich weniger zu tun.

In Deinem Fall geht es meiner Ansicht nach nicht um das Package selbst.
Das Package wurde ja kompiliert und akzeptiert.
Du definierst aber eine Prozedure und (zum wiederholten Male) KEINE 
Entity. Das ist der Fehler.
Poste doch einmal deine Quellfiles (und bitte nicht wieder die 
Bildschirmkopie), dann kann Dir vielleicht jemand weiter helfen.
Es sollten 2 Quellfiles sein, das Top-Level mit der Entity und das 
Package.

von Flo (Gast)


Lesenswert?

Ja hab ich nun gemacht.

Und du hattest recht. Für das Anlegen eines package braucht man eine 
entity und eine architecture.
Jetzt werde ich mal ein Testprogramm schreiben und die procedure mal 
aufrufen. Bin gespannt ob dieses funktioniert. Weißt du ob das Package 
einen bestimmten Pfad haben muss, dass es in ein Programm eingebunden 
werden kann?

Vielen Dank jetzt bin ich schlauer.

Aber eine Frage hab ich noch:
Weißt du warum ab einer bestimmten Anzahl von events eine Fehlermeldung 
erscheint?
Verringert man die Anzahl von events verschwindet die Fehlermeldung 
wieder.

von Klaus F. (kfalser)


Lesenswert?

Nein, es ist Dir immer noch nicht klar.
Es braucht kein Entity um das Package anzulegen, aber die Synthese 
braucht eine Entity.
Und Du brauchst auch kein Testprogramm, die Top-Level Entity ist das 
"Programm" in dem die Prozedure aus dem Package aufgerufen wird.
Es gibt auch keine Pfade zum Package.

Bitte tu Dir doch einen Gefallen und fang mit einfachen Beispielen an. 
Glaub mir bitte, Du hast VHDL noch nicht verstanden, Du solltest 
wirklich bei den Grundlagen von VHDL und VHDL-Synthese anfangen.

von Flo (Gast)


Lesenswert?

Ok werd ich. Kannst du ein Buch empfehlen?
Ich habe derzeit VHDL-Synthese und The Designer´s Guide to VHDL.
Beide find ich ganz gut.

von Klaus F. (kfalser)


Lesenswert?

Diese Bücher sollten eigenlich ok sein, aber vielleicht haben andere 
noch ein paaar Empfehlungen ...

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.