Hallo
Ich möchte in VHDL aus einer Integerzahl deren Logarithmus Dualis
berechnen. Ich habe ein Generic und möchte daraus die Bitbreite für die
Deklaration eines std_logic_vector ableiten. Weiß jemand wie das geht?
Über Antwort würde ich mich freuen. Bedanke mich schonmal.
Gruß Hans
@Hans
>Ich möchte in VHDL aus einer Integerzahl deren Logarithmus Dualis>berechnen. Ich habe ein Generic und möchte daraus die Bitbreite für die
Wenn es synthetisierbar sein soll, geht das nur über eie Tabelle/ROM.
MFG
Falk
Danke für die Antworten.
Habe es mit einer selber geschreibenen Funktion gelöst.
function ld(m:positive) return natural is
begin
for n in 0 to integer'high loop
if (2**n >= m) then
return n;
end if;
end loop;
end function ld;
Gruß Hans
Ja schon, aber man bekommt nur die Position des MSB und damit eine Art
Vorkommawert und nicht die Bruchstellen!
Bitsuchen ist trivial - aber wie löst man das Problem der
Nachkommastellen?
Angenommen, man nimmt den ld(X) = ln2(X) einer Binärzahl von 32 Bit. Mit
12 factional Bits läuft das auf sowas raus:
INT LD 4096*LD
65535 15,99998 65536
65500 15,99921 65533
30000 14,87267 60918
10000 13,28771 54426
1000 9,96578 40820
100 6,64386 27213
10 3,32193 13607
9 3,16993 12984
8 3,00000 12288
7 2,80735 11499
6 2,58496 10588
5 2,32193 9511
4 2,00000 8192
3 1,58496 6492
2 1,00000 4096
1 0,00000 0
lässt sich das irgendwie fortgesetzt iterativ lösen?
(ld würde ja reichen, andere lassen sich ja skalieren)