Forum: FPGA, VHDL & Co. Mehrfach unconstrained Arrays in VHDL möglich?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian W. (clupus)


Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich habe hier einen VHDL Block, der mir einen PWM-Counter realisieren 
soll. Bisher habe ich in einem separaten Package definiert:
CONSTANT PWM_SIZE : positive := 3;
SUBTYPE PWM_COUNTER_VALUE IS unsigned(PWM_SIZE - 1 DOWNTO 0); -- Typ für den Zähler

CONSTANT NUM_PWM_CHANNELS : positive := 8;
TYPE PWM_DC_VALUES IS ARRAY (NUM_PWM_CHANNELS - 1 DOWNTO 0) OF PWM_COUNTER_VALUE; -- Typ für die Vergelichswerte

Ich brauche jetzt aber zwei Blöcke mit unterschiedlichen Werten für 
Breite der Zähler und Anzahl Kanäle.

Meine Idee war die Verwendung von GENERICs. Dazu muss ich die Typen ja 
als unconstrained arrays definieren.
Wie kann ich die Struktur PWM_DC_VALUES abbilden? Wenn ich schreibe
TYPE PWM_DC_VALUES IS ARRAY (positive range <>) OF unsigned (positive range <>);
bekomme ich einen Compiler-Fehler. Gleiches bei
TYPE PWM_DC_VALUES IS ARRAY (positive range <>) OF unsigned;

Wie kann ich nun diese Datenstruktur abbilden? Das einzige was ich mir 
vorstellen könnte, wäre eine Wandlung (manuell) zu
std_logic_vector(positive range <>, integer range <>)
oder eben verschiedne PWM-Blöcke verwenden (ungünstig wegen der 
Wartung).

Irgendwelche anderen Lösungsvorschläge, wie ich das generisch 
hinbekommen kann?

Christian

von Duke Scarring (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christian Wolf schrieb:
> bekomme ich einen Compiler-Fehler.
Kannst Du den konkreten Fehler hier posten?

Duke

von Christian W. (clupus)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für
TYPE TEST_TYPE IS ARRAY (positive range <>) OF unsigned (positive range <>);
 bekomme ich
** Error: Y:/User/S-Wolfc/SA/Quartus/FPGA/Version_1/SMZ_Generics.vhd(22): near "<>": syntax error
.
Für
TYPE TEST_TYPE IS ARRAY (positive range <>) OF unsigned;
 bekomme ich
** Error: Y:/User/S-Wolfc/SA/Quartus/FPGA/Version_1/SMZ_Generics.vhd(22): Array element type can not be unconstrained array type ieee.numeric_std.unsigned.
.

Jeweils mit ModelSim übersetzt (für Simulation). Quartur II habe ich 
noch nicht ausprobiert.

Christian

von Christian W. (clupus)


Bewertung
0 lesenswert
nicht lesenswert
Quartur II sagt
Error (10294): VHDL Type Declaration error at SMZ_Generics.vhd(22): element type for array type cannot be unconstrained

Christian

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Christian Wolf schrieb:
> Quartur
Ist damit Quartu-s- von Altera gemeint?

von Christian W. (clupus)


Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Christian Wolf schrieb:
>> Quartur
> Ist damit Quartu-s- von Altera gemeint?

Äähm, ja. Sorry. Tippfehler.

Christian

von Andreas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der Post ist zwar schon etwas älter, aber ich habe genau das gleiche 
Problem.
Hat wer einen Prototypen für ein zwei dimensional unconstraintes array?

Viele Grüße,
Andreas

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert

von Andreas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Irgendwie so?

Wenn ich das richtig sehe ist das eine constrainte variante, so etwas 
habe ich schon am laufen:
type tMyArr is array(0 to 1, 0 to 1) of string(1 to 3);

constant myArr : tMyArr = ( ("abc", "def"), ("ghi", "jkl") )

Ich hätte nun gerne das array und Begrenzung, damit ich die Grenzen beim 
definieren der Konstante festlegen kann.

von Christoph Z. (christophz)


Bewertung
0 lesenswert
nicht lesenswert
Andreas schrieb:
> Hat wer einen Prototypen für ein zwei dimensional unconstraintes array?

Das was original gefragt wurde, geht mit VHDL2008:
https://www.doulos.com/knowhow/vhdl/vhdl-2008-small-changes/#composite

Je nach Synthesizer/Simulationstool musst du VHDL2008 Support extra 
einschalten. Teilweise können das Tools bis heute nicht (also 2015 
konnte der Lattice Logic Analyser das z. B. nicht. Alle anderen Tools in 
Lattice Diamond schon).

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.