negation in der port map

Gast #1692976
Lesenswert?
• ▲
▼
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?
1
component GATES_AND
2
    generic(HL : time;
3
            LH : time);
4
    port(INPUT1 : in  std_logic;
5
         INPUT2 : in  std_logic;
6
         OUTPUT : out std_logic);
7
end component;
8

9
for all : GATES_AND use entity ORDNER.AND2 (BEHAVIORAL)
10
    generic map(1 ps, 1 ps)
11
    port map(INPUT1, INPUT2, OUTPUT);
12

13
AND1 : GATES_AND generic map(1 ps, 1 ps)         
14
                 port map (not CI, B, AND_TMP1);
Gast #1693740
Lesenswert?
• ▲
▼
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.
Gast #1693809
Lesenswert?
• ▲
▼
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
Gast #1693836
Lesenswert?
• ▲
▼
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
  port map(
3
    clk                => clk,
4
    reset              => reset,
5
    data_in            => std_logic_vector(data), -- geht in XST + Modelsim
6
    unsigned(data_out) => result                  -- geht nur in Modelsim
7
  );

Duke

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.