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