www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Größe v. Array erst bei Übergabe an procedure angeben


Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich habe ein Problem was das Übergeben eines Arrays an eine procedure, 
die sich in einem Package (nicht synthesefähig) befindet, betrifft.
Folgender Code funktioniert nicht:
  procedure busBlockRead (
      constant len      : in  natural;
    constant data     : out array of (0 to len - 1) of std_ulogic_vector(cDataWidth - 1 downto 0) is
  begin
...

VHDl erwartet ja das das Array vorher als typ definiert wird, also:
type aDataArray is array (0 to ??? - 1) of std_ulogic_vector(cDataWidth - 1 downto 0);

und
  procedure busBlockRead (
      constant len      : in  natural;
    constant data     : out aDataArray)  is
  begin
...

Dies funktioniert, nur erlaubt mir dieser Ansatz keine dynamische Angabe 
der Arraygröße.

Gibt es eine schöne Möglichkeit dieses Dilemma zu umegehen?

Viele Danke!

lg,
Otto

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kannst Du machen, indem Du als Array-Größe "natural range <>" 
angibst.
Wenn Du es dann instanziierst, gibst Du die Größe an.
type aDataArray is array (natural range <>) of std_ulogic_vector(cDataWidth - 1 downto 0);

variable one_array: aDataArray(0 to 63);

Wenn es nicht synthetiserbar sein muss, brauchst Du garnicht die Länge 
des Arrays zu übergeben. Das kannst Du über die entsprechenden Attribute 
herausfinden.
one_array'length

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei length fehlt noch die Dimension :(

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Danke Mathi!

.. genau nach der Lösung habe ich vergeblich gesucht ;)

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.