Forum: FPGA, VHDL & Co. Bitbreite eines generic Integers


von Guido Suedholt (Gast)


Lesenswert?

Hallo!

Ich moechte einen generischen Taktvorteiler entwerfen:

entity ClockDivider is
  generic
  (
    ClockDivisor : positive
  );
  port
  (
    ClockInput : in std_logic;
    ClockOutput : out std_logic
  );
end ClockDivider;

Abhaengig vom Wert des generics ClockDivisor
brauche ich einen mehr oder weniger breiten
Zaehler (std_logic_vector) zur Realisierung
des Taktvorteilers. Soll durch 1000 geteilt
werden, muss er 10 Bit breit sein, soll durch
100 geteilt werden, genuegen 7 Bit.

Wie ermittle ich zur Compile-Zeit die Breite
dieses Zaehlers?

Danke und bis bald.
  Guido

von T.M. (Gast)


Lesenswert?

Wenn du das math_real Package einbindest, kannst du die Funktion für den
2-er Logarithmus verwenden. Damit kannst du aus einer Zahl die dafür
nötige Anzahl bits ausrechnen, bei krummen Zahlen müsstest du dann aber
aufrunden. Oder solche Zahlen einfach auschliessen.

so oder ähnlich:
1
signal counter : std_logic_vector(integer(log2(real(ClockDivisor)))-1
2
downto 0);

T.M.

von Guido Suedholt (Gast)


Lesenswert?

Hallo T.M.!

Vielen Dank fuer deine Hilfe, genau das brauchte ich!

Bis bald.
  Guido

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.