www.mikrocontroller.net

Forum: FPGA, VHDL & Co. While-Schleife und ein Signal


Autor: Andreas Sathle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe folgendes Problem:

Ich will in einer funktion integer in einen string umwandeln.
Allerdings bekomme ich den integer als signal rein. Bei der Synthese
kriege ich dann flogende Fehlermeldung:

"Error: VHDL Loop Statement error at Programm.vhd(69): WHILE iteration
scheme condition cannot contain signals"

Habe auch versucht den signal in eine temporäre Variable zu speichern
und dann an die Funktion zu übergeben. Gleiches Ergebniss.

Wie kann ich dieses Fehler beheben?

function str(int: integer) return string is

      variable text:      string(16 downto 1);
      variable temp:      integer;
      variable pos_int:   integer;
      variable len:       integer := 1;
      variable power:     integer := 1;

   begin
      text:=(others=>nul);
      -- umwandlung von negativen zahlen
      pos_int := abs(int);
      temp    := pos_int;
      -- integer länge prüfen
      while temp >= 10 loop    <--Diese Zeiel macht mir problemme

        len := len + 1;
        temp:= temp / 10;
      end loop ;
      -- umwandlung einzener zahlen in die charackter
      for i in len downto 1 loop
        text(i) := chr(pos_int/power mod 10);
        power := power * 10;
      end loop ;
      return text;
     end str;

BEGIN
    process(TIME_REF,TEST_BTN_REF)
      Variable test : integer;
    begin

    test:=TIME_REF;<-Übergabe von dem Wert aus dem Signal in die temp
Variable
    if TEST_BTN_REF'event and TEST_BTN_REF='1' then
      STRING_OUT<=(others=>nul);
      DEVICE_OUT<=0;
    else
      DEVICE_OUT<=1;
      STRING_OUT<=str(test);<--Hier wird die funktion aufgerufen
    end if;

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ne andere Frage: Warum willst du einen Integerwert in einen String
umwandeln?

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf den ersten Blick dacht ich du brauchst die funktion bei der
simulation. Dafür geht auch einfach das hier:

str = integer'image(0815)

Nachdem ich gesehen habe, dass du diesen Code anscheinend
synthetisieren willst, frage ich mich auch warum. Mal abgesehen davon,
dass ich den code da oben niemals einem Synthesetool in die hand geben
würde, gibt es überhaupt welche, die irgendwie funktionen
synthetisieren ?

Autor: Andreas Sathle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quartus II 4.2sp1 Web Edition Full<--ich benutze den da zum
synthetisieren...und es läuft alles einwandfrei.

ich werde gleich deinen Vorschlag mal ausprobieren. Wenns klappt dann
kann ich mir wirklich die funktion oben sparen.

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.