Forum: FPGA, VHDL & Co. locally static expression


von ope (Gast)


Lesenswert?

VHDL ist doch sehr eigenartig. Folgendes ended in eine "Choice FOO is
not a locally static expression" Warning:
1
package pkg_la_register is
2
3
   subtype addr_t is unsigned(7 downto 0);
4
   subtype addr_base_t is unsigned(addr_t'range);
5
6
   constant EXT_TRIGGER_BASE : addr_base_t 
7
      := (7|6 => '1', others => '0');
8
9
   constant MSB_BASE   : natural := addr_base_t'high;
10
   constant LSB_BASE   : natural := 4;
11
12
   subtype addr_msb_t is unsigned(MSB_BASE-LSB_BASE downto 0);
13
14
   constant ADDR_EXT_TRIGGER_BASE : addr_msb_t 
15
      := EXT_TRIGGER_BASE(MSB_BASE downto LSB_BASE);
16
   ...
und
1
  case address(MSB_BASE downto LSB_BASE) is         
2
      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:
1
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

von Sssssss (Gast)


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

von antti (Gast)


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

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.