Hallo Allerseits.
Folgendee Funktion soll einen std_logic_vector nach
integer umrechnen:
----------------------------------------------------------------
function int_conv( VECT: std_logic_vector; SIZE: integer )
return integer is
variable RESULT: integer range ((2**size)-1) downto 0 ;
begin
RESULT := 0;
for i in 0 to (SIZE-1) loop
if( VECT(i) = '1' ) then
RESULT := RESULT + 2**i;
end if;
end loop;
return RESULT;
end int_conv;
----------------------------------------------------------------
Angenommen ich habe einen vektor"00001000" dann bekomme ich 6
statt 8:
00001000 -- vector
76543210 --i schleifenzähler
Dann rechne ich im 4. Schleifendurchgang : result:=0+2*3=6.
Irgendwie bringe ich hier was durcheinander.Die Funktion sollte
eigentlich funktionieren, da sie aus einer Bibliothek eines bekannten
FPGA Hersteller stammt.
Danke für die Unterstützung
Gruß
Christian
christian schrieb: > Dann rechne ich im 4. Schleifendurchgang : result:=0+2*3=6. Im Progamm steh aber nicht 2 * 3 da steht 2 ** i und in der verwendeten Programmiersprache ist ** offenbar 'hoch'
Upps. Habe das 2.* nicht gesehen, obwohl ich schon minutenlang den Code anschaue. Danke
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.