Forum: FPGA, VHDL & Co. Quartus II, mehere Dateien in Projekt einfügen


von GS (chromosoma)


Lesenswert?

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:)

von Hmm (Gast)


Lesenswert?

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".

von GS (chromosoma)


Lesenswert?

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.

von Michael F. (dasdgw)


Lesenswert?

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

von Hmm (Gast)


Lesenswert?

>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?

von Hmm (Gast)


Lesenswert?

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.

von GS (chromosoma)


Lesenswert?

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.

von Hmm (Gast)


Lesenswert?

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.

von GS (chromosoma)


Lesenswert?

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;

von GS (chromosoma)


Lesenswert?

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

von P. K. (pek)


Lesenswert?

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.

von GS (chromosoma)


Lesenswert?

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:)

von GS (chromosoma)


Lesenswert?

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:(

von Hmm (Gast)


Lesenswert?

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.

von GS (chromosoma)


Lesenswert?

O.k.
nach eine lange schlaflose Nacht habe ich es  geschafft.
Jetzt weiss ich wie das geht:)

von Hmm (Gast)


Lesenswert?

Glückwunsch. Ist doch ein befriedigendes Gefühl, nicht wahr?

von Klaus (Gast)


Lesenswert?

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!"

von P. K. (pek)


Lesenswert?

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
Noch kein Account? Hier anmelden.