Forum: FPGA, VHDL & Co. VHDL Instanziierung eines entities.


von Manuel H. (redguy)


Lesenswert?

Hallo !

Hab zwei VHDL - compiler Fehlermeldungen in Quartus Prime, die ich nicht 
heraus bekomme.

Also die Erste ist bei der Instanziierung eines entities (via component) 
beim mapping der Parameter mit "port map":
1
ARCHITECTURE Behav OF RAM IS
2
3
COMPONENT BusBuffer128bitTristate1bitControl
4
  PORT(
5
    A: IN std_logic_vector(0 to 127);
6
    CTRL: IN std_logic;
7
    Q: OUT std_logic_vector(0 to 127)
8
    );
9
END COMPONENT;
10
11
BEGIN
12
13
BusDriverDATA: BusBuffer128bitTristate1bitControl port map (A_BusDriverDATA, CTRL_BusDriverDATA, Q_BusDriverDATA);
14
15
END Behav;

...gibt die Fehlermeldung
Error (10500): VHDL syntax error at RAM.VHDL(39) near text "port"; 
expecting "(", or "'", or "."
und
Error (10500): VHDL syntax error at RAM.VHDL(39) near text ";"; 
expecting ":=", or "<="



---
Mein zweites Problem ist: wie deklariert man die Mitglieder der 
assozierten Liste einer port map als shared ?

SHARED VARIABLE RAM_deltaCompactFPGApackage : RAM port map (RAM_ADRin, 
RAM_CTRLin, RAM_CLKin, RAM_DATA, RAM_CLKout);

also ich brauche die ganzen Signale in der port map als globale (shared) 
variablen/Signale.

folgende Fehlermeldungen kommen wieder:

Error (10500): VHDL syntax error at DeltaFPGAcompactPackage.VHDL(69) 
near text "port";  expecting ";", or ":="

,sowie

Error (10500): VHDL syntax error at DeltaFPGAcompactPackage.VHDL(69) 
near text ")";  expecting ":", or ","


---
So, wie in Beitrag "ENTITY und COMPONENT in VHDL" beschrieben, 
kommen auch Fehlermeldungen:

instance : entity work.your_component
 port map(
   -- your interface mapping!
 );


Gruss
Manuel Hofmann

: Bearbeitet durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Manuel H. schrieb:
> ...gibt die Fehlermeldung
> Error (10500): VHDL syntax error at RAM.VHDL(39)
Und wo ist die Zeile 39? Das gepostete Beispiel hat keine 39 Zeilen...

> ...gibt die Fehlermeldung
Falls das nicht der gesamte Code ist: poste doch mal etwas mehr Code 
drumrum (oder gleich alles als *.vhd Datei). Könnte ja auch ein 
Folgefehler sein...

> also ich brauche die ganzen Signale in der port map als globale (shared)
> variablen/Signale.
Die Software-Denkweise lässt grüßen. Vermutlich brauchst du das nicht, 
sondern du willst das nur.
Was willst du denn überhaupt machen? Warum instantitierst du das RAM 
nicht so, wie es im Synthesizer Users Guide gezeigt wird? Ist da diese 
"shared variables" Technik aufgeführt?

BTW: bitte VHDL Code mit den [vhdl] Tags einrahmen.

: Bearbeitet durch Moderator
von Bitwurschtler (Gast)


Lesenswert?

Versuch ein "is" vor "PORT" in der "COMPONENT"

von Manuel H. (redguy)


Lesenswert?

Hallo !

Zeile 39 ist die Zeile mit der port map.


Aber ich habe den Fehler entdeckt:

die Instanziierung stand innerhalb eines Prozesses (process) und das 
darf wohl nicht sein. Danke für den Tipp alles zu posten :-). Jetzt 
kompiliert das Ganze auch.

Bleibt die Frage mit den globalen Parametern...


Gruss
Manuel Hofmann

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Manuel H. schrieb:
> Bleibt die Frage mit den globalen Parametern...
(Wofür) brauchst du das? Nur für die Simulation? Oder willst du damit 
auf Hardware? Dann wie gesagt: Handbuch zum Synthesizer genau lesen und 
Portierbarkeit auf andere Zielsysteme abschminken...

von Manuel H. (redguy)


Lesenswert?

Hallo nochmals!

Also bevor ich jetzt hergehe und alle port map Parameter separat als 
shared variables deklariere (was kompiliert!), gibt es keine Möglichkeit 
die ganze Instanz des entities als global gültig zu deklarieren ?

Ich brauche das für Folgendes:
Innerhalb des nicht-top-level Bereichs der entities wird die gleiche 
Instanz eines entities, wie im top-level Bereich benötigt...

@Lothar Miller: Was genau ist das für ein Synthesizer Users Guide ?

Ich will damit hardware synthetisieren.

Gruss
Manuel Hofmann

von Martin S. (strubi)


Lesenswert?

Moin,

>
> Ich brauche das für Folgendes:
> Innerhalb des nicht-top-level Bereichs der entities wird die gleiche
> Instanz eines entities, wie im top-level Bereich benötigt...
>

Pfui. Das macht man NIE für die Synthese. Höchstens in der Simulation, 
wenn man global irgendwas schalten will (wie Global Reset emulieren). 
Zieh die Signale durch die Hierarchie durch.
'shared' habe ich bisher nur einmal gebraucht: User-definiertes RAM. 
Ansonsten siehts mit Use cases wohl eng aus..

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.