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;
Mal ne andere Frage: Warum willst du einen Integerwert in einen String umwandeln?
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 ?
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.