www.mikrocontroller.net

Forum: FPGA, VHDL & Co. must be a globally static expression


Autor: Hans-Werner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Folgendes Problem:
Es werden zwei generische Paramter definiert.

generic
  (
    address_width_quicksort   : integer := 8;
    data_width_quicksort   : integer := 8
  );

Aus einem der beiden Parameter wird die Grösse des Stacks berechnet.

constant stack_size : positive := (address_width_quicksort+3) * 2;

Es werden ausserdem vier Subtypen deklariert.

----------------------------> This are the internal data types
  subtype data_type_ram is std_logic_vector (data_width_quicksort - 1 
downto 0);
  subtype address_type_ram is std_logic_vector(address_width_quicksort - 
1 downto 0);
  subtype data_type_stack is std_logic_vector (data_width_quicksort - 1 
downto 0);
  subtype address_type_stack is std_logic_vector (stack_size - 1 downto 
0);

Es werden anschliessend zwei Signale definiert, die in der folgenden 
Generate-Anweisung verwendet werden.

  signal data_width_stack : integer := data_width_quicksort;
  signal address_width_stack : integer := 8;

generate_stack : if true
  generate
    generate_the_stack:
      ram generic map (address_width_ram  => address_width_stack,
                  data_width_ram     => data_width_stack)
         port map (
                --------------- Inputs
                clock_read_ram    => clock_quicksort,
                clock_write_ram    => clock_quicksort,
                data_in_ram       => data_in_stack_internal,
                write_enable_ram    => write_enable_stack_internal,
                write_address_ram   => write_address_stack_internal,
                read_enable_ram    => read_enable_stack_internal,
                read_address_ram    => read_address_stack_internal,
                --------------- Outputs
                data_out_ram      => data_out_stack_internal
              );
  end generate generate_stack;

Bei Aufruf der Generate-Anweisung knallt es mit folgender Fehlermeldung.

ERROR:HDLParsers:3305 - "D:/EDA Design/Xilinx ISE
   Projekte/Quicksort/Quicksort.vhd" Line 205.  The actual value (Signal
   'address_width_stack') associated with a generic must be a globally 
static
   expression.
ERROR:HDLParsers:3305 - "D:/EDA Design/Xilinx ISE
   Projekte/Quicksort/Quicksort.vhd" Line 206.  The actual value (Signal
   'data_width_stack') associated with a generic must be a globally 
static
   expression.

Was ist die Ursache und wie kann ich diese vermeiden ?
Die gesamte Datei findet sich im Anhang.
Das Programm ist noch unvollständig.

Danke für jede Hilfe

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ändere
  signal data_width_stack : integer := data_width_quicksort

in
  constant data_width_stack : integer := data_width_quicksort

dann sollte es gehen...

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
natürlich analoges Vorgehen für "address_width_stack"

Hintergrund: generics müssen zur synthesezeit konstant sein - also
KEIN signal

Beitrag #3276427 wurde von einem Moderator gelöscht.

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.