www.mikrocontroller.net

Forum: FPGA, VHDL & Co. locally static expression


Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VHDL ist doch sehr eigenartig. Folgendes ended in eine "Choice FOO is
not a locally static expression" Warning:
package pkg_la_register is

   subtype addr_t is unsigned(7 downto 0);
   subtype addr_base_t is unsigned(addr_t'range);

   constant EXT_TRIGGER_BASE : addr_base_t 
      := (7|6 => '1', others => '0');

   constant MSB_BASE   : natural := addr_base_t'high;
   constant LSB_BASE   : natural := 4;

   subtype addr_msb_t is unsigned(MSB_BASE-LSB_BASE downto 0);

   constant ADDR_EXT_TRIGGER_BASE : addr_msb_t 
      := EXT_TRIGGER_BASE(MSB_BASE downto LSB_BASE);
   ...
und
  case address(MSB_BASE downto LSB_BASE) is         
      when ADDR_EXT_TRIGGER_BASE => ... -- WARNING

Wie konstant bzw. variable kann denn eine Konstante denn sein, selbst
in einer package?? Lt. google gibt's tolle Begründungen und auch
Lösung wie: man schreibe doch gleich:
constant ADDR_EXT_TRIGGER_BASE : addr_msb_t := "01010...."

Na, dann kann ich mir die ganzen Identifier Kram eh sparen und sofort
los hacken ... Habe ich beim googeln etwas übersehen? andere Lösungen?
Ziel ist zumindest den oberen Teil des Address Busses vom unteren
abzuspalten und in einer verschachtelten case zu verarbeiten. Lt.
google ist die Lokalität mehr ein "Pünktchen" (selbst convert
funktions wie to_integer() in einer Zuweisung sind nicht mehr lokal).

Da es ja hoffentlich nach der Synthese auch noch Konstanten bleiben,
ist die Meldung eher nur nervig bei der Synthese. Modelsim hat dafür
einen eigenen switch.

Viele Grüße
Olaf

Autor: Sssssss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Genau mit sowas habe ich heute auch gekämpft...
Googeln hat mir auch nicht geholfen.
Ich hab mich jetzt entschlossen die Warnings zu ignorieren
da sowohl Schaltung als auch Simulation gut aussehen.
An einer Lösung wäre ich auch interessiert :D

Autor: antti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuch nicht ZU schlau zu sein, un benutze das wovon man weiss das es
geht. sonst gibts es arger umsonst.

die FPGA synthese tools, habe alle nur gewissen massen HDL support,
vieles was auch gehen sollte geht nicht oder falsch

Antti

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.