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.