Gast
#203504
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;