mikrocontroller.net

Forum: FPGA, VHDL & Co. string in VHDL mit Werten belegen


Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde gerne einen String mit Werten 'a' bis 'z' belegen aber ich 
habe Null Ahnung wie man das macht. Mein Versuch sieht so aus:
signal str  : string(0 to 25);
  
begin
  process begin
    for i in 0 to 25 loop
      str(i) <= 'a' + i;
    end loop;
  end process;


Der ispLever sagt aber, dass der den Operator + nicht kennt.

Wie mache ich so etwas denn richtig? Könnte mir bitte jemand helfen!

Vielen Dank!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noips schrieb:
> Der ispLever sagt aber, dass der den Operator + nicht kennt.
Du kannst nicht einfach zwei verschiedene Datentypen aufeinander 
addieren...

> Wie mache ich so etwas denn richtig? Könnte mir bitte jemand helfen!
Als Denkanstoss die attribute 'val und 'pos:
str(i) <= character'val(character'pos('a') + i);

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Denkanstoss!

Ich würde das gleiche jetzt gerne mit einem Array von Vektoren, statt 
mit einem String machen. Habe unterschiedliches ausprobiert aber zu 
keinem Ergebnis gekommen.
Ich hätte es gerne so wie unten, aber da gibt es auch Probleme mit dem + 
Operator. Ist so etwas überhaupt irgendwie möglich?
type uchar_arr is array (0 to 255) of std_logic_vector(7 downto 0);
signal str : uchar_arr;
  
begin
  process begin
    for i in 0 to 255 loop
      str(i) <= "00000000" + i;
    end loop;
  end process;


Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm die numeric_std Lib und dann schreibst du:
str(i) <= std_logic_vector(to_unsigned(i,8));

http://www.lothar-miller.de/s9y/archives/14-Numeric_Std.html

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.