www.mikrocontroller.net

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


Autor: Flo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.