Hi,
ich erhalte beim kompilieren folgende Fehlermeldung die sich auf eine
Negation (CI in der Instanz AND1) in einer port map bezieht:
"Actual (prefix expression) for formal "input1" is not a globally static
expression."
Kann mal kurz einer erklären wo genau das Problem liegt?
> Kann mal kurz einer erklären wo genau das Problem liegt?
Das sagt die Meldung. Such mal hier im Forum nach dem Begriff "globally
static" und "locally static"...
Der Workaround: nimm ein Signal und weise dem den invertierten Wert zu,
und übergib dann dieses Signal in der Portliste.
Hi,
Die negation der Signale vor der Zuweisung in der Port Map hatte ich
bereits verwendet, wollte es nur gerne kompakter haben, daher die Frage
nach der Interpretation der Fehlermeldung.
> daher die Frage nach der Interpretation der Fehlermeldung.
Dort ist es ein wenig ausführlicher erklärt:
http://www.vhdl.org/comp.lang.vhdl/FAQ1.html#static> wollte es nur gerne kompakter haben,VHDL ist eine geschwätzige Sprache.
Danke soweit,
> Dort ist es ein wenig ausführlicher erklärt:>http://www.vhdl.org/comp.lang.vhdl/FAQ1.html#static
Dort wurden globally und locally static expressions eigentlich gut
erklärt, jedoch begreif ich nicht wirklich warum die Auswertung von "not
CI" in der Port Map nicht als globally static gesehen wird.
Laut Definition:
"globally static expression: An expression that can be evaluated as soon
as the design hierarchy in which it appears is elaborated."
Letztendlich kann die evaluation des Ausdrucks "not CI" doch
durchgeführt werden wenn das gesamte Desing in dem sich CI befindet vom
Compiler bearbeitet wurde.
>Das sollte gehen:>port map ("not" (CI), B, AND_TMP1);
Das geht in der Tat, jedoch wüsste ich auch gerne was der Grund für
dieses Konstrukt ist bzw. warum es funktioniert.
Eine Lösung hatte ich allerdings bereits, sprich Signale in der
architecture angelegt und vor Nutzung in der Port Map negiert.
Konvertierungen in "Port Maps" sind erlaubt, müssen jedoch als
Funktionsaufrufe implementiert sein.
Laut dem IEEE-VHDL-LRM müssen diese Konvertierungsfunktionen "globally
static" sein, folgende Eigenschaften müssen vorhanden sein:
"A function call whose function name denotes a pure function and whose
actual parameters are each globally static expressions"
Gruß,
SuperWilly
SuperWilly schrieb:> Konvertierungen in "Port Maps" sind erlaubt, müssen jedoch als> Funktionsaufrufe implementiert sein
Sowas wird leider von den Tools auch unterschiedlich betrachtet :-/
1
module_inst:modul
2
portmap(
3
clk=>clk,
4
reset=>reset,
5
data_in=>std_logic_vector(data),-- geht in XST + Modelsim