Forum: FPGA, VHDL & Co. vector nach integer


von christian (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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'

von Christian (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.