Hello, ich arbeite in Quartus II Version 12 Ich habe in meinem Projekt auf zwei VHDL Dateien geteilt. Ein Teil der Kode liegt in File_0 (Top-Entity). Der Rest liegt in File_1. Beide VHDL Dateien sind unter "Project Navigator"-->"Files" sichtbar. Doch beim Kompilieren oder RTL-Simulation wird nur die Top-Entity Datei bearbeitet. Ich vermute, dass ich File_1 irgendwie in meinen Projekt einfügen soll, aber ich weiss nicht wie. Kann mir jemand schnell die Antwort posten? Danke:)
So ohne weiter Informationen würde ich vermuten, das Du, was immer in dem zweiten File ist, in dem ersten nicht verwendest. Und bitte, schreib nicht: "Ein Teil der Kode". Da kräuseln sich mir die Fussnägel. Lieber "Ein Teil des Codes".
Hmm schrieb: > So ohne weiter Informationen würde ich vermuten, > das Du, was immer in dem zweiten File ist, > in dem ersten nicht verwendest. > > > Und bitte, schreib nicht: "Ein Teil der Kode". Da kräuseln sich mir die > Fussnägel. Lieber "Ein Teil des Codes". Sorry, Deutsch ist nicht meine Muttersprache, aber ich bemühe mich:) Also, soll ich alles was ich verwenden will in TopLevel Entity schreiben. Hm, mal sehen.
Hallo Anton, zeig uns deinen Code, dann können wir dir auch zeigen wo dein Fehler liegt. Auf Basis der wenigen Information die du uns bisher gegeben hast vermute ich dasgleiche wie mein Vorredner. Du must die componente aus file_1 in file_0 instanziieren. gruß dasdgw
>Also, soll ich alles was ich verwenden will in TopLevel Entity schreiben. Nein. Das habe ich so nicht gesagt. Das widerspräche auch der VHDL-Philosophie, wenn man das so nennen darf. No. I didn't say so. This would contradict even the philosophy of VHDL if i may name it this way. Was ich meinte, war, das irgendein Ding in der Datei file_1, nur dann in die Analyse, Elaboration, etc. einbezogen wird, wenn Du es in file_0 auch verwendest. Im Umkehrschluss heisst das, wenn nichts aus file_1 im Endergebnis auftaucht, dann referenzierst Du es in file_0 auch nicht. What I meant, was, that any thing in file_1 is only then considered during analysis, elaboration aso., if you refer to it in file_0. The converse argument would be, that nothing from file_1 will appear in the final structure if you do not refer to it in file_0. Das heisst nicht, das Du alles in einer Datei zu schreiben hast. That does not implie, that you have to flatten your structure to one file. Verstehst Du? Do you understand?
Es könne helfen, wenn Du mal ein einfaches Beispiel konstruierst und es damit probierst. Wenn dann das selbe Problem auftaucht poste das hier. It could helb if you construct a simple example und try. If the same problem appears again, post it here. Gibt es keine Fehlermeldungen oder Warnungen? No error messages or warnings? Es mag sein, das eine Unterentity vollkommen wegoptimiert wird. It may happen that a sub entity is optimized away.
Hmm schrieb: > Es könne helfen, wenn Du mal ein einfaches Beispiel konstruierst und es > damit probierst. Wenn dann das selbe Problem auftaucht poste das hier. > > It could helb if you construct a simple example und try. If the same > problem appears again, post it here. > > Gibt es keine Fehlermeldungen oder Warnungen? > > No error messages or warnings? > > Es mag sein, das eine Unterentity vollkommen wegoptimiert wird. > > It may happen that a sub entity is optimized away. Vielen dank für deine Antworten und Hilfsbereitschaft. Du kannst nur auf Deutsch schreiben, sooo schlecht bin ich nicht(meine Muttersprache ist Russisch):)) Ich lerne jetzt wie man mit Packages und Funktionen umgeht. 1. In File_0 liegt die Hauptbeschreibung meines Testbeispieles (was es macht spielt keine Rolle, ich übe nur). 2. In File_1 wird ein PACKAGE beschrieben, mit zwei Funktionen A und B. Auserdem hat File_1 noch ein ENTITY+ARCHITECTURE Die Funktion A wird in File_0 verwendet. Die Funktion B nur in File_1. Die Funktion A wird in NetlistViewer und RTL-Simulation sichtbar. Die FUNKTION B aber nicht. Genauso kann ich alles was in File_1 steht nicht simulieren.
Nun. Leider spreche ich kein Russisch (ausser "Borschtsch" und "Durak" und ein paar anderen Worten weiss ich nichts darüber). Falls nichts hilft, kannst Du noch die Übersetzungsfunktion von Google benutzen. Also gut. Das Problem ist, was genau in File_01 in Bezug auf Funktion B steht. So kann man die Frage leider nicht befriedigend beantworten. Wir wissen nicht, ob Du, die Funktion B richig referenzierst, oder ob sie evtl. wegoptimiert wurde. Du wirst nicht darum herumkommen, ein Beispiel zu schreiben, was genau dieses Verhalten zeigt. Oder poste eben Deinen Code hier.
Ok, dann poste ich mal mein Kode hier, aber bitte nicht lachen :D File_0
1 | library ieee; |
2 | |
3 | use ieee.std_logic_1164.all; |
4 | use ieee.std_logic_unsigned.all; |
5 | use work.my.all; |
6 | ENTITY test IS |
7 | |
8 | PORT( |
9 | n,m : IN STD_LOGIC; |
10 | R: OUT STD_LOGIC |
11 | );
|
12 | END test; |
13 | |
14 | ARCHITECTURE B OF test IS |
15 | BEGIN
|
16 | R <= EQ(n,m); |
17 | END B; |
So, jetzt File_1
1 | library ieee; |
2 | use ieee.std_logic_1164.all; |
3 | use ieee.std_logic_unsigned.all; |
4 | PACKAGE my IS |
5 | FUNCTION EQ(A,B :STD_LOGIC) RETURN STD_LOGIC; |
6 | FUNCTION COMP(a1,a2 :STD_LOGIC_VECTOR) RETURN STD_LOGIC; |
7 | END my; |
8 | PACKAGE BODY my IS |
9 | FUNCTION EQ(A,B:STD_LOGIC) RETURN STD_LOGIC IS |
10 | BEGIN
|
11 | IF (A = B) THEN |
12 | RETURN '1'; |
13 | ELSE
|
14 | RETURN '0'; |
15 | END IF; |
16 | END EQ; |
17 | |
18 | |
19 | FUNCTION COMP(a1,a2: STD_LOGIC_VECTOR) RETURN STD_LOGIC IS |
20 | BEGIN
|
21 | IF (a1>a2) |
22 | THEN RETURN '1'; |
23 | ELSE RETURN '0'; |
24 | END IF; |
25 | END COMP; |
26 | |
27 | END my; |
28 | |
29 | |
30 | |
31 | ENTITY BB IS |
32 | PORT( |
33 | A,B,C,D,E : IN STD_LOGIC; |
34 | V1,V2: IN STD_LOGIC_VECTOR(3 downto 0); |
35 | O :OUT STD_LOGIC |
36 | );
|
37 | END BB; |
38 | |
39 | |
40 | ARCHITECTURE NABLA OF BB IS |
41 | BEGIN
|
42 | PROCESS(E) |
43 | BEGIN
|
44 | IF (E='1') THEN |
45 | IF (COMP(V1,V2) ='1')THEN |
46 | O<= EQ(EQ(A,B),EQ(D,C)); |
47 | ELSE O<= 'Z'; |
48 | END IF; |
49 | END IF; |
50 | END PROCESS; |
51 | END NABLA; |
Ok, ich habe das Projekt neu erstellt, und mein Kode einfach kopiert. jetzt sieht die RLT simulation beide VHDL-Dateien. Nur die NetlistViewer zeigt immer noch nur die "test" ENTITY aus File_0
Anton R. schrieb: > Nur die NetlistViewer zeigt immer noch nur die "test" ENTITY aus File_0 Klar, Du instantierst ja Entity BB nicht in Entity B (Component und dazugehörige Instanz in der Toplevel Entity oder darunter). Aus Deinem File_1 wird zur Zeit nur die Funktion "EQ" benutzt.
Peter K. schrieb: > Anton R. schrieb: >> Nur die NetlistViewer zeigt immer noch nur die "test" ENTITY aus File_0 > > Klar, Du instantierst ja Entity BB nicht in Entity B (Component und > dazugehörige Instanz in der Toplevel Entity oder darunter). Aus Deinem > File_1 wird zur Zeit nur die Funktion "EQ" benutzt. Hm, TNX. Jetzt muss ich noch herausfinden, wie Entity BB in B instantiere...so weit bin ich im Buch noch nicht:)
Hall noch einmal. Kann mir BITTE jemand die richtige Instantierung ENTITY BB vorführen? Ich habe schon mehrere Beispiele aus dem buch ausprobiert, doch Quartus gibt nur vrschieden Fehler aus. ich vermute, ich mache es komplett falsch:(
Aus Fehlern lernt man mehr als wenn einem einer den fertigen Text vorzeigt. Poste doch mal Deine Versuche und die Fehlermeldungen dazu. Und schreibe was Du davon verstehst und was nicht. Ich weiss ja nicht was Du für ein Buch hast, aber da sollte ein Kaptitel/Paragraph "Component Declaration" und "Compontent Instantiation" enthalten sein.
O.k. nach eine lange schlaflose Nacht habe ich es geschafft. Jetzt weiss ich wie das geht:)
Glückwunsch. Ist doch ein befriedigendes Gefühl, nicht wahr?
Anton R. schrieb: > O.k. > nach eine lange schlaflose Nacht habe ich es geschafft. > Jetzt weiss ich wie das geht:) Hm, was wohl dein zukünftiger Chef denken wird? "Wozu haben sie denn am Freitag 8 Überstunden gemacht?" "Ich musste lernen, wie man eine Komponente instantiiert!"
Klaus schrieb: > Anton R. schrieb: >> O.k. >> nach eine lange schlaflose Nacht habe ich es geschafft. >> Jetzt weiss ich wie das geht:) > > Hm, was wohl dein zukünftiger Chef denken wird? > > "Wozu haben sie denn am Freitag 8 Überstunden gemacht?" > "Ich musste lernen, wie man eine Komponente instantiiert!" Vergiss die Sarkastiker. Finde es noch immer sinnvoller, etwas mehr Zeit nachzudenken und dann etwas begriffen zu haben, als schnell etwas zusammenzukopieren und das nächste Mal wieder anzustehen.
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.