Bitbreite eines generic Integers

Gast #418261
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
Gast #418262
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren